LangGraph
Use AllMCP tools inside LangGraph workflows — stateful, multi-step agent graphs.
All frameworks Browse providersInstall
Section titled “Install”pip install langchain-mcp-adapters langchain-anthropic langgraphMinimal example (ReAct agent)
Section titled “Minimal example (ReAct agent)”import asynciofrom langchain_mcp_adapters.client import MultiServerMCPClientfrom langchain_anthropic import ChatAnthropicfrom langgraph.prebuilt import create_react_agent
async def main(): client = MultiServerMCPClient({ "allmcp": { "url": "https://go.allmcp.co/mcp/", "transport": "streamable_http", "headers": {"X-API-Key": "YOUR_API_KEY"}, } }) tools = await client.get_tools()
agent = create_react_agent( ChatAnthropic(model="claude-sonnet-4-6"), tools, )
result = await agent.ainvoke({ "messages": [{"role": "user", "content": "List my top 5 deals in Bitrix24"}] }) print(result["messages"][-1].content)
asyncio.run(main())Custom graph with AllMCP tools
Section titled “Custom graph with AllMCP tools”Build a graph that uses AllMCP tools as one node in a larger workflow:
import asynciofrom typing import TypedDict, Annotatedfrom langchain_mcp_adapters.client import MultiServerMCPClientfrom langchain_anthropic import ChatAnthropicfrom langchain_core.messages import HumanMessage, BaseMessagefrom langgraph.graph import StateGraph, ENDfrom langgraph.prebuilt import ToolNodeimport operator
class AgentState(TypedDict): messages: Annotated[list[BaseMessage], operator.add]
async def build_crm_graph(): client = MultiServerMCPClient({ "allmcp": { "url": "https://go.allmcp.co/mcp/", "transport": "streamable_http", "headers": {"X-API-Key": "YOUR_API_KEY"}, } }) tools = await client.get_tools() model = ChatAnthropic(model="claude-sonnet-4-6").bind_tools(tools)
def call_model(state: AgentState): response = model.invoke(state["messages"]) return {"messages": [response]}
def should_continue(state: AgentState): last = state["messages"][-1] if hasattr(last, "tool_calls") and last.tool_calls: return "tools" return END
graph = StateGraph(AgentState) graph.add_node("agent", call_model) graph.add_node("tools", ToolNode(tools)) graph.set_entry_point("agent") graph.add_conditional_edges("agent", should_continue) graph.add_edge("tools", "agent")
app = graph.compile()
result = await app.ainvoke({ "messages": [HumanMessage(content="Summarize my open Bitrix24 deals")] }) return result["messages"][-1].contentPersistent state across sessions
Section titled “Persistent state across sessions”from langgraph.checkpoint.memory import MemorySaver
app = graph.compile(checkpointer=MemorySaver())
config = {"configurable": {"thread_id": "user-123-session"}}await app.ainvoke({"messages": [HumanMessage(content="Connect Bitrix24")]}, config)await app.ainvoke({"messages": [HumanMessage(content="List my contacts")]}, config)Multi-user setup
Section titled “Multi-user setup”def make_client_config(user_id: str) -> dict: return { "allmcp": { "url": f"https://go.allmcp.co/mcp/?user_id={user_id}", "transport": "streamable_http", "headers": {"X-API-Key": "YOUR_API_KEY"}, } }See also
Section titled “See also” Browse providers See every provider you can connect and the tools each one offers.