Connecting Letta to Remote MCP Servers

Using Streamable HTTP and SSE transports

Remote MCP servers work with both Letta Cloud and self-hosted deployments. Streamable HTTP is recommended for new integrations; SSE is deprecated but supported for legacy compatibility.

Streamable HTTP

Recommended transport with Bearer token auth support.

ADE: Tool Manager → Add MCP Server → Streamable HTTP

1from letta_client import Letta
2from letta_client.types import StreamableHTTPServerConfig
3
4client = Letta(token="LETTA_API_KEY")
5
6# Connect a Streamable HTTP server
7streamable_config = StreamableHTTPServerConfig(
8 server_name="my-server",
9 server_url="https://mcp-server.example.com/mcp",
10 auth_token="your-token", # Optional: Authorization: Bearer your-token
11 custom_headers={"X-API-Version": "v1"} # Optional: additional headers
12)
13client.tools.add_mcp_server(request=streamable_config)

SSE (Deprecated)

SSE is deprecated. Use Streamable HTTP for new integrations.

For legacy MCP servers that only support SSE.

ADE: Tool Manager → Add MCP Server → SSE

1from letta_client import Letta
2from letta_client.types import SSEServerConfig
3
4client = Letta(token="LETTA_API_KEY")
5
6# Connect an SSE server (legacy)
7sse_config = SSEServerConfig(
8 server_name="legacy-server",
9 server_url="https://legacy-mcp.example.com/sse",
10 auth_token="optional-token" # Optional: Authorization: Bearer optional-token
11)
12client.tools.add_mcp_server(request=sse_config)

Using Tools

ADE: Agent → Tools → Select MCP tools

1from letta_client import Letta
2
3client = Letta(token="LETTA_API_KEY")
4
5# List tools from an MCP server
6tools = client.tools.list_mcp_tools_by_server(mcp_server_name="weather-server")
7
8# Add a specific tool from the MCP server
9tool = client.tools.add_mcp_tool(
10 mcp_server_name="weather-server",
11 mcp_tool_name="get_weather"
12)
13
14# Create agent with MCP tool
15agent_state = client.agents.create(
16 model="openai/gpt-4o-mini",
17 embedding="openai/text-embedding-3-small",
18 tool_ids=[tool.id]
19)
20
21# Use the agent with MCP tools
22response = client.agents.messages.create(
23 agent_id=agent_state.id,
24 messages=[
25 {
26 "role": "user",
27 "content": "Use the weather tool to check the forecast"
28 }
29 ]
30)