langchain-mcp-adapters
Make Anthropic Model Context Protocol (MCP) tools compatible with LangChain and LangGraph agents.
Description
# LangChain MCP Adapters This library provides a lightweight wrapper that makes [Anthropic Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction) tools compatible with [LangChain](https://github.com/langchain-ai/langchain) and [LangGraph](https://github.com/langchain-ai/langgraph).  > [!note] > A JavaScript/TypeScript version of this library is also available at [langchainjs](https://github.com/langchain-ai/langchainjs/tree/main/libs/langchain-mcp-adapters/). ## Features - π οΈ Convert MCP tools into [LangChain tools](https://python.langchain.com/docs/concepts/tools/) that can be used with [LangGraph](https://github.com/langchain-ai/langgraph) agents - π¦ A client implementation that allows you to connect to multiple MCP servers and load tools from them ## Installation ```bash pip install langchain-mcp-adapters ``` ## Quickstart Here is a simple example of using the MCP tools with a LangGraph agent. ```bash pip install langchain-mcp-adapters langgraph "langchain[openai]" export OPENAI_API_KEY=<your_api_key> ``` ### Server First, let's create an MCP server that can add and multiply numbers. ```python # math_server.py from mcp.server.fastmcp import FastMCP mcp = FastMCP("Math") @mcp.tool() def add(a: int, b: int) -> int: """Add two numbers""" return a + b @mcp.tool() def multiply(a: int, b: int) -> int: """Multiply two numbers""" return a * b if __name__ == "__main__": mcp.run(transport="stdio") ``` ### Client ```python # Create server parameters for stdio connection from mcp import ClientSession, StdioServerParameters from mcp.client.stdio import stdio_client from langchain_mcp_adapters.tools import load_mcp_tools from langchain.agents import create_agent server_params = StdioServerParameters( command="python", # Make sure to update to the full absolute path to your math_server.py file args=["/path/to/math_server.py"], ) async with stdio_client(server_params) as (read, write): async with ClientSession(read, write) as session: # Initialize the connection await session.initialize() # Get tools tools = await load_mcp_tools(session) # Create and run the agent agent = create_agent("openai:gpt-4.1", tools) agent_response = await agent.ainvoke({"messages": "what's (3 + 5) x 12?"}) ``` ## Multiple MCP Servers The library also allows you to connect to multiple MCP servers and load tools from them: ### Server ```python # math_server.py ... # weather_server.py from typing import List from mcp.server.fastmcp import FastMCP mcp = FastMCP("Weather") @mcp.tool() async def get_weather(location: str) -> str: """Get weather for location.""" return "It's always sunny in New York" if __name__ == "__main__": mcp.run(transport="http") ``` ```bash python weather_server.py ``` ### Client ```python from langchain_mcp_adapters.client import MultiServerMCPClient from langchain.agents import create_agent client = MultiServerMCPClient( { "math": { "command": "python", # Make sure to update to the full absolute path to your math_server.py file "args": ["/path/to/math_server.py"], "transport": "stdio", }, "weather": { # Make sure you start your weather server on port 8000 "url": "http://localhost:8000/mcp", "transport": "http", } } ) tools = await client.get_tools() agent = create_agent("openai:gpt-4.1", tools) math_response = await agent.ainvoke({"messages": "what's (3 + 5) x 12?"}) weather_response = await agent.ainvoke({"messages": "what is the weather in nyc?"}) ``` > [!note] > Example above will start a new MCP `ClientSession` for each tool invocation. If you would like to explicitly start a session for a given server, you can do: > > ```python > from langchain_mcp_adapters.tools import load_mcp_tools > > client = MultiServerMCPClient({...}) > async with client.session("math") as session: > tools = await load_mcp_tools(session) > ``` ## Streamable HTTP MCP now supports [streamable HTTP](https://modelcontextprotocol.io/specification/2025-03-26/basic/transports#streamable-http) transport. To start an [example](examples/servers/streamable-http-stateless/) streamable HTTP server, run the following: ```bash cd examples/servers/streamable-http-stateless/ uv run mcp-simple-streamablehttp-stateless --port 3000 ``` Alternatively, you can use FastMCP directly (as in the examples above). To use it with Python MCP SDK `streamablehttp_client`: ```python # Use server from examples/servers/streamable-http-stateless/ from mcp import ClientSession from mcp.client.streamable_http import streamablehttp_client from langchain.agents import create_agent from langchain_mcp_adapters.tools import load_mcp_tools async with streamablehttp_client("http://localhost:3000/mcp") as (read, write, _): async with ClientSession(read, write) as s
Release History
| Version | Changes | Urgency | Date |
|---|---|---|---|
| 0.2.2 | Imported from PyPI (0.2.2) | Low | 4/21/2026 |
| langchain-mcp-adapters==0.2.2 | ## What's Changed * fix: runtime needs annotation as injected arg by @sydney-runkle in https://github.com/langchain-ai/langchain-mcp-adapters/pull/407 * build(deps): bump actions/download-artifact from 6 to 7 by @dependabot[bot] in https://github.com/langchain-ai/langchain-mcp-adapters/pull/396 * build(deps): bump actions/upload-artifact from 5 to 6 by @dependabot[bot] in https://github.com/langchain-ai/langchain-mcp-adapters/pull/395 * chore: pin ncipollo/release-action to v1.20.0 by @jkennedyv | Low | 3/16/2026 |
| langchain-mcp-adapters==0.2.1 | ## What's Changed * fix: require langchain-core 1.0.0 to use std content by @sydney-runkle in https://github.com/langchain-ai/langchain-mcp-adapters/pull/392 * release: 0.2.1 by @sydney-runkle in https://github.com/langchain-ai/langchain-mcp-adapters/pull/393 **Full Changelog**: https://github.com/langchain-ai/langchain-mcp-adapters/compare/langchain-mcp-adapters==0.2.0...langchain-mcp-adapters==0.2.1 | Low | 12/9/2025 |
| langchain-mcp-adapters==0.2.0 | ## What's Changed ### breaking changes * feat: structured output support, using LC standard content blocks by @sydney-runkle in https://github.com/langchain-ai/langchain-mcp-adapters/pull/379 ### changes * fix: add `py.typed` by @sydney-runkle in https://github.com/langchain-ai/langchain-mcp-adapters/pull/378 * feat: get resources from all servers w/ `get_resources` by @sydney-runkle in https://github.com/langchain-ai/langchain-mcp-adapters/pull/380 * Allow passing `streamable-http` an | Low | 12/9/2025 |
| langchain-mcp-adapters==0.2.0a1 | ## What's Changed ### breaking changes * feat: structured output support, using LC standard content blocks by @sydney-runkle in https://github.com/langchain-ai/langchain-mcp-adapters/pull/379 ### changes * fix: add `py.typed` by @sydney-runkle in https://github.com/langchain-ai/langchain-mcp-adapters/pull/378 * feat: get resources from all servers w/ `get_resources` by @sydney-runkle in https://github.com/langchain-ai/langchain-mcp-adapters/pull/380 * Allow passing `streamable-http` an | Low | 12/8/2025 |
| langchain-mcp-adapters==0.1.14 | ## What's Changed * Bump actions/upload-artifact from 4 to 5 by @dependabot[bot] in https://github.com/langchain-ai/langchain-mcp-adapters/pull/346 * Bump actions/download-artifact from 5 to 6 by @dependabot[bot] in https://github.com/langchain-ai/langchain-mcp-adapters/pull/347 * Bump github/codeql-action from 3 to 4 by @dependabot[bot] in https://github.com/langchain-ai/langchain-mcp-adapters/pull/341 * fix: replace `create_react_agent` with `create_agent` in examples by @mdrxy in https:// | Low | 11/24/2025 |
| langchain-mcp-adapters==0.1.13 | ## What's Changed * fix: refs styling by @mdrxy in https://github.com/langchain-ai/langchain-mcp-adapters/pull/354 * Fix protocol schemas so that they work with pydantic by @awg66 in https://github.com/langchain-ai/langchain-mcp-adapters/pull/361 ## New Contributors * @awg66 made their first contribution in https://github.com/langchain-ai/langchain-mcp-adapters/pull/361 **Full Changelog**: https://github.com/langchain-ai/langchain-mcp-adapters/compare/langchain-mcp-adapters==0.1.12...langchain | Low | 11/13/2025 |
| langchain-mcp-adapters==0.1.12 | ## What's Changed * feature(langchain-mcp-adapters): roll out interceptor patterns (enables retries in addition to other features supported by hooks) by @eyurtsev in https://github.com/langchain-ai/langchain-mcp-adapters/pull/351 * fix: workaround mcp context manager suppressing exceptions + doc by @eyurtsev in https://github.com/langchain-ai/langchain-mcp-adapters/pull/352 * callbacks: https://github.com/langchain-ai/langchain-mcp-adapters/commit/219b60cc973ee44f81e36567030c808276734798 * | Low | 10/30/2025 |
| langchain-mcp-adapters==0.1.11 | This was a release to just unpin langchain-core dependency to support <2. | Low | 10/3/2025 |
| langchain-mcp-adapters==0.1.10 | ## What's Changed * chore: more linting by @eyurtsev in https://github.com/langchain-ai/langchain-mcp-adapters/pull/261 * fix: tests by @mdrxy in https://github.com/langchain-ai/langchain-mcp-adapters/pull/306 * docs: add JavaScript/TypeScript version note by @mdrxy in https://github.com/langchain-ai/langchain-mcp-adapters/pull/304 * Bump actions/checkout from 4 to 5 by @dependabot[bot] in https://github.com/langchain-ai/langchain-mcp-adapters/pull/286 * Bump actions/download-artifact from 4 to | Low | 9/19/2025 |
| langchain-mcp-adapters==0.1.9 | ## What's Changed * linting: clean up code a bit by @eyurtsev in https://github.com/langchain-ai/langchain-mcp-adapters/pull/246 * typing: fix basic typing issues by @eyurtsev in https://github.com/langchain-ai/langchain-mcp-adapters/pull/247 * lint: enable TRY003,TRY004 by @eyurtsev in https://github.com/langchain-ai/langchain-mcp-adapters/pull/248 * more linting by @eyurtsev in https://github.com/langchain-ai/langchain-mcp-adapters/pull/249 * Add doc-strings by @eyurtsev in https://github.com/ | Low | 7/9/2025 |
| langchain-mcp-adapters==0.1.8 | ## What's Changed * docs: When using streamable_http, the mcp-url must end with a slash. On cloud servers we get the following error by @cevheri in https://github.com/langchain-ai/langchain-mcp-adapters/pull/206 * README: add info about run time headers by @eyurtsev in https://github.com/langchain-ai/langchain-mcp-adapters/pull/219 * Add codeQL workflow by @eyurtsev in https://github.com/langchain-ai/langchain-mcp-adapters/pull/225 * ci: set parameters for codeql workflow by @eyurtsev in https:/ | Low | 6/30/2025 |
| langchain-mcp-adapters==0.1.7 | ## What's Changed * add dependabot config by @eyurtsev in https://github.com/langchain-ai/langchain-mcp-adapters/pull/196 * ci: add pytest timeout by @eyurtsev in https://github.com/langchain-ai/langchain-mcp-adapters/pull/197 * Add httpx_client_factory support for streamable_http and sse transports by @rodrigopavan in https://github.com/langchain-ai/langchain-mcp-adapters/pull/191 * release 0.1.7 by @eyurtsev in https://github.com/langchain-ai/langchain-mcp-adapters/pull/199 * Add ValueError fo | Low | 6/5/2025 |
| langchain-mcp-adapters==0.1.6 | ## What's Changed * Update README.md by @eyurtsev in https://github.com/langchain-ai/langchain-mcp-adapters/pull/187 * add pagination to list tools by @vbarda in https://github.com/langchain-ai/langchain-mcp-adapters/pull/153 * release 0.1.6 by @eyurtsev in https://github.com/langchain-ai/langchain-mcp-adapters/pull/195 **Full Changelog**: https://github.com/langchain-ai/langchain-mcp-adapters/compare/langchain-mcp-adapters==0.1.4...langchain-mcp-adapters==0.1.6 | Low | 6/5/2025 |
| langchain-mcp-adapters==0.1.4 | ## What's Changed * shorten tool name by @eyurtsev in https://github.com/langchain-ai/langchain-mcp-adapters/pull/186 **Full Changelog**: https://github.com/langchain-ai/langchain-mcp-adapters/compare/langchain-mcp-adapters==0.1.3...langchain-mcp-adapters==0.1.4 | Low | 5/29/2025 |
| langchain-mcp-adapters==0.1.3 | ## What's Changed * bump min mcp version and release by @eyurtsev in https://github.com/langchain-ai/langchain-mcp-adapters/pull/185 **Full Changelog**: https://github.com/langchain-ai/langchain-mcp-adapters/compare/langchain-mcp-adapters==0.1.2...langchain-mcp-adapters==0.1.3 | Low | 5/29/2025 |
| langchain-mcp-adapters==0.1.2 | ## What's Changed * fix: make list tool concurrent by @qiankunli in https://github.com/langchain-ai/langchain-mcp-adapters/pull/175 * add a util for converting a langchain tool to FastMCP server tool by @vbarda in https://github.com/langchain-ai/langchain-mcp-adapters/pull/144 * release 0.1.2 by @eyurtsev in https://github.com/langchain-ai/langchain-mcp-adapters/pull/181 ## New Contributors * @qiankunli made their first contribution in https://github.com/langchain-ai/langchain-mcp-adapters/pull | Low | 5/29/2025 |
| langchain-mcp-adapters==0.1.1 | ## What's Changed * attach annotations to tool metadata by @eyurtsev in https://github.com/langchain-ai/langchain-mcp-adapters/pull/164 * release 0.1.1 by @eyurtsev in https://github.com/langchain-ai/langchain-mcp-adapters/pull/166 **Full Changelog**: https://github.com/langchain-ai/langchain-mcp-adapters/compare/langchain-mcp-adapters==0.1.0...langchain-mcp-adapters==0.1.1 | Low | 5/20/2025 |
| langchain-mcp-adapters==0.1.0 | # Release 0.1.0 ## What's Changed * update readme & add example by @vbarda in https://github.com/langchain-ai/langchain-mcp-adapters/pull/140 * fix error message in connect_to_server by @vbarda in https://github.com/langchain-ai/langchain-mcp-adapters/pull/143 * breaking: refactor the client & allow tools to create sessions by @vbarda in https://github.com/langchain-ai/langchain-mcp-adapters/pull/146 * release 0.1.0 by @vbarda in https://github.com/langchain-ai/langchain-mcp-adapters/pull | Low | 5/15/2025 |
| langchain-mcp-adapters==0.0.11 | ## What's Changed * add streamable HTTP support by @vbarda in https://github.com/langchain-ai/langchain-mcp-adapters/pull/119 * feat: add cwd option to StdioServerParameters by @softyoungha in https://github.com/langchain-ai/langchain-mcp-adapters/pull/132 * release 0.0.11 by @vbarda in https://github.com/langchain-ai/langchain-mcp-adapters/pull/139 ## New Contributors * @softyoungha made their first contribution in https://github.com/langchain-ai/langchain-mcp-adapters/pull/132 **Full Changel | Low | 5/8/2025 |
| langchain-mcp-adapters==0.0.10 | ## What's Changed * fix: handle empty tool response by @plaflamme in https://github.com/langchain-ai/langchain-mcp-adapters/pull/115 * docs: better docstrings by @vbarda in https://github.com/langchain-ai/langchain-mcp-adapters/pull/116 * add missing type annotation by @vbarda in https://github.com/langchain-ai/langchain-mcp-adapters/pull/117 * add state graph example to readme by @vbarda in https://github.com/langchain-ai/langchain-mcp-adapters/pull/124 * relax mcp version range by @vbarda in h | Low | 5/5/2025 |
| langchain-mcp-adapters==0.0.9 | ## What's Changed * chore: improve math server return and test config by @jdocherty in https://github.com/langchain-ai/langchain-mcp-adapters/pull/90 * add license & repo to pyproject by @vbarda in https://github.com/langchain-ai/langchain-mcp-adapters/pull/97 * release 0.0.9 by @vbarda in https://github.com/langchain-ai/langchain-mcp-adapters/pull/98 ## New Contributors * @jdocherty made their first contribution in https://github.com/langchain-ai/langchain-mcp-adapters/pull/90 **Full Changelo | Low | 4/16/2025 |
| langchain-mcp-adapters==0.0.8 | ## What's Changed * initial mcp resource support by @joongi007 in https://github.com/langchain-ai/langchain-mcp-adapters/pull/43 * Feature: Support WebSocket Transport by @aksheyd in https://github.com/langchain-ai/langchain-mcp-adapters/pull/79 * release 0.0.8 by @vbarda in https://github.com/langchain-ai/langchain-mcp-adapters/pull/94 ## New Contributors * @joongi007 made their first contribution in https://github.com/langchain-ai/langchain-mcp-adapters/pull/43 * @aksheyd made their first con | Low | 4/14/2025 |
| langchain-mcp-adapters==0.0.7 | ## What's Changed * Minor improvement to typing in client.py by @TimChild in https://github.com/langchain-ai/langchain-mcp-adapters/pull/53 * update mcp sdk version by @vbarda in https://github.com/langchain-ai/langchain-mcp-adapters/pull/64 * allow passing session kwargs by @vbarda in https://github.com/langchain-ai/langchain-mcp-adapters/pull/66 * add more tests by @vbarda in https://github.com/langchain-ai/langchain-mcp-adapters/pull/69 * release 0.0.7 by @vbarda in https://github.com/langcha | Low | 4/4/2025 |
| langchain-mcp-adapters==0.0.6 | ## What's Changed * set PATH envvar for stdio if not provided by @vbarda in https://github.com/langchain-ai/langchain-mcp-adapters/pull/57 * release 0.0.6 by @vbarda in https://github.com/langchain-ai/langchain-mcp-adapters/pull/58 **Full Changelog**: https://github.com/langchain-ai/langchain-mcp-adapters/compare/langchain-mcp-adapters==0.0.5...langchain-mcp-adapters==0.0.6 | Low | 3/31/2025 |
| langchain-mcp-adapters==0.0.5 | ## What's Changed * add langgraph server example by @vbarda in https://github.com/langchain-ai/langchain-mcp-adapters/pull/20 * Fix the wrong part of the Quickstart sample code by @LicsDaSheng in https://github.com/langchain-ai/langchain-mcp-adapters/pull/21 * update MCP by @vbarda in https://github.com/langchain-ai/langchain-mcp-adapters/pull/23 * support loading text prompts by @mr-brobot in https://github.com/langchain-ai/langchain-mcp-adapters/pull/12 * add headers support to sse requests by | Low | 3/15/2025 |
| langchain-mcp-adapters==0.0.4 | ## What's Changed * pin MCP version, release 0.0.4 by @vbarda in https://github.com/langchain-ai/langchain-mcp-adapters/pull/19 **Full Changelog**: https://github.com/langchain-ai/langchain-mcp-adapters/compare/langchain-mcp-adapters==0.0.3...langchain-mcp-adapters==0.0.4 | Low | 3/13/2025 |
| langchain-mcp-adapters==0.0.3 | ## What's Changed * add support for SSE client by @vbarda in https://github.com/langchain-ai/langchain-mcp-adapters/pull/9 * release 0.0.3 by @vbarda in https://github.com/langchain-ai/langchain-mcp-adapters/pull/10 | Low | 3/1/2025 |
