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
- Node.js 18+ or Python 3.10+.
- An Estaite MCP API key from estaite.com/developers.
Install
# JavaScript / TypeScriptnpm install @langchain/mcp-adapters @langchain/core langchain
# Pythonpip install langchain-mcp-adapters langchainConnect — 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 instancesconst tools = await client.getTools();
// Hand them to any agentimport { 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 osfrom langchain_mcp_adapters.client import MultiServerMCPClientfrom langchain_anthropic import ChatAnthropicfrom 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.