<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Miki Makhlevich</title>
    <description>The latest articles on Forem by Miki Makhlevich (@makhlevich).</description>
    <link>https://forem.com/makhlevich</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2981451%2Fe1753415-64a1-4a33-a65d-131de17e756c.jpg</url>
      <title>Forem: Miki Makhlevich</title>
      <link>https://forem.com/makhlevich</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/makhlevich"/>
    <language>en</language>
    <item>
      <title>We built a runtime for background AI agents</title>
      <dc:creator>Miki Makhlevich</dc:creator>
      <pubDate>Fri, 19 Dec 2025 07:22:38 +0000</pubDate>
      <link>https://forem.com/makhlevich/we-built-a-runtime-for-background-ai-agents-55d3</link>
      <guid>https://forem.com/makhlevich/we-built-a-runtime-for-background-ai-agents-55d3</guid>
      <description>&lt;p&gt;Most LLM frameworks help you talk to agents, but the most useful agents should be treated like services.&lt;/p&gt;

&lt;p&gt;They run in the background.&lt;br&gt;
They wake up on a schedule.&lt;br&gt;
They react to webhooks.&lt;br&gt;
They shouldn't wait for a human to manually trigger them.&lt;/p&gt;

&lt;p&gt;That gap is why we built langchain-runner, a small runtime for deploying always-on, trigger-driven AI agents using LangChain or LangGraph.&lt;/p&gt;

&lt;p&gt;The mental model is simple:&lt;br&gt;
langchain-runner is a daemon for AI agents. You give it an agent, define what wakes it up, and it handles execution and tracking.&lt;/p&gt;

&lt;p&gt;Here’s what that looks like in practice:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;langchain_runner&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Runner&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;my_agent&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;agent&lt;/span&gt;

&lt;span class="n"&gt;runner&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Runner&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nd"&gt;@runner.cron&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;0 9 * * *&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;daily_review&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Review yesterday&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;s activity&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="n"&gt;runner&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;serve&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That’s it.&lt;/p&gt;

&lt;p&gt;You now have an agent that wakes up every morning and runs in the background. No chat UI, blocking requests or FastAPI glue.&lt;/p&gt;

&lt;p&gt;Using webhooks as triggers is just as easy&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nd"&gt;@runner.webhook&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/github&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;on_github_event&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Handle GitHub event: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;action&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This creates a webhook endpoint at &lt;code&gt;/webhook/github&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;What makes this different from existing tools is the focus on activation, not interaction.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;LangServe is great when you want an API.&lt;/li&gt;
&lt;li&gt;LangGraph is great when you want structured workflows.&lt;/li&gt;
&lt;li&gt;Celery and Airflow are great when you want heavy orchestration.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;langchain-runner is for the middle ground: small, autonomous agents that wake up because something happened.&lt;/p&gt;

&lt;p&gt;Stop treating every agent like a chatbot.&lt;br&gt;
&lt;code&gt;pip install langchain-runner&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;👉 GitHub: &lt;a href="https://github.com/tadata-org/langchain-runner" rel="noopener noreferrer"&gt;https://github.com/tadata-org/langchain-runner&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;👉 PyPI: &lt;a href="https://pypi.org/project/langchain-runner/" rel="noopener noreferrer"&gt;https://pypi.org/project/langchain-runner/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>python</category>
      <category>langchain</category>
    </item>
    <item>
      <title>🚀 What We Learned Building FastAPI-MCP</title>
      <dc:creator>Miki Makhlevich</dc:creator>
      <pubDate>Thu, 05 Jun 2025 17:37:42 +0000</pubDate>
      <link>https://forem.com/makhlevich/what-we-learned-building-fastapi-mcp-50e0</link>
      <guid>https://forem.com/makhlevich/what-we-learned-building-fastapi-mcp-50e0</guid>
      <description>&lt;p&gt;A few months ago, we released &lt;a href="https://github.com/tadata-org/fastapi_mcp" rel="noopener noreferrer"&gt;&lt;strong&gt;FastAPI-MCP&lt;/strong&gt;&lt;/a&gt;, an open-source library that converts FastAPI apps into MCP servers with zero configuration. We focused on making it easy and intuitive and the response was incredible - developers loved how easy it made MCP integration.&lt;/p&gt;

&lt;p&gt;But with usage we started noticing developers had different issues than we originally thought.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem We Didn't See Coming
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Can you help with authentication setup?"&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;"Can this MCP scale?"&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;"How do I deploy it to a separate instance?"&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;"How do I know if my tools are actually working well?"&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;"How can I tell how my MCP is being used?"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;FastAPI-MCP solved the direct conversion problem beautifully. But production? That's where users had to work.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's The Delta To Production MCP
&lt;/h2&gt;

&lt;p&gt;Here's what we learned:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Hosting headaches&lt;/strong&gt;: Where do you even deploy an MCP server? we made it easy to be deployed along side your API but managing two different beasts on the same infra might not be easy.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Authentication&lt;/strong&gt;: Bearer tokens are easy, but OAuth takes a lot of set up from devs, even when the package supports it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Zero observability&lt;/strong&gt;: Are agents actually using all the tools? Is your tool description or parameters confusing the LLM? You'll never know&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Scaling issues&lt;/strong&gt;: What happens when 100 AI assistants hit your server?&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  API to MCP Conversion Isn't That Easy
&lt;/h2&gt;

&lt;p&gt;Beyond the technical deployment challenges, we discovered deeper issues:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tool Selection&lt;/strong&gt;: Developers had APIs with 200+ endpoints but no idea which ones would actually be useful for AI assistants. Should they expose everything? Just the core features? How do you decide? Should we add composite tools to make life easier for the LLMs?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description Quality&lt;/strong&gt;: This was &lt;strong&gt;huge&lt;/strong&gt;. Developers would write API documentation for humans, but AI assistants need different context. Tool descriptions that made perfect sense to developers completely confused LLMs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Connection Complexity&lt;/strong&gt;: How do customers actually connect to their MCP servers? While FastAPI-MCP creates SSE servers, helping customers integrate with tools like MCP-remote or custom clients was often more complex than building the server itself.&lt;/p&gt;

&lt;p&gt;We felt like we're repeating the known pattern &lt;em&gt;"easy to demo, hard to get to production"&lt;/em&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Platform We Wish We Had
&lt;/h2&gt;

&lt;p&gt;Instead of just documenting "how to deploy FastAPI-MCP" we built the infrastructure we wish existed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.tadata.com" rel="noopener noreferrer"&gt;&lt;strong&gt;Tadata&lt;/strong&gt;&lt;/a&gt; creates hosted, authenticated MCP servers with analytics in under &lt;strong&gt;1 minute&lt;/strong&gt;. Here's how it works:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Deploy your FastAPI app
&lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;tadata_sdk&lt;/span&gt;
&lt;span class="n"&gt;tadata_sdk&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;deploy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fastapi_app&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;TADATA_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or upload any OpenAPI spec - works with Django, Express, Spring Boot, whatever.&lt;/p&gt;




&lt;h2&gt;
  
  
  📊 The Analytics Game-Changer
&lt;/h2&gt;

&lt;p&gt;Developers can finally see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How are agents using my MCP&lt;/li&gt;
&lt;li&gt;Which tool descriptions confuse AI assistants
&lt;/li&gt;
&lt;li&gt;Which tools never get used (and should be removed)&lt;/li&gt;
&lt;li&gt;How to optimize based on real usage patterns instead of guessing&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Two Different Solutions, Same Vision
&lt;/h2&gt;

&lt;p&gt;Today we maintain both:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;FastAPI-MCP&lt;/strong&gt;: Open source, DIY hosting, full control&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tadata&lt;/strong&gt;: Managed hosting, focus on building tools not infrastructure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They serve different needs in the MCP ecosystem.&lt;/p&gt;

&lt;p&gt;FastAPI-MCP remains our love letter to the developer community - free, open, and powerful. Tadata is for developers who want to skip the operational headache and get straight to building great AI tools.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;The MCP ecosystem is &lt;strong&gt;exploding&lt;/strong&gt;, and we want to help everyone get the most out of their existing APIs.&lt;/p&gt;

&lt;p&gt;If you need production-ready hosting without the hassle, check out &lt;a href="https://www.tadata.com" rel="noopener noreferrer"&gt;&lt;strong&gt;Tadata&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The AI revolution is happening. Your software should be part of it 🤖&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>openai</category>
      <category>python</category>
    </item>
    <item>
      <title>The Very First MCP Generator to Support Auth!</title>
      <dc:creator>Miki Makhlevich</dc:creator>
      <pubDate>Tue, 22 Apr 2025 15:43:51 +0000</pubDate>
      <link>https://forem.com/makhlevich/the-very-first-mcp-generator-to-support-auth-ah8</link>
      <guid>https://forem.com/makhlevich/the-very-first-mcp-generator-to-support-auth-ah8</guid>
      <description>&lt;p&gt;🚀 &lt;strong&gt;Revolutionary&lt;/strong&gt;! Secure your AI-driven apps with the &lt;strong&gt;first-ever MCP server generator&lt;/strong&gt; that includes &lt;strong&gt;auth support&lt;/strong&gt;. Yes, you read that right. Auth is finally here for Model Context Protocol (MCP) in Python!&lt;/p&gt;

&lt;p&gt;In today’s AI-driven world, you need your app to interact with intelligent agents—and security is a must. That’s why we’re excited to introduce the first Python-based MCP generator to offer native authentication. Now you can &lt;strong&gt;make sure only trusted users (or agents!) can access&lt;/strong&gt; your powerful app features.&lt;/p&gt;

&lt;p&gt;All of this is possible through using &lt;a href="https://github.com/tadata-org/fastapi_mcp" rel="noopener noreferrer"&gt;&lt;strong&gt;FastAPI-MCP&lt;/strong&gt;&lt;/a&gt;, a tool to convert any FastAPI to MCP server in python using 2 lines of code, starred by 3.5K GitHub users in less than a month! &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F884giicmtnu9yn02sgcb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F884giicmtnu9yn02sgcb.png" alt="crazy growth for fastapi-mcp github repo" width="800" height="530"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Should You Care?
&lt;/h2&gt;

&lt;p&gt;👉 &lt;strong&gt;Unlock Seamless AI Interactions:&lt;/strong&gt; Build apps that talk with AI agents securely and efficiently.&lt;br&gt;
👉 &lt;strong&gt;Boost Security:&lt;/strong&gt; Built-in authentication means you’re not just exposing an API, but securing your app from unauthorized access.&lt;br&gt;
👉 &lt;strong&gt;Simplified Setup:&lt;/strong&gt; The fastapi-mcp library make it easier than ever to create robust and secure MCP servers. No complex configurations, 2 lines of code, just plug-and-play&lt;/p&gt;

&lt;h2&gt;
  
  
  Ready to Get Started?
&lt;/h2&gt;

&lt;p&gt;Building the future of secure AI interactions has never been this easy. Follow along the &lt;a href="https://medium.com/@miki_45906/how-to-build-mcp-server-with-authentication-in-python-using-fastapi-8777f1556f75" rel="noopener noreferrer"&gt;ultimate guide&lt;/a&gt; to create an &lt;strong&gt;MCP server with authentication&lt;/strong&gt; in just a few simple steps, and Don't forget to star the repo! 🌟&lt;/p&gt;

&lt;p&gt;Plus, &lt;strong&gt;contribute&lt;/strong&gt;! Help us improve this tool, report bugs, and propose new features. We’re all about community-driven growth!&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s Coming Next?
&lt;/h2&gt;

&lt;p&gt;🔥 &lt;strong&gt;Streamable HTTP Transport:&lt;/strong&gt; The future of MCP communication—soon to be implemented for faster and more efficient connections, in line with the latest spec.&lt;br&gt;
🔥 &lt;strong&gt;Custom MCP tools and resources:&lt;/strong&gt; Adding support for custom MCP tools and resources, independent of your FastAPI endpoints. It’s the natural next step for expanding your MCP server’s capabilities.&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>python</category>
      <category>fastapi</category>
      <category>opensource</category>
    </item>
    <item>
      <title>🔥 Only 2 Lines of code to create an MCP server from a FastAPI - Major updates 🚀</title>
      <dc:creator>Miki Makhlevich</dc:creator>
      <pubDate>Thu, 10 Apr 2025 15:09:47 +0000</pubDate>
      <link>https://forem.com/makhlevich/only-2-lines-of-code-to-create-an-mcp-server-from-a-fastapi-major-updates-3p03</link>
      <guid>https://forem.com/makhlevich/only-2-lines-of-code-to-create-an-mcp-server-from-a-fastapi-major-updates-3p03</guid>
      <description>&lt;p&gt;Just released a huge update to &lt;a href="https://github.com/tadata-org/fastapi_mcp" rel="noopener noreferrer"&gt;FastAPI-MCP&lt;/a&gt;, our zero-configuration tool that lets you expose FastAPI endpoints as Model Context Protocol (MCP) tools with a completely revamped architecture! Only 2 lines of code and you have a configurable and reliable MCP server!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9un7xtbs3cmw6rf2cirf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9un7xtbs3cmw6rf2cirf.png" alt="major success" width="800" height="636"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Two Powerful Improvements You Need To Know About:
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🎯 NEW: Selective Endpoint Exposure
&lt;/h3&gt;

&lt;p&gt;We had such great adoption, which came with a lot of requests and pressure to support this feature. You asked, we delivered! Now you can precisely control which endpoints become MCP tools with simple include/exclude configurations.&lt;/p&gt;

&lt;h3&gt;
  
  
  💪 Class-Based Architecture For Better Extensibility
&lt;/h3&gt;

&lt;p&gt;We've completely refactored the implementation to use a new &lt;code&gt;FastApiMCP&lt;/code&gt; class for better usability and extensibility. This gives you more control and prevents edge-case in complex FastAPI configurations. No more frustration over endless bugs!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbykr1mbhz1v0s2h5g97v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbykr1mbhz1v0s2h5g97v.png" alt="frustrating bugs" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Implementation Is Still Super Simple:
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;fastapi&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;FastAPI&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;fastapi_mcp&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;FastApiMCP&lt;/span&gt;

&lt;span class="n"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;FastAPI&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="n"&gt;mcp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;FastApiMCP&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Mount the MCP server directly to your FastAPI app
&lt;/span&gt;&lt;span class="n"&gt;mcp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;mount&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To control which endpoints are exposed, play with the FastApiMCP arguments:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;include_operations&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;exclude_operations&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;include_tags&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;exclude_tags&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This update is available now on PyPI! &lt;/p&gt;

&lt;h2&gt;
  
  
  Finally
&lt;/h2&gt;

&lt;p&gt;You can read more about our refactor journey &lt;a href="https://medium.com/@miki_45906/advanced-mcps-in-python-how-transitioning-from-fastmcp-wrappers-improved-our-fastapi-mcp-tool-6f6476a39dbc" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;br&gt;
Don't forget to star our repo &lt;a href="https://github.com/tadata-org/fastapi_mcp" rel="noopener noreferrer"&gt;FastAPI-MCP&lt;/a&gt; !&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>fastapi</category>
      <category>python</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>I Tested Every MCP Client So You Don't Have To 🔥</title>
      <dc:creator>Miki Makhlevich</dc:creator>
      <pubDate>Sun, 06 Apr 2025 13:08:35 +0000</pubDate>
      <link>https://forem.com/makhlevich/i-tested-every-mcp-client-so-you-dont-have-to-1dn7</link>
      <guid>https://forem.com/makhlevich/i-tested-every-mcp-client-so-you-dont-have-to-1dn7</guid>
      <description>&lt;p&gt;Listen up, developers! 👀 I just spent DAYS diving into the MCP rabbit hole so you can save your precious time. If you're building AI apps, this is the guide you've been searching for.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Quick MCP Rundown
&lt;/h2&gt;

&lt;p&gt;MCP servers connect AI agents to apps through structured communication. They're the translators making AI actually useful in real applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Client Showdown: What Nobody Tells You
&lt;/h2&gt;

&lt;p&gt;Here's where it gets juicy. The CLIENT side is where everyone's getting it wrong! 🔥&lt;br&gt;
I've personally checked EVERY. SINGLE. MCP client out there, and let me tell you — they are NOT created equal. Some will waste your time, while others are absolute gems that'll supercharge your development.&lt;br&gt;
Skip to the end for my no-BS recommendations based on what you actually need.&lt;br&gt;
&lt;em&gt;Updated regularly! Found something missing? Comment below for quick updates!&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Engineers? These Are Your Go-To Clients 👨‍💻
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Claude Desktop
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The Official Solution&lt;/strong&gt;&lt;br&gt;
✅ Native MCP support&lt;br&gt;
✅ Easy configuration&lt;br&gt;
❌ Requires technical setup&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quick Setup:&lt;/strong&gt;&lt;br&gt;
Settings → Developer → Edit Config&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;  
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;  
    &lt;/span&gt;&lt;span class="nl"&gt;"mcp-server-name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;  
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;  
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;  
        &lt;/span&gt;&lt;span class="s2"&gt;"required"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;  
        &lt;/span&gt;&lt;span class="s2"&gt;"args"&lt;/span&gt;&lt;span class="w"&gt;  
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;  
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;  
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;  
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;💡 &lt;strong&gt;Pro Tip:&lt;/strong&gt; Always restart Claude after saving!&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Claude Code
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The Command-Line Champion&lt;/strong&gt;&lt;br&gt;
✅ Supports both SSE &amp;amp; stdio&lt;br&gt;
✅ Lightweight interface&lt;br&gt;
❌ No Resources support&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lightning-Fast Setup:&lt;/strong&gt;&lt;br&gt;
For stdio:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;claude mcp add &amp;lt;name&amp;gt; &amp;lt;command&amp;gt; [args...]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For SSE:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;claude mcp add --transport sse &amp;lt;name&amp;gt; &amp;lt;url&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Cursor
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The Developer's Dream IDE&lt;/strong&gt;&lt;br&gt;
✅ First code editor with MCP&lt;br&gt;
✅ Supports SSE transport&lt;br&gt;
✅ Seamless coding integration&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quick Setup:&lt;/strong&gt;&lt;br&gt;
Settings → MCP → Add a new MCP server&lt;br&gt;
For stdio - see JSON as in Claude Desktop. For SSE:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;  
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;  
    &lt;/span&gt;&lt;span class="nl"&gt;"mcp-server-name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;  
      &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"http://the/url/to/your/mcp"&lt;/span&gt;&lt;span class="w"&gt;  
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;  
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;  
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Cline
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The VSCode Powerhouse&lt;/strong&gt;&lt;br&gt;
✅ Open-source AI agent&lt;br&gt;
✅ Marketplace support&lt;br&gt;
✅ Maintains existing workflow&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quick Setup:&lt;/strong&gt;&lt;br&gt;
MCP Servers tab → Select provider&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj23wvdo0rj0l54wtf568.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj23wvdo0rj0l54wtf568.png" alt="cline setup" width="800" height="811"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Or configure custom with the same JSON patterns you already know:&lt;br&gt;
MCP Servers → Installed → Configure MCP Servers&lt;/p&gt;
&lt;h3&gt;
  
  
  Windsurf by Codeium
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The Robust Alternative&lt;/strong&gt;&lt;br&gt;
✅ Familiar configuration&lt;br&gt;
✅ Advanced integration&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quick Setup:&lt;/strong&gt;&lt;br&gt;
Settings → Advanced Settings or via Command Palette → Windsurf Settings → Cascade → View raw config&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;⚠️ MCP server name should NOT start with &lt;code&gt;@&lt;/code&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  Goose CLI
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The Beginner-Friendly Terminal&lt;/strong&gt;&lt;br&gt;
✅ Intuitive approach&lt;br&gt;
✅ No manual JSON editing&lt;br&gt;
✅ Desktop version available&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quick Setup:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;goose configure
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then select Add Extension and follow prompts (&lt;code&gt;Command-line Extension&lt;/code&gt; for stdio, &lt;code&gt;Remote Extension&lt;/code&gt; for SSE).&lt;/p&gt;

&lt;h2&gt;
  
  
  Non-Engineers? The Painful Truth 😩
&lt;/h2&gt;

&lt;p&gt;There's a MASSIVE gap in the market right now. Claude Desktop is basically your only option, and even that requires technical knowledge (as it only supports stdio which requires locally running the server). &lt;/p&gt;

&lt;p&gt;Even the MCP experts are struggling with this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://x.com/hwchase17/status/1898437865132130574" rel="noopener noreferrer"&gt;Harrison Chase&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://x.com/jeff_weinstein/status/1897826048710262994" rel="noopener noreferrer"&gt;Jeff Weinstein&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Know something I don't? Drop it in the comments!&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The Hidden Gems Most People Miss 💎
&lt;/h2&gt;

&lt;p&gt;These clients adopted MCP early but don't get enough credit:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://docs.continue.dev/customize/deep-dives/mcp" rel="noopener noreferrer"&gt;&lt;strong&gt;Continue&lt;/strong&gt; &lt;/a&gt;— s VSCode / JetBrains extension. Although still considered experimental, have full supports for all MCP features.&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://5ire.app/" rel="noopener noreferrer"&gt;&lt;strong&gt;5ire&lt;/strong&gt; &lt;/a&gt;— an AI assistant and MCP client. Has built in MCPs under Tools (right panel), supporting only stdio (command) transport clients, or connecting clients from the marketplace they provide.&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://zed.dev/docs/assistant/model-context-protocol" rel="noopener noreferrer"&gt;&lt;strong&gt;Zed&lt;/strong&gt; &lt;/a&gt;— a code editor. Currently only supporting MCPs as Zed extensions, having only one MCP extension for Postgres.&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://github.com/VikashLoomba/copilot-mcp" rel="noopener noreferrer"&gt;&lt;strong&gt;Copilot-MCP&lt;/strong&gt;&lt;/a&gt; — a VSCode extension. Dedicated to integrate MCPs with GitHub Copilot Chat.&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://www.librechat.ai/docs/features/agents#model-context-protocol-mcp" rel="noopener noreferrer"&gt;&lt;strong&gt;LibreChat&lt;/strong&gt;&lt;/a&gt;&lt;a href="https://github.com/danny-avila/LibreChat?tab=readme-ov-file" rel="noopener noreferrer"&gt; &lt;/a&gt;— open-source app compatible with any AI provider. Supports MCPs as Tools.&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://microsoft.github.io/genaiscript/reference/scripts/mcp-tools/" rel="noopener noreferrer"&gt;&lt;strong&gt;GenAIScript&lt;/strong&gt;&lt;/a&gt; — a JavaScript tool to programmatically assemble prompts for LLMs, MCP servers can be configured in the defTool, using the same syntax as the Claude JSON.&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://github.com/lizqwerscott/mcp.el" rel="noopener noreferrer"&gt;&lt;strong&gt;Emacs Mcp.el&lt;/strong&gt;&lt;/a&gt; — Emacs client for interacting with MCP servers. Supporting structured communication, asynchronous operations, and integration with popular Emacs packages.&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://ggozad.github.io/oterm/mcp/" rel="noopener noreferrer"&gt;&lt;strong&gt;oterm&lt;/strong&gt;&lt;/a&gt; — a text-based terminal client for Ollama (that does not yet support MCPs, but the tool attempts to bridge the servers with it). Adding servers is done in the &lt;code&gt;config.json&lt;/code&gt; similarly to the Claude JSON.&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://sourcegraph.com/blog/cody-supports-anthropic-model-context-protocol" rel="noopener noreferrer"&gt;&lt;strong&gt;Sourcegraph Cody&lt;/strong&gt;&lt;/a&gt; — a VSCode extension that performs as AI coding assistant. Requires editing your VSCode JSON settings.&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://github.com/orgs/modelcontextprotocol/discussions/179" rel="noopener noreferrer"&gt;&lt;strong&gt;Witsy&lt;/strong&gt; &lt;/a&gt;— a desktop AI assistant, requires API keys for LLM providers. Supports only outsourced MCP servers providers (not suitable for local MCPs), Configure the MCPs in Settings → Plugins → MCP.&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://theia-ide.org/docs/user_ai/#mcp-integration" rel="noopener noreferrer"&gt;&lt;strong&gt;Theia AI/IDE&lt;/strong&gt;&lt;/a&gt; by &lt;a href="https://eclipsesource.com/blogs/2024/12/19/theia-ide-and-theia-ai-support-mcp/" rel="noopener noreferrer"&gt;EclipseSource &lt;/a&gt;— a platform for building custom Cloud &amp;amp; Desktop IDEs and tools. Currently supports only stdio.&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://apify.com/jiri.spilka/tester-mcp-client" rel="noopener noreferrer"&gt;&lt;strong&gt;Tester MCP client&lt;/strong&gt;&lt;/a&gt; by Apify — connects to any MCP server using SSE, designed for testing the MCP server.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  BONUS: Agent-Building Tools That Support MCP 🤖
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/i-am-bee/beeai-framework/blob/main/typescript/docs/tools.md" rel="noopener noreferrer"&gt;&lt;strong&gt;BeeAI Framework&lt;/strong&gt;&lt;/a&gt; — open-source framework to implement multi-agent patterns. To connect to MCP it requires programming the connection in python or TypeScript. Found a useful example in this &lt;a href="https://towardsdatascience.com/clear-intro-to-mcp/" rel="noopener noreferrer"&gt;blog post&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://docs.spinai.dev/mcp/overview" rel="noopener noreferrer"&gt;&lt;strong&gt;SpinAI&lt;/strong&gt; &lt;/a&gt;— a TypeScript framework for creating AI agents. Can add MCPs from outsourced providers using the command line (not suitable for local MCPs).&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://llmindset.co.uk/resources/fast-agent/" rel="noopener noreferrer"&gt;&lt;strong&gt;Fast-Agent&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; — &lt;/strong&gt;a lightweight framework for creating and managing agents and workflows using MCP, supporting all the features.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/lastmile-ai/mcp-agent" rel="noopener noreferrer"&gt;&lt;strong&gt;mcp-agent&lt;/strong&gt;&lt;/a&gt; — a python based library to help you build AI agents that supports MCPs.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/agent-extend-action-mcp" rel="noopener noreferrer"&gt;&lt;strong&gt;Microsoft Copilot&lt;/strong&gt;&lt;/a&gt; — a graphical, low-code tool for building agents and agent flows, allows connecting MCP servers only through SSE and still in testing and trial (only in preview regions).&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/opensumi/core" rel="noopener noreferrer"&gt;&lt;strong&gt;core&lt;/strong&gt;&lt;/a&gt; by &lt;a href="https://opensumi.com/en" rel="noopener noreferrer"&gt;OpenSumi&lt;/a&gt;- an MCP client, framework to build AI Native IDE products.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  See also
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;These are more clients that support MCPs, but I could not find the documentation/install instructions for. Please help me complete the missing details.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://github.com/daydreamsai/daydreams" rel="noopener noreferrer"&gt;&lt;strong&gt;daydreams&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; — &lt;/strong&gt;a generative agent framework for executing anything onchain.&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://github.com/firebase/genkit" rel="noopener noreferrer"&gt;&lt;strong&gt;Genkit&lt;/strong&gt; &lt;/a&gt;— an open-source TypeScript toolkit designed to help you build AI-powered features in web and mobile apps.&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://superinterface.ai/" rel="noopener noreferrer"&gt;&lt;strong&gt;Superinterface&lt;/strong&gt; &lt;/a&gt;— platform to add AI UI to a product.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Bottom Line: My No-BS Recommendations ⚡
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Best for SSE: Cursor or Cline&lt;/li&gt;
&lt;li&gt;Best CLI: Claude Code or Goose&lt;/li&gt;
&lt;li&gt;Best for GitHub Users: Copilot-MCP&lt;/li&gt;
&lt;li&gt;Best for Testing: Apify MCP tester&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's Next for MCP?
&lt;/h2&gt;

&lt;p&gt;MCPs are about to EXPLODE in popularity. Early adopters will have the advantage as this becomes industry standard.&lt;/p&gt;

&lt;p&gt;Want to stay ahead? Join the &lt;a href="https://themcparty.slack.com/join/shared_invite/zt-31zhx4s4j-40FYOjorlAE1z54WeKepgA" rel="noopener noreferrer"&gt;MCParty Slack Community&lt;/a&gt; for insider updates.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Found a mistake? Let me know in the comments and I'll update within 24 hours!&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;Written in collaboration with &lt;a href="https://medium.com/u/b13b68cb95ad" rel="noopener noreferrer"&gt;Shira Ayal&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>anthropic</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Less than a minute to convert MCP transport from SSE to stdio! 💻</title>
      <dc:creator>Miki Makhlevich</dc:creator>
      <pubDate>Sun, 06 Apr 2025 11:53:58 +0000</pubDate>
      <link>https://forem.com/makhlevich/less-than-a-minute-to-convert-mcp-transport-from-sse-to-stdio-195p</link>
      <guid>https://forem.com/makhlevich/less-than-a-minute-to-convert-mcp-transport-from-sse-to-stdio-195p</guid>
      <description>&lt;p&gt;A while ago someone asked in the &lt;a href="https://join.slack.com/t/themcparty/shared_invite/zt-31zhx4s4j-40FYOjorlAE1z54WeKepgA" rel="noopener noreferrer"&gt;MCParty Slack Community&lt;/a&gt; (a community designated to sharing thoughts, ideas and problems regarding building and using MCP) a very good question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;My MCP has URL connection, how do I connect it to Claude Desktop?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Whether you just started building your own MCP server from scratch or you found helpful tools to convert your existing applications to MCP servers (such as &lt;a href="https://github.com/tadata-org/fastapi_mcp" rel="noopener noreferrer"&gt;fastapi-mcp&lt;/a&gt;, see &lt;a href="https://dev.to/makhlevich/how-to-build-mcp-server-in-python-using-fastapi-kh1"&gt;my guide&lt;/a&gt; on how to do that easily), you must know by now that your AI agent needs to connect to your MCP by one of two communication options (while Anthropic recently updated their protocol to use Streamable HTTP, many still use SSE so I am writing in relation to the original implementation):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;SSE (Server-Sent Events)&lt;/strong&gt; — pushing data to a client over a single HTTP connection. It’s a real-time, one-way communication from server to client. This is the URL connection he asked about.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;stdio (Standard Input/Output)&lt;/strong&gt; — a local integration not specific to web technologies (not tied to any specific network protocol), with lower latency.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You must have asked yourself — &lt;strong&gt;why choose one over the other?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;MCP servers should use stdio for local integrations (often simpler to set up and use, also the recommended method by Anthropic), while SSE is better suited for distributed systems requiring multi-client support and remote access.&lt;/p&gt;

&lt;p&gt;But here come’s &lt;strong&gt;the challenge&lt;/strong&gt; — what can you do if your MCP is using SSE (because you downloaded it from a remote place), and you want to connect it to Claude Desktop, which currently supports only stdio?&lt;/p&gt;

&lt;p&gt;After trying out three other possible solutions that didn’t work, I found the ONE that actually did the job: &lt;a href="https://github.com/sparfenyuk/mcp-proxy" rel="noopener noreferrer"&gt;mcp-proxy&lt;/a&gt; by &lt;code&gt;@sparfenyuk&lt;/code&gt; — an open-source project (I ❤️ open-source).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7lu8llwsk6z118kaycat.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7lu8llwsk6z118kaycat.png" alt="the conversion from SSE to stdio schema using mcp-proxy tool" width="800" height="160"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Use mcp-proxy
&lt;/h2&gt;

&lt;p&gt;The implementation is surprisingly straightforward. Here’s a step-by-step guide:&lt;/p&gt;

&lt;h3&gt;
  
  
  Installation
&lt;/h3&gt;

&lt;p&gt;First, install the library using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;uv tool &lt;span class="nb"&gt;install &lt;/span&gt;mcp-proxy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Configure Claude Desktop
&lt;/h3&gt;

&lt;p&gt;Open Claude Desktop, then nabivate to:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;File → Settings → Developer → Edit config&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A JSON configuration file will open. Enter the appropriate settings to specify the path to your MCP.&lt;/p&gt;

&lt;p&gt;If you used &lt;a href="https://github.com/tadata-org/fastapi_mcp" rel="noopener noreferrer"&gt;fastapi-mcp&lt;/a&gt; to convert an existing FastAPI application to an MCP server, your SSE URL is likely &lt;code&gt;http://127.0.0.1:8000/mcp&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"my-api-mcp-proxy"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"mcp-proxy"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"http://path/to/mcp/sse"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Note for MacOS users:&lt;/strong&gt; you might need to use the full-path to your mcp-proxy executable, which can be found by running in Terminal: &lt;code&gt;which mcp-proxy&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Don’t forget to quit Claude after you saved the configuration!&lt;/p&gt;

&lt;h3&gt;
  
  
  Accessing Your Tools
&lt;/h3&gt;

&lt;p&gt;Finally, open Claude Desktop and discover all your tools:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw4y8bs76b9gkp74dxpo4.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw4y8bs76b9gkp74dxpo4.jpg" alt="MCP tools present on Claude Desktop after using mcp-proxy properly" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Notice that you will need to approve the usage of the MCP before Claude can run it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx9caxkbfqlpo0vbsj37c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx9caxkbfqlpo0vbsj37c.png" alt="Claude Desktop asks for permissions to run the MCP tool" width="800" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Troubleshooting Tips
&lt;/h2&gt;

&lt;p&gt;If you don’t see your tools after configuration:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Verify your MCP server is running&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Check that the URL in your configuration matches your SSE endpoint exactly&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ensure mcp-proxy was installed correctly&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Review Claude Desktop logs for any connection errors&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The fine print (Additional Considerations)
&lt;/h2&gt;

&lt;p&gt;When using mcp-proxy to convert SSE to stdio (or vice versa), remember that you’re creating a bridge between different communication protocols. Aside from latency differences — error handling approaches might need adjustment. Additionally, ensure you consider these important security considerations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Your MCP server implements proper authentication if needed&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The communication happens over a secure connection if handling sensitive data&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You’re aware of any rate limiting or timeout settings in your MCP implementation&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While these considerations might alarm you, remember that the beauty of this solution is in its simplicity. By using mcp-proxy, you’ve effectively bridged the gap between SSE and stdio, allowing your Claude Desktop client to communicate seamlessly with your existing MCP infrastructure!&lt;/p&gt;




&lt;p&gt;Written in collaboration with &lt;a href="https://medium.com/@shirayal3" rel="noopener noreferrer"&gt;Shira Ayal&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>python</category>
      <category>programming</category>
    </item>
    <item>
      <title>How to build MCP server in python using FastAPI</title>
      <dc:creator>Miki Makhlevich</dc:creator>
      <pubDate>Thu, 27 Mar 2025 15:48:03 +0000</pubDate>
      <link>https://forem.com/makhlevich/how-to-build-mcp-server-in-python-using-fastapi-kh1</link>
      <guid>https://forem.com/makhlevich/how-to-build-mcp-server-in-python-using-fastapi-kh1</guid>
      <description>&lt;p&gt;I’ve seen many people intimidated or confused by the new MCP protocol published by Anthropic, which is designed to make the connection between an AI agent and your application seamless and clear. But building such a server for your Python application doesn’t need to be complicated at all.&lt;br&gt;
Before we jump in, let me convince you why it’s necessary.&lt;/p&gt;
&lt;h2&gt;
  
  
  The WHY
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Allows AI agents to integrate with your application&lt;/li&gt;
&lt;li&gt;Shifts complexity from human developers to AI agents, potentially streamlining application development&lt;/li&gt;
&lt;li&gt;Simplifies the process of connecting AI to numerous tools and data sources&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If MCP becomes the next standard, you’ll have no choice but to adopt it, as people will shift from manual integrations to AI doing everything for them.&lt;br&gt;
Now you might say, “No problem! That’s a big if, let’s wait and see.” But once you see how little effort it takes to adopt, you’ll want to stay ahead of the curve.&lt;/p&gt;
&lt;h2&gt;
  
  
  The HOW
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Create a FastAPI Server with the Desired Functionalities
&lt;/h3&gt;

&lt;p&gt;(If you already have one, skip ahead)&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://fastapi.tiangolo.com/tutorial/first-steps/" rel="noopener noreferrer"&gt;FastAPI first-steps tutorial&lt;/a&gt; will surely be better than mine, but here’s the gist of it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Install dependencies:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;uvicorn, fastapi
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Create a FastAPI server:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;fastapi&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;FastAPI&lt;/span&gt;

&lt;span class="n"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;FastAPI&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="nd"&gt;@app.get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;root&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;message&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;MCP is super cool&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;

&lt;li&gt;&lt;p&gt;For each functionality of your app, write a “path operation” — a function assigned to a specific path (here you see the root function under the path /), performing an HTTP operation (GET, POST, PUT, DELETE…).&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Run your app using uvicorn:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight shell"&gt;&lt;code&gt;uvicorn main:app - reload
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;

&lt;/ol&gt;

&lt;p&gt;That’s it! Your FastAPI app is available at &lt;code&gt;http://127.0.0.1:8000&lt;/code&gt;. Now let’s upgrade it to an MCP server.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh9sni4jqnjqikgfswt2d.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh9sni4jqnjqikgfswt2d.gif" alt="fastapi to mcp animation" width="1600" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  From FastAPI to MCP server
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Install the &lt;a href="https://github.com/tadata-org/fastapi_mcp" rel="noopener noreferrer"&gt;fastapi-mcp&lt;/a&gt; open-source tool:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;fastapi-mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add to your FastAPI code:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;fastapi&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;FastAPI&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;fastapi_mcp&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;add_mcp_server&lt;/span&gt;

&lt;span class="c1"&gt;# Your FastAPI app
&lt;/span&gt;&lt;span class="n"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;FastAPI&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="c1"&gt;# Mount the MCP server to your app
&lt;/span&gt;&lt;span class="nf"&gt;add_mcp_server&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;                 &lt;span class="c1"&gt;# Your FastAPI app
&lt;/span&gt;    &lt;span class="n"&gt;mount_path&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/mcp&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="c1"&gt;# Where to mount the MCP server
&lt;/span&gt;    &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;My API MCP&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="c1"&gt;# Name for the MCP server
&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That’s it! The MCP server is auto-generated and available at &lt;code&gt;http://127.0.0.1:8000/mcp&lt;/code&gt;. This is an address that can be configured in Cursor (or any AI agent supporting SSE, rumor has it that Cline support for MCP is on its way).&lt;/p&gt;

&lt;h3&gt;
  
  
  Using the MCP
&lt;/h3&gt;

&lt;p&gt;Configure your MCP in Cursor:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Settings -&amp;gt; MCP -&amp;gt; Add new MCP&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Paste this in the JSON file that opens:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"My First MCP server"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"http://127.0.0.1:8000/mcp"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Configuring in Claude Desktop takes one more step (as it currently only supports stdio), but don’t worry — I will show you how to do it in a different post.&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s Next?
&lt;/h2&gt;

&lt;p&gt;Once set up, AI agents can now interface with your application through a standardized protocol. You can expand your MCP server by adding more endpoints that expose different functionalities of your application.&lt;br&gt;
Remember, the goal of MCP is to make integration simple — so don’t overcomplicate it! Start with basic functionality and expand as needed.&lt;br&gt;
The beauty of using FastAPI with the fastapi-mcp library is that you maintain all the benefits of FastAPI (like automatic documentation and type validation) while adding MCP capabilities with minimal additional code.&lt;br&gt;
Let me know if you tried it, and don’t forget to star the &lt;a href="https://github.com/tadata-org/fastapi_mcp" rel="noopener noreferrer"&gt;fastapi-mcp&lt;/a&gt; repository!&lt;/p&gt;




&lt;p&gt;Written in collaboration with &lt;a href="https://medium.com/@shirayal3" rel="noopener noreferrer"&gt;Shira Ayal&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>fastapi</category>
      <category>python</category>
    </item>
  </channel>
</rss>
