[{"data":1,"prerenderedAt":75},["ShallowReactive",2],{"wiki-mcp-what-is-mcp-en":3},{"meta":4,"html":8,"headings":9,"words":74},{"title":5,"description":6,"published":7,"updated":7},"What is MCP (Model Context Protocol)","MCP is an open protocol that connects AI applications to tools and data. Architecture, primitives, transports, the 2026-07-28 specification and security.","2026-11-03","\u003Cp>The \u003Cstrong>Model Context Protocol (MCP)\u003C/strong> is an open protocol that standardizes how AI applications connect to external tools, data sources and services. An application that supports MCP can work with any MCP server, whether it gives access to a file system, a database, a bug tracker or a payment API, without a separate integration for each pair of application and service.\u003C/p>\n\u003Cp>MCP was introduced by Anthropic in November 2024. Since December 2025 the protocol has been developed under the Agentic AI Foundation, part of the Linux Foundation. The current version of the specification is \u003Cstrong>2026-07-28\u003C/strong>.\u003C/p>\n\u003Ch2 id=\"overview\" class=\"wiki-heading\">Overview\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"overview\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cdiv class=\"wiki-table wiki-table--cols-2\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Property\u003C/th>\n\u003Cth>Value\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Type\u003C/td>\n\u003Ctd>Open application-level protocol, client-server\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Message format\u003C/td>\n\u003Ctd>JSON-RPC 2.0\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Transports\u003C/td>\n\u003Ctd>stdio for local servers, Streamable HTTP for remote servers\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Server primitives\u003C/td>\n\u003Ctd>Tools, resources, prompts\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Current specification\u003C/td>\n\u003Ctd>2026-07-28\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Governance\u003C/td>\n\u003Ctd>Agentic AI Foundation (Linux Foundation) since December 2025\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Official SDKs\u003C/td>\n\u003Ctd>TypeScript, Python, Go, C# (Tier 1); also Java, Kotlin, Rust, Swift, PHP and others\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Ch2 id=\"the-problem-mcp-solves\" class=\"wiki-heading\">The problem MCP solves\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"the-problem-mcp-solves\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>A language model only works with the text it receives. To read a file, query a database or create a ticket, the model needs an application that calls external systems on its behalf and puts the results back into the model's context. Model providers support this through \u003Cstrong>function calling\u003C/strong> (also called tool use): the application describes functions with JSON Schema, the model returns a request to call one of them, and the application executes the call.\u003C/p>\n\u003Cp>Function calling defines how the model asks for a call. It does not define where the tools come from. Before MCP, every AI application had its own plugin or integration format, so the integration with a given service was written separately for each application. With N applications and M services this means up to N × M integrations, each with its own code, authentication and maintenance.\u003C/p>\n\u003Cp>MCP replaces this with a single contract. A service implements an MCP server once, an application implements an MCP client once, and any compatible pair works together: N + M implementations instead of N × M.\u003C/p>\n\u003Cp>The idea comes from the \u003Cstrong>Language Server Protocol (LSP)\u003C/strong>, which solved the same problem for code editors and programming languages: one language server works in every editor that supports LSP. MCP reuses the LSP approach to message flow and the same message format, JSON-RPC 2.0.\u003C/p>\n\u003Ch2 id=\"history\" class=\"wiki-heading\">History\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"history\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cdiv class=\"wiki-table wiki-table--cols-2\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Date\u003C/th>\n\u003Cth>Event\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>25 November 2024\u003C/td>\n\u003Ctd>Anthropic publishes MCP as an open standard, with SDKs for Python and TypeScript and a set of reference servers. The authors are David Soria Parra and Justin Spahr-Summers\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>March 2025\u003C/td>\n\u003Ctd>Specification 2025-03-26: the Streamable HTTP transport and authorization based on OAuth 2.1. OpenAI adopts MCP, starting with its Agents SDK\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>April 2025\u003C/td>\n\u003Ctd>Google announces MCP support for Gemini models and the Gemini SDK\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>May 2025\u003C/td>\n\u003Ctd>Microsoft announces MCP support across its platforms at Build 2025\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>June 2025\u003C/td>\n\u003Ctd>Specification 2025-06-18: structured tool output and elicitation\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>September 2025\u003C/td>\n\u003Ctd>Preview of the official MCP Registry\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>November 2025\u003C/td>\n\u003Ctd>Specification 2025-11-25: experimental tasks, OAuth Client ID Metadata Documents\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>December 2025\u003C/td>\n\u003Ctd>Anthropic transfers MCP to the Agentic AI Foundation (AAIF), a directed fund of the Linux Foundation co-founded by Anthropic, Block and OpenAI\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>January 2026\u003C/td>\n\u003Ctd>MCP Apps, the first official extension: interactive interfaces delivered by MCP servers\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>28 July 2026\u003C/td>\n\u003Ctd>Specification 2026-07-28: the protocol core becomes stateless\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Ch2 id=\"architecture\" class=\"wiki-heading\">Architecture\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"architecture\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Ch3 id=\"participants\" class=\"wiki-heading\">Participants\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"participants\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>MCP has three roles:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Host\u003C/strong> is the AI application the user works with: a chat assistant, an IDE, an agent. The host runs the conversation with the model and decides what the model is allowed to do. Examples are Claude Desktop, Claude Code, Visual Studio Code and ChatGPT.\u003C/li>\n\u003Cli>\u003Cstrong>Client\u003C/strong> is a component inside the host that maintains the connection to one MCP server. The host creates a separate client for every server it connects to.\u003C/li>\n\u003Cli>\u003Cstrong>Server\u003C/strong> is a program that provides context and actions: tools, data, prompt templates. A server can wrap a file system, a database, a SaaS API or an internal company service.\u003C/li>\n\u003C/ul>\n\u003Cdiv class=\"wiki-code wiki-code--plain\">\u003Cpre>\u003Ccode>Host (AI application)\n |\n +-- MCP client 1 --- stdio ------------- MCP server: file system (local)\n +-- MCP client 2 --- stdio ------------- MCP server: database (local)\n +-- MCP client 3 --- Streamable HTTP --- MCP server: bug tracker (remote)\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>The model does not connect to servers. It sees the descriptions of the available tools in its context and returns a request to call one of them. The host decides whether to execute the request, sends it through the right client and returns the result to the model. Control over what the model can do stays with the host and the user.\u003C/p>\n\u003Cp>A server that runs as a process on the user's machine is called \u003Cstrong>local\u003C/strong>. A server that runs as a network service is called \u003Cstrong>remote\u003C/strong>. A local server usually serves one client; a remote server serves many.\u003C/p>\n\u003Ch3 id=\"layers\" class=\"wiki-heading\">Layers\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"layers\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>The protocol has two layers:\u003C/p>\n\u003Cul>\n\u003Cli>The \u003Cstrong>data layer\u003C/strong> defines JSON-RPC 2.0 messages and their meaning: discovery, primitives, notifications, errors.\u003C/li>\n\u003Cli>The \u003Cstrong>transport layer\u003C/strong> defines how messages are delivered: connection, message framing, authorization.\u003C/li>\n\u003C/ul>\n\u003Cp>The same JSON-RPC messages travel over any transport, so the logic of a server does not depend on how it is deployed.\u003C/p>\n\u003Ch2 id=\"primitives\" class=\"wiki-heading\">Primitives\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"primitives\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>Primitives are what the two sides offer each other. The specification defines three server primitives:\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-4\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Primitive\u003C/th>\n\u003Cth>What it is\u003C/th>\n\u003Cth>Who decides to use it\u003C/th>\n\u003Cth>Methods\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Tools\u003C/td>\n\u003Ctd>Functions that perform actions: query a database, create a ticket, call an external API\u003C/td>\n\u003Ctd>The model, with the permission of the host\u003C/td>\n\u003Ctd>\u003Ccode>tools/list\u003C/code>, \u003Ccode>tools/call\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Resources\u003C/td>\n\u003Ctd>Data that adds context: file contents, database records, documents. Each resource is identified by a URI\u003C/td>\n\u003Ctd>The application\u003C/td>\n\u003Ctd>\u003Ccode>resources/list\u003C/code>, \u003Ccode>resources/read\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Prompts\u003C/td>\n\u003Ctd>Reusable instruction templates for the model, often with parameters\u003C/td>\n\u003Ctd>The user, for example through a slash command\u003C/td>\n\u003Ctd>\u003Ccode>prompts/list\u003C/code>, \u003Ccode>prompts/get\u003C/code>\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>A tool is described by a name, a human-readable title, a description and a JSON Schema of its input parameters (\u003Ccode>inputSchema\u003C/code>). A tool can also declare the schema of its result (\u003Ccode>outputSchema\u003C/code>). The model chooses a tool and fills in its arguments based on the name, the description and the schema. The text of descriptions is therefore part of the interface: an inaccurate description leads to wrong or missed calls even when the code of the tool is correct.\u003C/p>\n\u003Cp>The client side offers primitives that let a server ask the host for something:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Elicitation\u003C/strong>: the server asks the user for additional input or for confirmation, for example a missing parameter or approval of an action (\u003Ccode>elicitation/create\u003C/code>).\u003C/li>\n\u003Cli>\u003Cstrong>Sampling\u003C/strong> (deprecated in 2026-07-28): the server asks the client's model to generate a completion (\u003Ccode>sampling/createMessage\u003C/code>). New implementations call model provider APIs directly.\u003C/li>\n\u003Cli>\u003Cstrong>Roots\u003C/strong> (deprecated): the client tells the server which directories it may work with. Paths are now passed as tool parameters or in the server configuration.\u003C/li>\n\u003Cli>\u003Cstrong>Logging\u003C/strong> (deprecated): log messages from the server to the client. Replaced by standard error output for \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"stdio\">stdio\u003C/span> servers and by OpenTelemetry.\u003C/li>\n\u003C/ul>\n\u003Cp>A deprecated feature keeps working for at least twelve months. This minimum period is part of the formal deprecation policy introduced in 2026-07-28.\u003C/p>\n\u003Cp>The protocol also defines utilities: notifications, progress reporting for long operations, cancellation, pagination of lists and \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"caching-hints\">caching hints\u003C/span> for list results. Each server primitive is described in a separate article: \u003Ca href=\"/en/wiki/mcp/mcp-tools\" class=\"wiki-link wiki-link--article\">tools\u003C/a>, \u003Ca href=\"/en/wiki/mcp/mcp-resources\" class=\"wiki-link wiki-link--article\">resources and resource templates\u003C/a>, \u003Ca href=\"/en/wiki/mcp/mcp-prompts\" class=\"wiki-link wiki-link--article\">prompts\u003C/a>.\u003C/p>\n\u003Ch2 id=\"how-a-request-works\" class=\"wiki-heading\">How a request works\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"how-a-request-works\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Ch3 id=\"discovery\" class=\"wiki-heading\">Discovery\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"discovery\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>Since 2026-07-28 MCP is stateless: every request contains everything the server needs to process it. The protocol version, the identity of the client and its capabilities travel in the \u003Ccode>_meta\u003C/code> field of each request.\u003C/p>\n\u003Cp>To learn what a server supports, the client can send \u003Ccode>server/discover\u003C/code>. Every server must implement this method; the client may skip it and send other requests directly.\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"json\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">JSON\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Copied\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Copy\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Copied\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>{\n  &quot;jsonrpc&quot;: &quot;2.0&quot;,\n  &quot;id&quot;: 1,\n  &quot;method&quot;: &quot;server/discover&quot;,\n  &quot;params&quot;: {\n    &quot;_meta&quot;: {\n      &quot;io.modelcontextprotocol/protocolVersion&quot;: &quot;2026-07-28&quot;,\n      &quot;io.modelcontextprotocol/clientInfo&quot;: { &quot;name&quot;: &quot;example-client&quot;, &quot;version&quot;: &quot;1.0.0&quot; },\n      &quot;io.modelcontextprotocol/clientCapabilities&quot;: { &quot;elicitation&quot;: {} }\n    }\n  }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>The response lists the supported protocol versions and the capabilities of the server, and it can be cached:\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"json\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">JSON\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Copied\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Copy\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Copied\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>{\n  &quot;jsonrpc&quot;: &quot;2.0&quot;,\n  &quot;id&quot;: 1,\n  &quot;result&quot;: {\n    &quot;resultType&quot;: &quot;complete&quot;,\n    &quot;supportedVersions&quot;: [&quot;2026-07-28&quot;],\n    &quot;capabilities&quot;: { &quot;tools&quot;: { &quot;listChanged&quot;: true }, &quot;resources&quot;: {} },\n    &quot;_meta&quot;: {\n      &quot;io.modelcontextprotocol/serverInfo&quot;: { &quot;name&quot;: &quot;example-server&quot;, &quot;version&quot;: &quot;1.0.0&quot; }\n    },\n    &quot;ttlMs&quot;: 3600000,\n    &quot;cacheScope&quot;: &quot;public&quot;\n  }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>If the server does not support the requested version, it rejects the request with \u003Ccode>UnsupportedProtocolVersionError\u003C/code> and the list of versions it supports. The client then repeats the request with a version both sides support.\u003C/p>\n\u003Ch3 id=\"calling-a-tool\" class=\"wiki-heading\">Calling a tool\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"calling-a-tool\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>A typical cycle looks like this:\u003C/p>\n\u003Col>\n\u003Cli>The host requests the list of tools from each connected server (\u003Ccode>tools/list\u003C/code>) and adds their descriptions to the model's context.\u003C/li>\n\u003Cli>The user asks a question. The model decides that a tool is needed and returns a call with arguments.\u003C/li>\n\u003Cli>The host checks permissions, asks the user for confirmation if needed, and sends \u003Ccode>tools/call\u003C/code> through the client of the corresponding server.\u003C/li>\n\u003Cli>The server performs the action and returns the result as a \u003Ccode>content\u003C/code> array: text, images, links to resources, structured data.\u003C/li>\n\u003Cli>The host passes the result to the model, and the model continues its answer.\u003C/li>\n\u003C/ol>\n\u003Cp>The request and the response of step 3 and 4:\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"json\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">JSON\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Copied\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Copy\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Copied\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>{\n  &quot;jsonrpc&quot;: &quot;2.0&quot;,\n  &quot;id&quot;: 3,\n  &quot;method&quot;: &quot;tools/call&quot;,\n  &quot;params&quot;: {\n    &quot;name&quot;: &quot;weather_current&quot;,\n    &quot;arguments&quot;: { &quot;location&quot;: &quot;San Francisco&quot;, &quot;units&quot;: &quot;imperial&quot; },\n    &quot;_meta&quot;: {\n      &quot;io.modelcontextprotocol/protocolVersion&quot;: &quot;2026-07-28&quot;,\n      &quot;io.modelcontextprotocol/clientInfo&quot;: { &quot;name&quot;: &quot;example-client&quot;, &quot;version&quot;: &quot;1.0.0&quot; },\n      &quot;io.modelcontextprotocol/clientCapabilities&quot;: { &quot;elicitation&quot;: {} }\n    }\n  }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cdiv class=\"wiki-code\" data-language=\"json\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">JSON\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Copied\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Copy\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Copied\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>{\n  &quot;jsonrpc&quot;: &quot;2.0&quot;,\n  &quot;id&quot;: 3,\n  &quot;result&quot;: {\n    &quot;resultType&quot;: &quot;complete&quot;,\n    &quot;content&quot;: [\n      { &quot;type&quot;: &quot;text&quot;, &quot;text&quot;: &quot;Current weather in San Francisco: 68°F, partly cloudy&quot; }\n    ]\n  }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>An error that occurs while a tool runs is returned inside the result with \u003Ccode>isError: true\u003C/code>, so the model sees it and can correct the call. \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"protocol-error\">Protocol errors\u003C/span>, such as an unknown method or invalid parameters, are returned as JSON-RPC errors.\u003C/p>\n\u003Ch3 id=\"when-the-server-needs-more-input\" class=\"wiki-heading\">When the server needs more input\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"when-the-server-needs-more-input\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>In earlier versions a server could send a request to the client in the middle of processing, for example to ask the user a question. This required a long-lived connection to the same server instance.\u003C/p>\n\u003Cp>The 2026-07-28 specification replaces this with \u003Cstrong>Multi Round-Trip Requests (MRTR)\u003C/strong>. The server answers \u003Ccode>tools/call\u003C/code>, \u003Ccode>resources/read\u003C/code> or \u003Ccode>prompts/get\u003C/code> with a result of type \u003Ccode>input_required\u003C/code>. The result lists what the server needs in \u003Ccode>inputRequests\u003C/code> and can carry an opaque \u003Ccode>requestState\u003C/code>:\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"json\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">JSON\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Copied\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Copy\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Copied\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>{\n  &quot;jsonrpc&quot;: &quot;2.0&quot;,\n  &quot;id&quot;: 1,\n  &quot;result&quot;: {\n    &quot;resultType&quot;: &quot;input_required&quot;,\n    &quot;inputRequests&quot;: {\n      &quot;github_login&quot;: {\n        &quot;method&quot;: &quot;elicitation/create&quot;,\n        &quot;params&quot;: {\n          &quot;mode&quot;: &quot;form&quot;,\n          &quot;message&quot;: &quot;Please provide your GitHub username&quot;,\n          &quot;requestedSchema&quot;: {\n            &quot;type&quot;: &quot;object&quot;,\n            &quot;properties&quot;: { &quot;name&quot;: { &quot;type&quot;: &quot;string&quot; } },\n            &quot;required&quot;: [&quot;name&quot;]\n          }\n        }\n      }\n    },\n    &quot;requestState&quot;: &quot;AEAD-protected blob&quot;\n  }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>The client collects the answers, for example by asking the user, and repeats the original request with a new \u003Ccode>id\u003C/code>, the answers in \u003Ccode>inputResponses\u003C/code> and the unchanged \u003Ccode>requestState\u003C/code>. Any server instance can process the repeated request. Because \u003Ccode>requestState\u003C/code> passes through the client, the server must treat it as untrusted input and protect its integrity when it affects authorization or business logic.\u003C/p>\n\u003Ch3 id=\"notifications\" class=\"wiki-heading\">Notifications\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"notifications\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>A server can notify the client about changes, for example that its list of tools has changed (\u003Ccode>notifications/tools/list_changed\u003C/code>). Notifications are opt-in: the client opens a long-lived \u003Ccode>subscriptions/listen\u003C/code> stream and names the notification types it wants to receive. Delivery is best effort, so clients also request lists again from time to time.\u003C/p>\n\u003Cp>The results of \u003Ccode>tools/list\u003C/code>, \u003Ccode>prompts/list\u003C/code>, \u003Ccode>resources/list\u003C/code> and \u003Ccode>resources/read\u003C/code> carry caching hints: \u003Ccode>ttlMs\u003C/code> (how long the result stays fresh) and \u003Ccode>cacheScope\u003C/code> (who may reuse it). The specification recommends returning tools in a deterministic order, which keeps the model's prompt cache stable.\u003C/p>\n\u003Ch2 id=\"transports\" class=\"wiki-heading\">Transports\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"transports\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Ch3 id=\"stdio\" class=\"wiki-heading\">stdio\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"stdio\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>The host starts the server as a child process. Messages go through standard input and output as JSON-RPC, one message per line; standard error is used for logs. This transport is used for local servers: there is no network, and credentials come from the environment of the process, for example from environment variables.\u003C/p>\n\u003Ch3 id=\"streamable-http\" class=\"wiki-heading\">Streamable HTTP\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"streamable-http\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>The server is an HTTP endpoint. The client sends each message with an HTTP POST request. The server answers with JSON or opens a Server-Sent Events stream when it needs to send several messages, for example progress updates.\u003C/p>\n\u003Cp>Since 2026-07-28 requests carry headers with the method and the name of the tool, resource or prompt. Gateways, rate limiters and web application firewalls can route and meter traffic without parsing the JSON body:\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"http\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">HTTP\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Copied\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Copy\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Copied\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>POST /mcp HTTP/1.1\nContent-Type: application/json\nMCP-Protocol-Version: 2026-07-28\nMcp-Method: tools/call\nMcp-Name: search_issues\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>There is no protocol session and no \u003Ccode>Mcp-Session-Id\u003C/code> header, so a remote server can run behind a standard round-robin load balancer, without sticky sessions or shared session storage, including on serverless platforms.\u003C/p>\n\u003Cp>The older \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"http-sse-transport\">HTTP+SSE\u003C/span> transport from the first version of the specification is deprecated in favour of \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"streamable-http\">Streamable HTTP\u003C/span>. Both transports, their headers and requirements are described in the article \u003Ca href=\"/en/wiki/mcp/mcp-transports\" class=\"wiki-link wiki-link--article\">MCP transports\u003C/a>.\u003C/p>\n\u003Ch2 id=\"the-2026-07-28-specification\" class=\"wiki-heading\">The 2026-07-28 specification\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"the-2026-07-28-specification\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>The maintainers describe 2026-07-28 as the largest revision of the protocol since its launch. The main changes compared with 2025-11-25:\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-3\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Area\u003C/th>\n\u003Cth>Up to 2025-11-25\u003C/th>\n\u003Cth>2026-07-28\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Start of work\u003C/td>\n\u003Ctd>\u003Ccode>initialize\u003C/code> / \u003Ccode>initialized\u003C/code> handshake that opens a session\u003C/td>\n\u003Ctd>No handshake, every request is self-contained\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Session\u003C/td>\n\u003Ctd>\u003Ccode>Mcp-Session-Id\u003C/code> header\u003C/td>\n\u003Ctd>Removed\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Capabilities\u003C/td>\n\u003Ctd>Exchanged once during \u003Ccode>initialize\u003C/code>\u003C/td>\n\u003Ctd>Sent in \u003Ccode>_meta\u003C/code> of every request; \u003Ccode>server/discover\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Requests from server to client\u003C/td>\n\u003Ctd>Sent by the server during processing\u003C/td>\n\u003Ctd>Multi Round-Trip Requests\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Long-running operations\u003C/td>\n\u003Ctd>Experimental tasks in the core\u003C/td>\n\u003Ctd>Tasks extension \u003Ccode>io.modelcontextprotocol/tasks\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>HTTP routing\u003C/td>\n\u003Ctd>Method only inside the JSON body\u003C/td>\n\u003Ctd>\u003Ccode>Mcp-Method\u003C/code> and \u003Ccode>Mcp-Name\u003C/code> headers\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Lists\u003C/td>\n\u003Ctd>No caching hints\u003C/td>\n\u003Ctd>\u003Ccode>ttlMs\u003C/code>, \u003Ccode>cacheScope\u003C/code>, deterministic order of tools\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Deprecation\u003C/td>\n\u003Ctd>No formal policy\u003C/td>\n\u003Ctd>At least twelve months; roots, sampling and logging deprecated\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>The release also formalized \u003Cstrong>extensions\u003C/strong>: optional features that both client and server must support explicitly and that evolve outside the core protocol. Official extensions include:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Tasks\u003C/strong>: asynchronous execution of long operations. A tool returns a task handle; the client polls its status (\u003Ccode>tasks/get\u003C/code>) and retrieves the result later.\u003C/li>\n\u003Cli>\u003Cstrong>MCP Apps\u003C/strong>: interactive interfaces. A server links a tool to a \u003Ccode>ui://\u003C/code> resource, and the host renders it in a sandboxed iframe. Hosts without support fall back to text or structured data.\u003C/li>\n\u003Cli>\u003Cstrong>Enterprise-Managed Authorization\u003C/strong>: access to servers is provisioned by administrators through the company identity provider, and users are connected automatically when they sign in.\u003C/li>\n\u003C/ul>\n\u003Cp>The cost of migration falls mostly on servers that relied on session identifiers. State that an application needs between calls is passed explicitly: for example, a tool returns a handle, and the model passes it back as an argument of the next call. The changes and the migration from 2025-11-25 are described in the article \u003Ca href=\"/en/wiki/mcp/stateless-mcp\" class=\"wiki-link wiki-link--article\">Stateless MCP\u003C/a>, the extension mechanism and the official extensions in the article \u003Ca href=\"/en/wiki/mcp/mcp-extensions\" class=\"wiki-link wiki-link--article\">MCP extensions\u003C/a>.\u003C/p>\n\u003Ch2 id=\"security-and-authorization\" class=\"wiki-heading\">Security and authorization\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"security-and-authorization\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>Authorization in MCP is optional. For servers that use HTTP and require it, the specification defines authorization based on \u003Cstrong>OAuth 2.1\u003C/strong>. The MCP server acts as an OAuth resource server: the client obtains an access token from the \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"authorization-server\">authorization server\u003C/span> and sends it in the \u003Ccode>Authorization\u003C/code> header of every request. The server accepts only tokens issued for it. The 2026-07-28 specification adds requirements that close known attack paths:\u003C/p>\n\u003Cul>\n\u003Cli>the client must validate the issuer of the authorization response (\u003Ccode>iss\u003C/code>, RFC 9207) before redeeming an authorization code;\u003C/li>\n\u003Cli>client credentials are bound to the issuer that created them and cannot be reused with another authorization server;\u003C/li>\n\u003Cli>Dynamic Client Registration is deprecated in favour of \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"client-id-metadata-document\">Client ID Metadata Documents\u003C/span>.\u003C/li>\n\u003C/ul>\n\u003Cp>A server must not pass the token it received from the client on to other services (\u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"token-passthrough\">token passthrough\u003C/span> is forbidden): for calls to other APIs it obtains its own tokens. Servers that use stdio do not follow the OAuth flow and take credentials from the environment. The full flow is described in the article \u003Ca href=\"/en/wiki/mcp/mcp-authorization\" class=\"wiki-link wiki-link--article\">Authorization in MCP\u003C/a>.\u003C/p>\n\u003Cp>The specification requires hosts to obtain explicit user consent before invoking a tool and treats tool descriptions from untrusted servers as untrusted. Known classes of risks:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Tool poisoning\u003C/strong>: instructions hidden in tool descriptions, which the model reads and the user usually does not see. This is a form of \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"prompt-injection\">prompt injection\u003C/span>, described publicly in April 2025.\u003C/li>\n\u003Cli>\u003Cstrong>Prompt injection through data\u003C/strong>: text returned by a tool or a resource, such as a web page, an email or a ticket, can contain instructions addressed to the model.\u003C/li>\n\u003Cli>\u003Cstrong>Confused deputy\u003C/strong>: a proxy server with broad permissions performs an action for a user who should not have access to it.\u003C/li>\n\u003Cli>\u003Cstrong>Vulnerabilities in implementations\u003C/strong>: for example, CVE-2025-6514 in the \u003Ccode>mcp-remote\u003C/code> package (CVSS 9.6) allowed a malicious server to execute commands on the user's machine, and CVE-2025-49596 in MCP Inspector came from the lack of authentication by default.\u003C/li>\n\u003C/ul>\n\u003Cp>The risks and the measures against them are described in the article \u003Ca href=\"/en/wiki/mcp/mcp-security\" class=\"wiki-link wiki-link--article\">MCP security\u003C/a>.\u003C/p>\n\u003Ch2 id=\"ecosystem\" class=\"wiki-heading\">Ecosystem\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"ecosystem\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cul>\n\u003Cli>\u003Cstrong>SDKs.\u003C/strong> The Tier 1 SDKs (TypeScript, Python, Go and C#) supported 2026-07-28 at release. Official SDKs also exist for Java, Kotlin, Rust, Swift, PHP and other languages.\u003C/li>\n\u003Cli>\u003Cstrong>MCP Inspector\u003C/strong> is a developer tool that connects to a server, lists its primitives, calls tools and shows the messages. Its use in testing is described in the article \u003Ca href=\"/en/wiki/mcp/testing-mcp-servers\" class=\"wiki-link wiki-link--article\">Testing MCP servers\u003C/a>.\u003C/li>\n\u003Cli>\u003Cstrong>MCP Registry\u003C/strong> (\u003Ca href=\"https://registry.modelcontextprotocol.io\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">registry.modelcontextprotocol.io\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>) is the official catalog of publicly available servers, launched in preview in September 2025. It stores metadata, not code: each entry is a \u003Ccode>server.json\u003C/code> file with a unique name in reverse-DNS form (such as \u003Ccode>io.github.user/server-name\u003C/code>) and the location of the package in npm, PyPI, Docker Hub or the address of a remote server. The registry API is open, so companies can run their own private registries in the same format. Publishing a server is described in the article \u003Ca href=\"/en/wiki/mcp/publishing-to-mcp-registry\" class=\"wiki-link wiki-link--article\">Publishing an MCP server to the MCP Registry\u003C/a>.\u003C/li>\n\u003Cli>\u003Cstrong>Hosts.\u003C/strong> MCP is supported by Claude, ChatGPT, Visual Studio Code, Cursor and many other AI applications and agent frameworks.\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"mcp-and-related-technologies\" class=\"wiki-heading\">MCP and related technologies\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"mcp-and-related-technologies\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cdiv class=\"wiki-table wiki-table--cols-4\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>\u003C/th>\n\u003Cth>Function calling\u003C/th>\n\u003Cth>MCP\u003C/th>\n\u003Cth>REST or GraphQL API\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Level\u003C/td>\n\u003Ctd>Feature of a model API\u003C/td>\n\u003Ctd>Protocol between an AI application and external systems\u003C/td>\n\u003Ctd>Interface of a service for programs\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Who describes the tools\u003C/td>\n\u003Ctd>The application developer, in every request to the model\u003C/td>\n\u003Ctd>The server author, once\u003C/td>\n\u003Ctd>The service developer\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Discovery at runtime\u003C/td>\n\u003Ctd>No\u003C/td>\n\u003Ctd>Yes: \u003Ccode>tools/list\u003C/code>, notifications about changes\u003C/td>\n\u003Ctd>Usually through documentation or OpenAPI\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Reuse across AI applications\u003C/td>\n\u003Ctd>No\u003C/td>\n\u003Ctd>Yes\u003C/td>\n\u003Ctd>Each AI application integrates separately\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>MCP does not replace function calling: the host still uses the function calling of its model so that the model can choose a tool. MCP defines where the tools come from and how they are called.\u003C/p>\n\u003Cp>MCP does not replace APIs either. A typical MCP server is a layer over an existing API that adapts it for a model: it selects the operations worth exposing, describes them in plain language, simplifies parameters and shapes results to fit the model's context. How such a layer is designed is described in the article \u003Ca href=\"/en/wiki/mcp/mcp-server-for-existing-api\" class=\"wiki-link wiki-link--article\">MCP server over an existing API\u003C/a>.\u003C/p>\n\u003Cp>The \u003Cstrong>Agent2Agent (A2A)\u003C/strong> protocol solves a different task: it connects agents with each other, while MCP connects an agent to tools and data. The two protocols are used together.\u003C/p>\n\u003Ch2 id=\"terms\" class=\"wiki-heading\">Terms\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"terms\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cdiv class=\"wiki-table wiki-table--cols-2\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Term\u003C/th>\n\u003Cth>Meaning\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>MCP host\u003C/td>\n\u003Ctd>AI application that runs the model and connects to MCP servers\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>MCP client\u003C/td>\n\u003Ctd>Component of the host that keeps the connection to one server\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>MCP server\u003C/td>\n\u003Ctd>Program that provides tools, resources and prompts\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Tool\u003C/td>\n\u003Ctd>Function that the model can call through the host\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Resource\u003C/td>\n\u003Ctd>Data identified by a URI that the application can add to the context\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Prompt\u003C/td>\n\u003Ctd>Instruction template that the user can invoke\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Elicitation\u003C/td>\n\u003Ctd>Request from the server for additional input from the user\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Capability\u003C/td>\n\u003Ctd>Feature that a client or server declares as supported\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>_meta\u003C/code>\u003C/td>\n\u003Ctd>Field of a request that carries the protocol version, client identity and capabilities\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>MRTR\u003C/td>\n\u003Ctd>Multi Round-Trip Requests: the server answers \u003Ccode>input_required\u003C/code>, the client repeats the request with the answers\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Extension\u003C/td>\n\u003Ctd>Optional feature outside the core protocol, such as Tasks or MCP Apps\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Ch2 id=\"sources\" class=\"wiki-heading\">Sources\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"sources\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/specification/2026-07-28\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Model Context Protocol specification, version 2026-07-28\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/docs/2026-07-28/learn/architecture\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Architecture overview\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/specification/2026-07-28/basic/patterns/mrtr\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Multi Round-Trip Requests\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://blog.modelcontextprotocol.io/posts/2026-07-28/\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">The 2026-07-28 Specification, MCP blog\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://www.anthropic.com/news/model-context-protocol\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Introducing the Model Context Protocol, Anthropic, 25 November 2024\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://blog.modelcontextprotocol.io/posts/2025-09-08-mcp-registry-preview/\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Introducing the MCP Registry, MCP blog, 8 September 2025\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003C/ul>\n",[10,14,17,20,23,27,30,33,36,39,42,45,48,51,53,56,59,62,65,68,71],{"id":11,"level":12,"text":13},"overview",2,"Overview",{"id":15,"level":12,"text":16},"the-problem-mcp-solves","The problem MCP solves",{"id":18,"level":12,"text":19},"history","History",{"id":21,"level":12,"text":22},"architecture","Architecture",{"id":24,"level":25,"text":26},"participants",3,"Participants",{"id":28,"level":25,"text":29},"layers","Layers",{"id":31,"level":12,"text":32},"primitives","Primitives",{"id":34,"level":12,"text":35},"how-a-request-works","How a request works",{"id":37,"level":25,"text":38},"discovery","Discovery",{"id":40,"level":25,"text":41},"calling-a-tool","Calling a tool",{"id":43,"level":25,"text":44},"when-the-server-needs-more-input","When the server needs more input",{"id":46,"level":25,"text":47},"notifications","Notifications",{"id":49,"level":12,"text":50},"transports","Transports",{"id":52,"level":25,"text":52},"stdio",{"id":54,"level":25,"text":55},"streamable-http","Streamable HTTP",{"id":57,"level":12,"text":58},"the-2026-07-28-specification","The 2026-07-28 specification",{"id":60,"level":12,"text":61},"security-and-authorization","Security and authorization",{"id":63,"level":12,"text":64},"ecosystem","Ecosystem",{"id":66,"level":12,"text":67},"mcp-and-related-technologies","MCP and related technologies",{"id":69,"level":12,"text":70},"terms","Terms",{"id":72,"level":12,"text":73},"sources","Sources",2989,1793718907819]