Skip to content

LangChain

The official @langchain/mcp-adapters package (and its Python sibling langchain-mcp-adapters) wraps the MCP protocol and exposes each tool as a LangChain Tool you can hand to any agent.

Prerequisites

Install

Terminal window
# JavaScript / TypeScript
npm install @langchain/mcp-adapters @langchain/core langchain
# Python
pip install langchain-mcp-adapters langchain

Connect — TypeScript

import { MultiServerMCPClient } from '@langchain/mcp-adapters';
const client = new MultiServerMCPClient({
estaite: {
transport: 'http',
url: 'https://mcp.estaite.com',
headers: {
'x-api-key': process.env.ESTAITE_API_KEY!,
},
},
});
// Get all 13 Estaite tools as LangChain Tool instances
const tools = await client.getTools();
// Hand them to any agent
import { ChatAnthropic } from '@langchain/anthropic';
import { createReactAgent } from '@langchain/langgraph/prebuilt';
const llm = new ChatAnthropic({ model: 'claude-sonnet-4-5' });
const agent = createReactAgent({ llm, tools });
const result = await agent.invoke({
messages: [
{
role: 'user',
content:
"What's the rental market like in Carmel Valley, San Diego right now?",
},
],
});
console.log(result.messages.at(-1)?.content);

Connect — Python

import os
from langchain_mcp_adapters.client import MultiServerMCPClient
from langchain_anthropic import ChatAnthropic
from langgraph.prebuilt import create_react_agent
client = MultiServerMCPClient({
"estaite": {
"transport": "streamable_http",
"url": "https://mcp.estaite.com",
"headers": {
"x-api-key": os.environ["ESTAITE_API_KEY"],
},
},
})
tools = await client.get_tools()
agent = create_react_agent(ChatAnthropic(model="claude-sonnet-4-5"), tools)
result = await agent.ainvoke({
"messages": [
("user", "What's the rental market like in Carmel Valley right now?"),
],
})
print(result["messages"][-1].content)

Notes

  • Treat the API key as a secret — pull it from process.env / os.environ, never hard-code it.
  • getTools() performs an MCP handshake on first call; cache the result across requests in long-running services.
  • Per-tier rate limits (2 / 10 / 30 req/s) apply across all calls from your key. See Rate limits.