Introducing The Model Context Protocol
Anthropic has open-sourced the Model Context Protocol (MCP) to enhance AI assistants' integration with data systems, improving response relevance and enabling developers to create secure connections and build connectors.
Read original articleAnthropic has announced the open-sourcing of the Model Context Protocol (MCP), a new standard designed to connect AI assistants with various data systems, including content repositories and business tools. The MCP aims to enhance the relevance and quality of responses generated by AI models, which often struggle due to isolation from data sources. By providing a universal protocol, MCP simplifies the integration process, allowing developers to create secure, two-way connections between their data and AI tools. Key components of MCP include the protocol specification, local server support in Claude Desktop apps, and an open-source repository for MCP servers. Early adopters like Block and Apollo have already integrated MCP, while development tool companies are collaborating to improve their platforms. This initiative is expected to streamline the development process, enabling AI systems to maintain context across different tools and datasets. Developers can begin building MCP connectors immediately, with resources available for testing and implementation. The project emphasizes collaboration and community involvement, inviting feedback from AI tool developers and enterprises.
- Anthropic has open-sourced the Model Context Protocol (MCP) to connect AI assistants with data systems.
- MCP aims to improve AI response relevance by providing a universal integration standard.
- Key features include protocol specifications, local server support, and an open-source repository.
- Early adopters and development tool companies are already integrating MCP into their systems.
- Developers can start building MCP connectors and contribute to the open-source project.
Related
Anthropic publishes the 'system prompts' that make Claude tick
Anthropic has published system prompts for its Claude AI models to enhance transparency, outlining their capabilities and limitations, and positioning itself as an ethical player in the AI industry.
Claude for Enterprise
Anthropic launched the Claude Enterprise plan to improve collaboration and data security, featuring a 500K context window, key security measures, GitHub integration, and positive feedback from early adopters.
Initial explorations of Anthropic's new Computer Use capability
Anthropic has launched the Claude 3.5 Sonnet model and a "computer use" API mode, enhancing desktop interaction with coordinate support while addressing safety concerns and performance improvements in coding tasks.
GitHub cuts AI deals with Google, Anthropic
Microsoft's GitHub is integrating AI models from Google and Anthropic into GitHub Copilot, enhancing its coding assistance capabilities for users through chat and question-answering features.
Claude AI to process secret government data through new Palantir deal
Anthropic has partnered with Palantir and AWS to deploy Claude AI in U.S. defense, raising ethical concerns about military applications and the company's commitment to ethical AI development amid criticism.
- Many developers appreciate the potential for standardization and integration of AI tools, reducing fragmentation in the ecosystem.
- Concerns have been raised about the complexity of implementation and the lack of clear documentation, making it difficult for some users to understand how to utilize MCP effectively.
- There is skepticism regarding the protocol's ability to handle authentication and authorization for secure data access.
- Some users express confusion about how MCP differs from existing solutions like OpenAPI and function calling libraries.
- Overall, there is a mix of excitement for the possibilities MCP offers and caution about its practical application and adoption in the industry.
We’re building an in terminal coding agent and our next step was to connect to external services like sentry and github where we would also be making a bespoke integration or using a closed source provider. We appreciate that they have mcp integrations already for those services. Thanks Anthropic!
I guess I can do this for my local file system now?
I also wonder if I build an LLM powered app, and currently simply to RAG and then inject the retrieved data into my prompts, should this replace it? Can I integrate this in a useful way even?
The use case of on your machine with your specific data, seems very narrow to me right now, considering how many different context sources and use cases there are.
I appreciate the design which left the implementation of servers to the community which doesn't lock you into any particular implementation, as the protocol seems to be aiming to primarily solve the RPC layer.
One major value add of MCP I think is a capability extension to a vast amount of AI apps.
In the "Protocol Handshake" section of what's happening under the hood - it would be great to have more info on what's actually happening.
For example, more details on what's actually happening to translate the natural language to a DB query. How much config do I need to do for this to work? What if the queries it makes are inefficient/wrong and my database gets hammered - can I customise them? How do I ensure sensitive data isn't returned in a query?
https://sourcegraph.com/blog/cody-supports-anthropic-model-c...
You need to know:
1. The claude_desktop_config.json needs a top-level mcpServer key, as described here: https://github.com/modelcontextprotocol/servers/pull/46/comm...
2. If you did this correctly the, after you run Claude Desktop, you should see a small 'hammer' icon (with a number next to it) next to the labs icon, in the bottom right of the 'How can Claude help you today?' box.
https://modelcontextprotocol.io/docs/concepts/sampling
It's crazy. Sadly not yet implemented in Claude Desktop client.
Open API (aka swagger) based function calling is standard already for sync calls, and it solves the NxM problem. I'm wondering if the proposed value is that MCP is async.
It’s basically a standardized way to wrap you Openapi client with a standard tool format then plug it in to your locally running AI tool of choice.
The Core architecture [1] documentation is given in terms of TypeScript or Python abstractions, adding a lot of unnecessary syntactic noise for someone who doesn't use these languages. Very thin on actual conceptual explanation and full of irrelevant implementation details.
The 'Your first server'[2] tutorial is given in terms of big chunks of python code, with no explanation whatsoever, eg:
Add these tool-related handlers:
...100 lines of undocumented code...
The code doesn't even compile.
I don't think this is ready for prime time yet so I'll move along for now.[1] https://modelcontextprotocol.io/docs/concepts/architecture [2] https://modelcontextprotocol.io/docs/first-server/python
It appears that clients retrieve prompts from a server to hydrate them with context only, to then execute/complete somewhere else (like Claude Desktop, using Anthropic models). The server doesn’t know how effective the prompt will be in the model that the client has access to. It doesn’t even know if the client is a chat app, or Zed code completion.
In the sampling interface - where the flow is inverted, and the server presents a completion request to the client - it can suggest that the client uses some model type /parameters. This makes sense given only the server knows how to do this effectively.
Given the server doesn’t understand the capabilities of the client, why the asymmetry in these related interfaces?
There’s only one server example that uses prompts (fetch), and the one prompt it provides returns the same output as the tool call, except wrapped in a PromptMessage. EDIT: lols like there are some capabilities classes in the mcp, maybe these will evolve.
https://github.com/rusiaaman/wcgw/blob/main/src/wcgw/client/...
Already getting value out of it.
Curious:
1. Authentication and authorization is left as a TODO: what is the thinking, as that is necessary for most use?
2. Ultimately, what does MCP already add or will add that makes it more relevant than OpenApI / a pattern on top?
Now let's see a similar abstraction on the client side - a unified way of connecting your assistant to Slack, Discord, Telegram, etc.
Required for
- corporate data sources, e g. Salesforce
- APIs with key limits and non-trivial costs
- personal data sources e.g. email
It appears that all auth is packed into the MCP config, e.g. slack token: https://github.com/modelcontextprotocol/servers/tree/main/sr...
Is there any good arch diagram for one of the examples of how this protocol may be used?
I couldn’t find one easily…
So does the entire db get fed into the context? Or is there another layer in between. What if the database is huge, and you want to ask the AI for the most expensive or best selling items? With RAG that was only vaguely possible and didnt work very well.
Sorry I am a bit new but trying to learn more.
the docs aren't super clear yet wrt. how one might actually implement the connection. do we need to implement another set of tools to provide to the API and then have that tool call the MCP server? maybe i'm missing something here?
Has OpenCtx ever gained much traction?
tl;dr—you can build & ship a CLI without needing an API. Just drop Terminalwire into your server, have your users install the thin client, and you’ve got a CLI.
I’m currently focused on getting the distribution and development experience dialed in, which is why I’m working mostly with Rails deployments at the moment, but I’m open to working with large customers who need to ship a CLI yesterday in any language or runtime.
If you need something like this check it out at https://terminalwire.com or ping me brad@terminalwire.com.
One thing that some people may not realize is that right now there's a MASSIVE amount of effort duplication around developing something that could maybe end up looking like MCP. Everyone building an LLM agent (or pseudo-agent, or whatever) right now is writing a bunch of boilerplate for mapping between message formats, tool specification formats, prompt templating, etc.
Now, having said that, I do feel a little bit like there's a few mistakes being made by Anthropic here. The big one to me is that it seems like they've set the scope too big. For example, why are they shipping standalone clients and servers rather than client/server libraries for all the existing and wildly popular ways to fetch and serve HTTP? When I've seen similar mistakes made (e.g. by LangChain), I assume they're targeting brand new developers who don't realize that they just want to make some HTTP calls.
Another thing that I think adds to the confusion is that, while the boilerplate-ish stuff I mentioned above is annoying, what's REALLY annoying and actually hard is generating a series of contexts using variations of similar prompts in response to errors/anomalies/features detected in generated text. IMO this is how I define "prompt engineering" and it's the actual hard problem we have to solve. By naming the protocol the Model Context Protocol, I assumed they were solving prompt engineering problems (maybe by standardizing common prompting techniques like ReAct, CoT, etc).
I think I have a complete picture.
Here is a quickstart for anyone who is just getting into it.
https://glama.ai/blog/2024-11-25-model-context-protocol-quic...
“”” You may not access or use, or help another person to access or use, our Services in the following ways: … To develop any products or services that compete with our Services, including to develop or train any artificial intelligence or machine learning algorithms or models. “””
I can see the value of something like DSPy where there is some higher level abstractions in wiring together a system of llms.
But this seems like an abstraction that doesn't really offer much besides "function calling but you use our python code".
I see the value of language server protocol but I don't see the mapping to this piece of code.
That's actually negative value if you are integrating into an existing software system or just you know... exposing functions that you've defined vs remapping functions you've defined into this intermediate abstraction.
This level of generality has been attempted before (e.g. RDF and the semantic web, REST, SOAP) and I'm not sure what's fundamentally different about how this problem is framed that makes it more tractable.
Related
Anthropic publishes the 'system prompts' that make Claude tick
Anthropic has published system prompts for its Claude AI models to enhance transparency, outlining their capabilities and limitations, and positioning itself as an ethical player in the AI industry.
Claude for Enterprise
Anthropic launched the Claude Enterprise plan to improve collaboration and data security, featuring a 500K context window, key security measures, GitHub integration, and positive feedback from early adopters.
Initial explorations of Anthropic's new Computer Use capability
Anthropic has launched the Claude 3.5 Sonnet model and a "computer use" API mode, enhancing desktop interaction with coordinate support while addressing safety concerns and performance improvements in coding tasks.
GitHub cuts AI deals with Google, Anthropic
Microsoft's GitHub is integrating AI models from Google and Anthropic into GitHub Copilot, enhancing its coding assistance capabilities for users through chat and question-answering features.
Claude AI to process secret government data through new Palantir deal
Anthropic has partnered with Palantir and AWS to deploy Claude AI in U.S. defense, raising ethical concerns about military applications and the company's commitment to ethical AI development amid criticism.