# Model Context Protocol (MCP) An Open Standard introduced by [[Anthropic]] ([[Claude]]) end November 2024. The goal of MCP is to define a standard for connecting [[Large Language Models (LLMs)]] to data sources and tools. It extends the knowledge LLMs have access to, and introduces the capability of interacting (read and write) with tools and platforms. Of course, the idea, similar to [[Retrieval Augmented Generation (RAG)]] and [[Vector Databases]] is to give LLMs access to data that they don't have (i.e., not part of their training data set). That includes data that was created after the LLM was trained, but also data that it couldn't have access to (e.g., private data of a company or individual). MCP provides an open protocol to connect AI systems with data sources. The MCP protocol supports two-way connections. From AI systems to tools and from tools to AI systems. ## Initial release Upon initial release, Anthropic published: - The MCP specification and SDKs - Local MCP support in the [[Claude]] Desktop applications - An open-source repository of MCP servers ## News - 2025-03: OpenAI has announced that it's going to support MCP in ChatGPT and also in their AI Agents SDK: https://x.com/sama/status/1904957253456941061 - 2026-07-28: the specification makes **transport stateless**. See below. ## The 2026-07-28 specification: stateless transport The headline change, and the one that unblocks a whole deployment model: **MCP transport is now stateless.** **Why it matters.** Stateful sessions meant a server had to hold connection state in memory between calls, which is exactly what serverless hosts don't do. Remote MCP servers therefore needed long-lived processes. Stateless transport lets them run on Lambda-style infrastructure, and it removes the operational burden of session handling that teams kept getting wrong. **It's backward compatible.** Per the lead maintainers in the thread, existing MCP code needs no changes; statelessness only matters if you want the new capabilities. The argument in favour was made most cleanly in the discussion, and it's hard to disagree with: tool calls were never really stateful anyway. When a model calls `get_my_todos` and then `add_todo`, nothing is held in RAM; results go back into the context window as text and the next call is independent. State belongs to the client, which is the one holding the conversation. That is also how HTTP has always worked, and why it scaled. ### The unresolved parts Worth knowing before building on it: - **File uploads are still unsolved**, and this is the most-complained-about gap. The proposal chain went SEP-1306 (binary mode elicitation) → SEP-2356 (file input for tools and elicitation) → SEP-2631, and the core maintainers deferred the work for this release. In the meantime clients fumble base64 encodings and dump binary data straight into the context window. Some of that is client implementation quality rather than the spec, but the spec not saying enough is what allows the divergence - **SDK support lags by tier.** The Java SDK is Tier 2, which allows up to six months to implement a new spec. Check your language's tier before assuming parity - **Auth for short-lived upstream tokens** has no clean pattern yet. URL Elicitation works when a human is driving the client, but client support is patchy - **Client support is rolling out**, not done, including across Claude clients ### The criticism worth recording The thread carried a persistent line that MCP shipped as "a pile of anti-patterns" and that each spec release undoes another original mistake, with one commenter putting it bluntly: the spec wasn't designed, it was vibe coded. That's uncharitable but not baseless. Statefulness was a genuine design error for a protocol whose payloads are stateless by nature, and it took roughly two years and several releases to reverse. The more useful reading is that MCP won on adoption first and is now paying down the architectural debt that came with moving fast, which is a normal trajectory for a protocol that becomes a de facto standard before it is finished. Plan for the spec to keep moving. ## Mental Model Here's a nice mental model of what MCP is: ![[Model Context Protocol (MCP) - mental model.png]] With MCP, [[Large Language Models (LLMs)]] get access to tools, resources & prompts, enabling them to interact with almost anything (e.g., data, tools, services, ...). ## Architecture and Components - MCP Hosts: Programs like [[Claude]] Desktop, IDEs, and tools that want to access resources through the MCP protocol - MCP Clients: Clients that maintain 1:1 connections with servers - MCP Servers: Programs that expose specific capabilities through the MCP protocol - Local Resources: Your machine's resources (databases, files, services) that MCP servers can access - Remote Resources: Resources available over the network/the Internet (e.g., through APIs) that MCP servers can connect to MCP uses a client-server architecture, where a host application can connect to multiple servers: ![[MCP high level architecture.png]] Caption: MCP architecture overview As shown above, a single MCP host (e.g., Claude Desktop, IDEs, etc) can interact with many MCP servers (e.g., filesystem access, search support, sqlite access, etc) through the MCP protocol. Example with SQLite: ![[MCP SQLite example.png]] Notes: - MCP servers only expose specific/controlled capabilities - MCP servers run locally on your machine, and the resources they access are not exposed to the Internet - Claude Desktop requires user confirmation for sensitive operations (e.g., reading/writing files on your behalf) ## MCP Clients There's a list of applications that support MCP integrations here: https://modelcontextprotocol.io/clients ## Protocol details The MCP protocol uses JSON-RPC 2.0 messages to enable communication between hosts, clients and servers: - Hosts: LLM "applications" that initiate connections - Clients: Connectors within the host application - Servers: Services that provide context and capabilities The MCP protocol is inspired by Microsoft's [Language Server Protocol](https://microsoft.github.io/language-server-protocol/). The protocol handles client/server capability negotiation. It originally used **stateful** connections; the 2026-07-28 specification made transport **stateless** (see below). Servers may offer any of the following features to clients: - Resources: Context and data, for the user or the AI model to use - Prompts: Templated messages and workflows for users - Tools: Functions for the AI model to execute Clients may offer the following features to servers: - Sampling: Server-initiated agentic behaviors and recursive LLM interactions In addition, the protocol includes additional utilities: - Configuration - Progress tracking - Cancellation - Error reporting - Logging ## Prompts MCP Prompts enable MCP servers to define reusable prompt templates and workflows that MCP clients can surface to users in their user interfaces and LLMs. They provide a way to standardize and share common LLM interactions. Details: https://modelcontextprotocol.io/docs/concepts/prompts ## Tools MCP Tools enable LLMs to perform actions through MCP servers. They enable MCP servers to expose executable functionality to MCP clients, enabling LLMs to interact with external systems/services, perform computations, and perform real-world actions. Details: https://modelcontextprotocol.io/docs/concepts/tools ## Sampling Sampling is an MCP feature that allows MCP servers to request LLM completions through the MCP client connected to it, enabling agentic behaviors. As of November 2024, this feature is not yet supported by Claude Desktop, but it's certainly worth keeping an eye on. Details: https://modelcontextprotocol.io/docs/concepts/sampling ## MCP Protocol Security Considerations Given that MCP enables arbitrary data access and code execution, implementors need to pay attention and address important security and trust considerations See here for details: https://spec.modelcontextprotocol.io/specification/#key-principles See here for guidelines: https://spec.modelcontextprotocol.io/specification/#implementation-guidelines The full specification is documented here: https://spec.modelcontextprotocol.io/specification/ ## SDKs MCP currently (November 2024) includes two SDKs: - Python: https://github.com/modelcontextprotocol/python-sdk - TypeScript: https://github.com/modelcontextprotocol/typescript-sdk - Bash: https://github.com/muthuishere/mcp-server-bash-sdk There are introduction guides available: - https://modelcontextprotocol.io/docs/first-server/python - https://modelcontextprotocol.io/docs/first-server/typescript ## Debugging There's a guide for troubleshooting MCP issues: - https://modelcontextprotocol.io/docs/tools/debugging - https://modelcontextprotocol.io/docs/tools/inspector ## Claude Desktop ### Debugging To debug MCP servers, see https://modelcontextprotocol.io/docs/tools/debugging ### Windows First, make sure you are using Claude Desktop >= 0.7.5. See [[Claude]] to know where the [[Claude]] configuration is located. Some notes: - Make sure your filepaths have `\\` escaped backslashes - The command should be the same for all node tools: `"command": "path\to\your\node_install\node.exe",` unless if node is on your PATH - The first arg should always be `"args":["path\to\node_modules\@servername\dist\index.js",...]` - Non-node-based tools should just work, ie sqlite works just fine - If the `claude_desktop_config.json` file does not exist, then create it manually Example `claude_desktop_config.json` file configuration for the filesystem MCP server: ``` "mcpServers": { "filesystem": { "command": "C:\\Program Files\\nodejs\\node.exe", "args": [ "C:\\Users\\myname\\AppData\\Roaming\\npm\\node_modules\\@modelcontextprotocol\\server-filesystem\\dist\\index.js", "C:\\Users\\myname\\myfiles ] }, ``` Assuming you have put `node` on your path, you can juste use "node.exe" as command. You can also install MCP servers globally to ease their use: ``` npm install -g @modelcontextprotocol/server-memory npm install -g @modelcontextprotocol/server-puppeteer npm install -g @modelcontextprotocol/server-brave-search npm install -g @modelcontextprotocol/server-google-maps npm install -g @modelcontextprotocol/server-postgres ``` Once correctly configured, you should be able to access your files and do tons of cool stuff. Here's an example where Claude has read-access to my Obsidian notes: ``` { "mcpServers": { "filesystem": { "command": "node.exe", "args": [ "C:\\npm\\node_modules\\@modelcontextprotocol\\server-filesystem\\dist\\index.js", "C:\\Users\\trankill\\My Drive\\Notes\\Seb" ] } } } ``` ![[Model Context Protocol (MCP) - access obsidian notes.png]] ## Desktop Extensions: MCP Server Installation In June 2026, Anthropic announced [[Desktop Extensions for MCP]], a way to more easily install MCP servers. ## References - Anthropic's Announcement: https://www.anthropic.com/news/model-context-protocol - Official Website: https://modelcontextprotocol.io/introduction - 2026-07-28 specification, "transport going stateless": https://blog.modelcontextprotocol.io/posts/2026-07-28/ - [[Hacker News]] discussion, with the lead maintainers answering (127 points): https://news.ycombinator.com/item?id=49088058 - Rollout across Claude clients: https://claude.com/blog/bringing-mcp-2026-07-28-to-claude - Community Discord and SDK tiers: https://modelcontextprotocol.io/community/communication - Source code, specification and SDKs: https://github.com/modelcontextprotocol - TypeScript: https://github.com/modelcontextprotocol/typescript-sdk - Python: https://github.com/modelcontextprotocol/python-sdk - Unofficial - Kotlin SDK: https://github.com/modelcontextprotocol/kotlin-sdk - Spring (Java) SDK: https://spring.io/blog/2024/12/11/spring-ai-mcp-announcement - Source code: https://github.com/spring-projects-experimental/spring-ai-mcp - Templates - TypeScript - https://github.com/zcaceres/easy-mcp - https://github.com/punkpeye/fastmcp - https://github.com/tadata-org/fastapi_mcp - https://mcp-framework.com - https://github.com/mcpdotdirect/template-mcp-server - Next.js + Vercel: https://www.modelfetch.com - Java - https://github.com/quarkiverse/quarkus-mcp-server - Protocol specification: https://spec.modelcontextprotocol.io/specification - Protocol TypeScript schema: https://github.com/modelcontextprotocol/specification/blob/main/schema/schema.ts - Directories - Official and a part of the community ones: https://github.com/modelcontextprotocol/servers - Anthropic list of remote MCP servers: https://www.anthropic.com/partners/mcp - [[Smithery]]: https://smithery.ai - https://mcp.so - https://www.pulsemcp.com - https://gettoolbase.ai - https://www.aimcp.info/en - https://mcp-get.com - https://mcp-dockmaster.com - https://github.com/chatmcp/mcp-directory - https://opentools.com - https://github.com/punkpeye/awesome-mcp-servers - https://github.com/wong2/awesome-mcp-servers - https://github.com/appcypher/awesome-mcp-servers - https://github.com/apappascs/mcp-servers-hub - https://github.com/lobstercare/mcp-hub - https://mcpservers.com - https://www.agentmcp.ai - https://www.dextermcp.net/marketplace - https://glama.ai/mcp/servers - https://www.claudemcp.com/servers - https://mcpmarket.com/ - Meta directory: https://mastra.ai/mcp-registry-registry - OneMCP: https://onemcp.io/mcp-servers - News - https://mcpilled.com/ - Servers - Airtable - https://github.com/domdomegg/airtable-mcp-server - https://github.com/felores/airtable-mcp - Anki: https://github.com/scorzeth/anki-mcp-server - Apple: https://github.com/supermemoryai/apple-mcp - Asana: https://github.com/roychri/mcp-server-asana - Atlassian: - https://mcp.atlassian.com/v1/sse - MCP Server hosted by Atlassian - Documentation: https://www.atlassian.com/platform/remote-mcp-server - https://github.com/sooperset/mcp-atlassian - AWS - https://github.com/rishikavikondala/mcp-server-aws - https://github.com/aarora79/aws-cost-explorer-mcp-server - https://github.com/baryhuang/mcp-server-aws-resources-python - https://github.com/aws-samples/sample-mcp-server-s3 - Bear: https://github.com/jkawamoto/mcp-bear - Blender: https://github.com/ahujasid/blender-mcp - Bluesky: https://github.com/keturiosakys/bluesky-context-server - Brave Search: https://github.com/modelcontextprotocol/servers/tree/main/src/brave-search - Browser tools: https://github.com/AgentDeskAI/browser-tools-mcp - Browserbase: https://github.com/browserbase/mcp-server-browserbase - Chat summary: https://github.com/chatmcp/mcp-server-chatsum - Claude Code: https://github.com/auchenberg/claude-code-mcp - Clojure: https://github.com/bhauman/clojure-mcp - Cloudflare: https://developers.cloudflare.com/agents/model-context-protocol/mcp-servers-for-cloudflare - MCP Servers hosted by Cloudflare - Context: https://github.com/cyberchitta/llm-context.py - [[Deepseek]]: https://github.com/66julienmartin/MCP-server-Deepseek_R1 - DevTools: https://developer.chrome.com/blog/chrome-devtools-mcp - Discord: https://github.com/v-3/discordmcp - Discourse: https://github.com/AshDevFr/discourse-mcp-server - Docker: https://github.com/ckreiling/mcp-server-docker - [[ElevenLabs]]: https://github.com/mamertofabian/elevenlabs-mcp-server - Excel: https://github.com/haris-musa/excel-mcp-server - Fetch: https://github.com/modelcontextprotocol/servers/tree/main/src/fetch - Figma - https://www.figma.com/blog/design-context-everywhere-you-build/ - https://github.com/GLips/Figma-Context-MCP - https://github.com/sonnylazuardi/cursor-talk-to-figma-mcp - Firebase: https://github.com/gannonh/firebase-mcp - Ghost: https://github.com/MFYDev/ghost-mcp - GitHub Actions: https://github.com/ko1ynnky/github-actions-mcp-server - GMail - https://github.com/GongRzhe/Gmail-MCP-Server - https://github.com/baryhuang/mcp-headless-gmail - [[Godot]]: https://github.com/Coding-Solo/godot-mcp - Google Calendar - https://github.com/v-3/google-calendar - https://github.com/nspady/google-calendar-mcp - Google Maps: https://github.com/modelcontextprotocol/servers/tree/main/src/google-maps - Google Tasks: https://github.com/arpitbatra123/mcp-googletasks - Home Assistant - https://github.com/tevonsb/homeassistant-mcp - https://github.com/voska/hass-mcp - Intercom: https://mcp.intercom.com/sse - Documentation: https://developers.intercom.com/docs/guides/mcp - Invideo: https://mcp.invideo.io/sse - Documentation: https://invideo.io/ai/mcp/ - Jetbrains: https://github.com/JetBrains/mcp-jetbrains - JSON: https://github.com/GongRzhe/JSON-MCP-Server - [[just-prompt MCP server]]: MCP server that can be used to prompt different LLMs from the current one - LM Studio: https://github.com/infinitimeless/LMStudio-MCP - Enables connecting LLMs to [[LM Studio]] and models running with it - LogSeq: https://glama.ai/mcp/servers/0mdgzmmv3r - Markdownify: https://github.com/zcaceres/markdownify-mcp - [[Model Context Protocol (MCP)]] - Create MCP servers: https://github.com/tesla0225/mcp-create - Discover MCP servers: https://github.com/liuyoshio/mcp-compass - Install MCP servers: https://github.com/anaisbetts/mcp-installer - Meilisearch: https://github.com/meilisearch/meilisearch-mcp - Memory: https://github.com/modelcontextprotocol/servers/tree/main/src/memory - Memory Mesh: [https://github.com/CheMiguel23/MemoryMesh](https://github.com/CheMiguel23/MemoryMesh) - Mindmap: https://github.com/YuChenSSR/mindmap-mcp-server - [[n8n]]: https://github.com/leonardsellem/n8n-mcp-server - [[Neo4J]]: https://github.com/neo4j-contrib/mcp-neo4j/ - [[Notion]] - https://github.com/danhilse/notion_mcp - https://github.com/suekou/mcp-notion-server - https://github.com/v-3/notion-server - https://github.com/arre-ankit/notion-mcp-server - https://github.com/akira-papa/akirapapa-mcp-notion-server - https://github.com/badhansen/notion-mcp - [[Obsidian]] - https://github.com/calclavia/mcp-obsidian - https://github.com/MarkusPfundstein/mcp-obsidian - https://github.com/smithery-ai/mcp-obsidian - https://github.com/StevenStavrakis/obsidian-mcp - https://github.com/kazuph/mcp-obsidian - https://github.com/cyanheads/obsidian-mcp-server - https://github.com/Rwb3n/obsidian-mcp - https://github.com/jacksteamdev/obsidian-mcp-tools - [[Ollama]]: https://github.com/emgeee/mcp-ollama - OneNote: https://github.com/rajvirtual/MCP-Servers/tree/master/onenote - OpenAI: https://github.com/snaggle-ai/openapi-mcp-server - [[OpenRouter]]: - [[openrouterai OpenRouter MCP Server]] - https://github.com/stabgan/openrouter-mcp-multimodal - [[Pandoc]]: https://github.com/vivekVells/mcp-pandoc - Paypal: https://mcp.paypal.com/sse - Documentation: https://developer.paypal.com/tools/mcp-server/ - [[Perplexity]]: https://github.com/ppl-ai/modelcontextprotocol - Playwright: https://github.com/microsoft/playwright-mcp - Puppeteer: https://github.com/modelcontextprotocol/servers/tree/main/src/puppeteer - Python: https://github.com/jlowin/fastmcp - Readwise - https://github.com/readwiseio/readwise-mcp - https://www.npmjs.com/package/@readwise/readwise-mcp - https://www.npmjs.com/package/@readwise/readwise-mcp - Reasoner: https://github.com/Jacck/mcp-reasoner - Redis - https://github.com/GongRzhe/REDIS-MCP-Server - https://github.com/prajwalnayak7/mcp-server-redis - [[Replicate.com]]: https://github.com/deepfates/mcp-replicate - Roam: https://github.com/2b3pro - Sentry: https://mcp.sentry.dev/sse - Documentation: https://docs.sentry.io/product/sentry-mcp/ - Sequential Thinking: https://github.com/modelcontextprotocol/servers/tree/main/src%2Fsequentialthinking - Explanations: https://x.com/combdn/status/1865031688629187030 - ServiceNow: https://github.com/osomai/servicenow-mcp - SMS: https://github.com/teddyzxcv/ntfy-mcp - Spotify - https://github.com/varunneal/spotify-mcp - https://github.com/superseoworld/mcp-spotify - Tana - https://github.com/tim-mcdonnell/tana-mcp - Telegram: https://github.com/kfastov/telegram-mcp-server - TicketMaster: https://github.com/delorenj/mcp-server-ticketmaster - TMDB: https://github.com/Laksh-star/mcp-server-tmdb - Todoist: https://github.com/chrusic/todoist-mcp-server-extended - WhatsApp: https://github.com/lharries/whatsapp-mcp - Windows (PowerShell, Bash): https://github.com/SimonB97/win-cli-mcp-server - Windows (OS control): https://github.com/claude-did-this/MCPControl - X - https://github.com/EnesCinr/twitter-mcp - https://github.com/vidhupv/x-mcp - YouTube: https://github.com/ZubeidHendricks/youtube-mcp-server - Zapier: https://zapier.com/mcp - [[Zotero]]: https://github.com/kaliaboi - Docker - Containerized versions of hundreds of MCP servers: https://github.com/metorial/mcp-containers - Tools - Manage and protect MCP servers - [[Toolbase]] - [[Dockmaster]] - [[Highlight AI]] - [[OneMCP]] - [[Smithery]] - [[MCP-Get]] - [[mcptools]] - https://github.com/eqtylab/mcp-guardian - https://github.com/anaisbetts/mcp-installer - https://github.com/wong2/mcp-cli - https://github.com/adhikasp/mcp-client-cli - https://github.com/zueai/mcp-manager - https://github.com/Jeamee/MCPHub-Desktop - MCP Proxies/Bridges - https://github.com/sparfenyuk/mcp-proxy - https://github.com/SecretiveShell/MCP-Bridge - https://github.com/dgellow/mcp-front: OAuth 2.1 proxy for MCP servers. Add authentication to MCP tools for Claude - MCP Cloud (Remote MCP servers): https://getflow.dev - [[Claude MCP Browser Extension]]: integrate MCP with [[Claude]]'s Web UI - [[Browser MCP]]: drive your Web browser using any [[Large Language Models (LLMs)|Large Language Model (LLM)]] through MCP - Connect any LLM to any MCP server: https://github.com/mcp-use/mcp-use - Constraint, log & scan your MCP connections for security vulnerabilities: https://github.com/invariantlabs-ai/mcp-scan - Courses & Tutorials - Open Source Microsoft Course about MCP: https://github.com/microsoft/mcp-for-beginners - Model Context Protocol talk by Mahesh Murag, member of [[Anthropic]]'s technical staff: https://www.youtube.com/watch?v=kQmXtrmQ5Zg - https://huggingface.co/learn/mcp-course/en/unit0/introduction - https://www.youtube.com/watch?v=5CmAKm1wWW0 - https://www.youtube.com/watch?v=8mU2OeOCIrE - https://www.youtube.com/watch?v=VNb4tGAHgos - https://johnmaeda.medium.com/claude-mcp-first-run-be-sure-to-choose-settings-from-the-menubar-to-save-yourself-time-fa457ad37582 - https://medium.com/@LakshmiNarayana_U/exploring-model-context-protocol-mcp-with-claude-desktop-simplifying-ai-integration-e447087f95a1 - https://www.tomsguide.com/ai/claude-desktop-can-now-browse-the-internet-and-manage-files-on-your-computer-heres-whats-new - https://www.reddit.com/r/ClaudeAI/comments/1h06uec/with_mcp_claude_can_now_work_directly_with_local/ - Usage on Windows - https://github.com/modelcontextprotocol/servers/issues/75 - https://gist.github.com/feveromo/7a340d7795fca1ccd535a5802b976e1f - Best practices - https://steipete.me/posts/2025/mcp-best-practices - Communities - Reddit - https://www.reddit.com/r/mcp - https://www.reddit.com/r/modelcontextprotocol - Discord - https://discord.com/invite/TFE8FmjCdS - X - https://x.com/i/communities/1861891349609603310 - Future - Official MCP registry: https://youtu.be/kQmXtrmQ5Zg?t=4921 ## Related - [[Desktop Extensions for MCP]] - [[Context7]] - [[Model Context Protocol Registry]] - [[MCP Gateway Registry]] - [[Azure API Center]] - [[Docker MCP Catalog]] - [[Docker MCP Gateway]] - [[Agentic Resource Discovery Specification (ARD)]] - [[Agent2Agent Protocol (A2A)]]