MCP is first-party in LangChain now: langchain.mcp on FastMCP replaces the adapter package
LangChain moved Model Context Protocol support into the main package. The new namespace is langchain.mcp, it is built on FastMCP, and it replaces the standalone langchain-mcp-adapters package that most production stacks had been using. It shipped around September 1 and it is explicitly beta: importing it raises a LangChainBetaWarning. Install with the extra:
pip install "langchain[mcp]"
That is a small changelog entry with a large implication. MCP stopped being an optional integration in the most widely used agent framework and became part of its definition of a tool.
What comes with the namespace
The move is not a rename. Because it sits on FastMCP, langchain.mcp inherits several things the adapter package did not have as first-class features:
- Auth and caching via FastMCP, so authenticated MCP servers and cached tool listings are handled in the client rather than in your glue code.
- Protocol negotiation, so client and server agree on capabilities at connect time instead of failing on a mismatch mid-run.
- Human-in-the-loop elicitation interrupts, so an MCP server can pause a tool call to ask the user something, and that pause surfaces as an interrupt in the LangChain run rather than as a hung request.
The last one is the one to pay attention to. Elicitation is how a tool says it needs a confirmation before it acts, and having it map onto LangChain's interrupt model means approval gates for destructive tools no longer need a custom wrapper around every call.
What it changes in how you build
Before this, the choice for a new tool in a LangChain agent was: write a Python function and decorate it, or run an MCP server and adapt it. The adapter path had enough friction that most teams only used it for third-party servers. With first-party support, the friction is roughly equal, and the question flips: is there any reason this tool should not be an MCP server?
Usually there is not. An MCP server is reusable across every agent runtime, from LangChain's own tool calling to Claude Code to Codex, and the protocol gives you auth, discovery and a schema for free. A decorated Python function is reusable in exactly one codebase. If you are starting an agent project this quarter, default to MCP for anything that touches a system outside the process and keep in-process functions for pure computation.
When the framework ships the protocol in the box, the tools you wrote as plain functions become the legacy.
Migrating from the adapter package
- Replace the langchain-mcp-adapters dependency with the langchain[mcp] extra and change imports to langchain.mcp.
- Move any hand-rolled auth headers or token refresh into FastMCP's auth configuration and delete the wrapper.
- Move any tool-list caching you built yourself into the client's caching and delete that too.
- Find every place you wrapped a tool call in a confirmation prompt and see whether elicitation replaces it.
- Pin the LangChain version. A beta namespace can change its surface between minor releases, and the warning on import is there for a reason.
- Run your agent eval suite before and after. Tool schemas that round-trip slightly differently through FastMCP can change what the model sees.
Where this sits in the stack
Together with the rest of LangChain's 2026 direction, this is consolidation: one protocol for tools, one client for it, framework-native interrupts for approval. For teams that standardised on MCP early, it removes a dependency. For teams that avoided it because the adapter felt bolted on, the excuse is gone.
The honest gap
It is beta, and the changelog does not say how long it will stay that way or what the deprecation timeline for langchain-mcp-adapters is. The auth, caching and negotiation features are FastMCP's, and how completely they are exposed through the LangChain surface is not documented beyond the release note. I have not yet run a production agent on it. Until the warning on import goes away, treat langchain.mcp as the direction and the adapter package as the thing you keep pinned in anything that must not break.