Mert
Gaziantep'te Tarım, Tarım Teknolojileri ve Hayvancılık Fuarı düzenlenecek
Türkiye Espor Federasyonu, Esports Nations Cup resmi milli takım ortağı oldu
Yarı iletken çip tasarımı alanında çalışan Normal, 50 milyon dolar yatırım aldı
Bulbi, NEO Ventures’tan 500 bin dolar yatırım aldı
2025’in en iyi mobil işlemcileri açıklandı: MediaTek zirvede, Apple ve Snapdragon kıyasıya yarışta
Performans değerlendirme kuruluşu NanoReview, 2025 yılı için iOS ve Android platformlarındaki amiral gemisi işlemcilerin güncel verilerini paylaştı ve zirve el değiştirdi.5G Türkiye’de aktif edilmeye başladı! İşte 5G’yi açmanın yolları
Türkiye, 1 Nisan tarihinde 5G teknolojisine geçiş yapacak. Peki iOS ve Android’te 5G nasıl açılır? İşte Vodafone, Türk Telekom ve Turkcell 5G açma ayarları:Bakan Yardımcısı Ömer Fatih Sayan: Starlink ve Amazon Leo ile görüşülüyor
Ulaştırma ve Altyapı Bakan Yardımcısı Ömer Fatih Sayan, yaptığı açıklamada SpaceX’in Starlink’i ve Amazon’un Kuiper’ı ile görüşüldüğünü açıkladı. Regülasyon süreci ise devam ediyor.Stop Paying for Cloud: Deploy a Highly Available Cluster on Your Own Hardware in Minutes
A 4-node highly available cluster with distributed storage, software-defined networking, and automatic failover. About 30 minutes to deploy. No Terraform. No Ansible playbooks. No 47-page architecture doc.
That’s Canonical’s MicroCloud: lightweight, repeatable cluster deployments built for edge computing and distributed workloads. Here’s the full walkthrough.
TL;DR: Install 4 snaps, run
microcloud initon one node,microcloud joinon the others, answer the storage/networking wizard, and you have a production-ready HA cluster. Full walkthrough below.
1. What Hardware Do You Actually Need?
Before touching the command line, you need the right hardware for your target environment. MicroCloud is flexible enough to support both lightweight test setups and production clusters.
Test/Development Environments
MicroCloud is lightweight enough that a test setup can start with a single-member deployment. You need as little as 8 GB of RAM per machine, and local storage is often sufficient.
Highly Available Production Environments
For production, redundancy is key. A highly available setup requires at least four physical nodes. Each machine should ideally feature 32 GB of RAM and 10 GB network cards to handle throughput.
Storage Allocation
Within each production node, you should allocate three separate NVMe disks: one for the operating system, one for local storage, and one for distributed storage (via Ceph).
Why four nodes? Separating disk types and maintaining a four-node count provides critical redundancy. If one node goes offline, the extra member ensures the cluster maintains a quorum, preventing a “split-brain” scenario where remaining nodes lose synchronization. Your applications stay reachable and highly available.
2. Install Everything in One Command
The foundation of your MicroCloud cluster is a clean, standardized operating system. Every server you intend to use must be provisioned with an Ubuntu Long-Term Support (LTS) release.
Once your servers are online, install the core services across every node. Canonical packages these components as containerized “snaps”:
sudo snap install microcloud lxd microceph microovn
Installing these services as snaps keeps your host operating system clean. All dependencies are bundled directly within the snap container, so you completely avoid package version conflicts.
3. The Cluster Handshake (Zero Manual SSL)
With the software installed, it’s time to establish the cluster using an automated handshake process.
Step 1: Initialize the Primary Node
Choose one machine to act as your initiator. SSH into this node and run:
sudo microcloud init
When the wizard asks if you want to set up more than one cluster member, select “yes”.
Step 2: Select Internal IPs
A table of available network interfaces will appear. Choose the specific IP address you want to use for MicroCloud’s internal cluster communication.
Step 3: Generate the Passphrase
The initiator terminal will generate a secure passphrase and enter a waiting state. Leave this session running.
Step 4: Join the Secondary Nodes
Open new SSH sessions into your remaining nodes and run:
sudo microcloud join
Select the corresponding internal IP address on each node, enter the passphrase generated by the primary node, and verify that the unique fingerprint matches.
This automates trust distribution between your nodes. No manual SSL certificate management. No private key distribution. Return to your initiator terminal, select all the secondary systems that reached out, and accept them into the cluster.
4. Storage: Local Speed + Distributed Safety
MicroCloud lets you pair the high-speed performance of local hardware with the resilience of a distributed cluster. The setup wizard guides you through configuring both.
Local Storage
When prompted to set up local storage pools, select exactly one designated disk from each machine.
Warning: Any disk you select for storage pools must be completely unpartitioned and free of any existing file systems. If you select a pre-formatted disk, the initialization will fail, and you’ll need to manually wipe the drives and restart the process.
Distributed Storage
Next, the wizard moves to distributed storage, handled by MicroCeph. You must select at least three unpartitioned disks across the cluster, as Ceph requires a minimum of three to properly replicate data for high availability. You will also be given options to wipe existing data, set up a CephFS distributed file system, or enable disk-level encryption.
This dual-storage strategy lets you run intensive edge workloads on fast local caching while ensuring your primary databases remain safely replicated across the distributed cluster.
5. Networking Without the Networking Pain
With compute and storage locked in, the wizard moves to network configuration, handled by MicroOVN. This software-defined network allows your virtual machines to communicate across the cluster.
External Uplink
The menu will display your physical network interfaces. Select one interface per machine to act as the external uplink. This uplink network must support both broadcast and multicast traffic for distributed networking to function correctly.
Gateways and IP Ranges
You will need to provide the IPv4 (and optionally IPv6) gateway for the uplink network using CIDR notation (e.g., 192.0.2.1/24). Then define a specific block of IPv4 addresses on your network reserved exclusively for your LXD instances.
Tip: MicroCloud uses mDNS (multicast DNS) to automatically discover the initiator node during setup. Some restrictive cloud environments block this traffic. If your secondary nodes can’t find the initiator, manually input the initiator’s static IP address to bypass the discovery phase and force the handshake.
6. Hit Enter, Get a Cloud
Once you answer the final prompts, MicroCloud takes over. It begins the automated bootstrap process, configuring and launching all requested services across every member of the cluster.
This turns what used to be a complex infrastructure deployment into a simple, repeatable process. Monitor the terminal output; when you see the final message stating “MicroCloud is ready,” your multi-node cluster is live, synchronized, and operational.
You can manage everything via the command line, or enable the Canonical LXD graphical user interface for centralized visual control over your instances, networks, and storage pools.
Your cluster is live. From here you can launch containers, spin up VMs, or start deploying workloads to the edge. All on your own hardware, under your own control, at a fraction of what you’d pay a cloud provider.
Anyone running MicroCloud in production? What’s your node count and what are you running on it?
I Got Tired of Cold Outreach. So I Made Claude Do It.
I Built an MCP That Turns Claude Into a Cold Outreach Machine — and It Actually Works
Submitted for the Notion MCP Challenge 2026
Let me be honest with you.
Cold outreach is broken.
Not because the idea is bad — cold emails work. People get hired, land clients, and build relationships through cold outreach every single day. It’s broken because of how long it actually takes to do it right.
Think about it. To send one good cold email, you have to:
- Find a company that’s actually a fit for your skills
- Go to their website and actually read it
- Figure out what they’re working on, what problems they might have
- Find a contact email somewhere on the site
- Write something that doesn’t sound like everyone else’s template
- Send it
- Log it somewhere so you don’t forget who you’ve reached out to
That’s 20–40 minutes. Per company.
If you do 10 companies — which is barely enough to move the needle — you’ve just burned a full workday on outreach alone.
So most people don’t do it. Or they send lazy, generic emails that get deleted in two seconds. Both outcomes are bad.
I got tired of it. So I built something.
Demo
What I Built: Cold Outreach MCP
Cold Outreach MCP is a custom MCP server that turns Claude into a fully automated cold email agent. You paste your CV once. Claude does everything else.
Here’s the exact flow:
You: "Here is my CV. Find 10 companies that match my background,
research each one, and show me your recommendations."
Claude: [researches 10 companies]
1. stripe.com → opportunity_pitch
"Their checkout onboarding has friction — matches your UX background"
2. linear.app → role_inquiry
"Fast-growing team, strong eng culture, no obvious gap spotted"
... 8 more
You: "Looks good. Send as recommended."
Claude: [generates 10 tailored emails, sends them, logs everything to Notion]
That’s it. What used to take a full day now takes 3 minutes.
The Part That Actually Makes It Different
Most “automation” tools skip the part that matters most — the email itself.
They send templated garbage like:
“Hi [First Name], I came across [Company] and I was really impressed by your work in [Industry]. I think my background in [Skill] could add value to your team…”
Nobody replies to that. Everybody knows it’s a template. It goes straight to the bin.
Cold Outreach MCP does something different. Before generating the email, Claude actually reads the company’s website, identifies specific things about their product or team, and writes something that references what it found:
“Saw you’re building a design system at scale — I’ve done exactly this at [Company] and ran into the same versioning problems you’re probably hitting. Worth a quick chat?”
That’s an email someone opens. That’s an email someone replies to.
And the tone rules are hard-coded into the prompts:
- Under 120 words
- No buzzwords (“synergy”, “leverage”, “circle back” — all banned)
- Short sentences. Casual but not sloppy.
- One specific observation from their site
- One clear ask at the end
It sounds like a person wrote it. Because an extremely good AI was told to write like a person.
Where Notion Fits In
Every outreach — sent, failed, or pending — gets logged to a Notion database automatically.
The schema looks like this:
| Company | Website | Type | Status | Date Sent | Notes | |
|---|---|---|---|---|---|---|
| Stripe | stripe.com | [email protected] | opportunity_pitch | sent | 2026-03-26 | full email body |
| Linear | linear.app | [email protected] | role_inquiry | sent | 2026-03-26 | full email body |
No manual logging. No “I think I emailed them last week?”. No spreadsheet.
And the Notion integration is set up like a proper database migration — you create an empty database on Notion, paste its ID in your config, run setup_notion_db once, and all the columns are provisioned automatically. It’s exactly how backend migrations work.
The 10 Tools Under the Hood
| Tool | What it does |
|---|---|
setup_notion_db |
Migrates your Notion database — adds all required columns |
parse_profile |
Extracts structured profile from your CV text |
discover_companies |
Finds real companies that match your skills using Claude |
find_company_email |
Scrapes a company site to find a contact email |
research_company |
Analyzes a company — summary, pain points, recommended email type |
generate_email |
Writes a human-sounding outreach email |
send_email |
Sends via SMTP (Gmail, Outlook, anything) |
log_to_notion |
Logs a record to your Notion tracker |
retry_failed |
Re-attempts any failed sends automatically |
bulk_outreach |
Full pipeline for up to 15 companies at once |
It’s Human-in-the-Loop by Design
This is important. The tool doesn’t just fire off emails without asking you.
bulk_outreach runs in two phases:
Phase 1 — Claude researches all companies and returns its recommendations. You see everything before a single email is sent.
Phase 2 — You confirm (or override) each recommendation. Then and only then does Claude generate and send.
You’re always in control. The AI is doing the tedious work, not making the decisions for you.
There’s also a hard limit of 15 companies per run — enough to be productive, not enough to accidentally spam half the internet if something goes wrong.
Tech Stack
-
MCP SDK —
@modelcontextprotocol/sdk(official Anthropic SDK) -
AI — Claude via
@anthropic-ai/sdkwith adaptive thinking for research and email generation -
Scraping —
axios+cheeriofor website analysis and email extraction -
Email —
nodemailerwith lazy SMTP validation (server doesn’t crash if SMTP isn’t configured yet) -
Notion — raw Notion REST API (
fetchdirectly tohttps://api.notion.com/v1/...) for reliability - Language — TypeScript, Node.js 18+, ES modules
What the Setup Looks Like
git clone https://github.com/thecodedaniel/cold-outreach-mcp
cd cold-outreach-mcp
npm install && npm run build
Fill in your .env:
ANTHROPIC_API_KEY=sk-ant-...
NOTION_API_KEY=ntn_...
NOTION_DATABASE_ID=your_database_id
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
[email protected]
SMTP_PASS=your_app_password
[email protected]
SENDER_NAME=Your Name
Add to Claude Desktop config. Restart. Done.
The full setup takes about 10 minutes if you already have the API keys.
The One Thing I’m Most Proud Of
It’s not the scraping. It’s not the Notion integration. It’s not even the email generation.
It’s the fact that you don’t have to know which companies to target.
Every other tool in this space assumes you already know who you want to reach out to. You still have to do the research, compile the list, find the websites.
This one starts from your CV and figures out the rest. You describe what you do. Claude figures out who needs someone like you.
That’s the part that changes things.
What’s Next
- Web search integration for real-time company discovery (Brave Search API)
- Follow-up email scheduling (“no response in 7 days → send a nudge”)
- Notion status tracking — mark a reply directly in Notion, trigger a follow-up draft
- LinkedIn integration for finding decision-maker contacts
Links
- GitHub: github.com/TheCodeDaniel/reachout_mcp
- Demo: youtu.be/x7UvlIxKoPI
Built for the Notion MCP Challenge 2026 by Daniel Ainoko (THECODEDANIEL)
If you’re a developer actively job hunting or trying to land clients — this is for you. The grind is real. Automate the boring parts.