TeleMem MCP Server
TeleMem ships a Model Context Protocol (MCP) server that exposes its long-term memory operations as MCP tools. Any MCP-compatible client — Claude Desktop, Claude Code, Cursor, custom agents — can store and retrieve memories through a local TeleMem instance.
Installation
pip install "telemem[mcp] @ git+https://github.com/TeleAI-UAGI/telemem.git"
# or, from a source checkout:
pip install -e ".[mcp]"
This installs the MCP Python SDK on
top of TeleMem and provides the telemem-mcp console command.
Running the server
telemem-mcp # stdio (default)
telemem-mcp --transport sse --port 8421 # SSE over HTTP
telemem-mcp --transport streamable-http # Streamable HTTP
TELEMEM_CONFIG=config/config.yaml telemem-mcp # custom TeleMem config
python -m telemem.mcp # equivalent module form
| Option | Default | Description |
|---|---|---|
--transport |
stdio |
One of stdio, sse, streamable-http |
--host |
127.0.0.1 |
Bind host for the HTTP transports |
--port |
8421 |
Bind port for the HTTP transports |
--config |
– | TeleMem YAML/JSON config (overrides TELEMEM_CONFIG) |
Environment variables
| Variable | Default | Description |
|---|---|---|
TELEMEM_CONFIG |
– | Path to a TeleMem YAML/JSON config file. Without it, TeleMem's default configuration is used (OpenAI models, local vector store), which needs OPENAI_API_KEY. |
TELEMEM_DEFAULT_USER_ID |
telemem-mcp |
Memory scope used when a tool call provides no user_id/agent_id/run_id. |
The TeleMem Memory instance is created lazily on the first tool call, so the server starts
instantly and configuration problems surface as structured tool errors instead of crashes.
Tools
| Tool | Description |
|---|---|
add_memory |
Store a fact (text) or conversation (messages) in long-term memory. |
search_memories |
Semantic search; returns one consolidated text passage (TeleMem fuses related memories). |
get_memories |
List stored memories with their memory_ids for a user/agent/run. |
get_memory |
Fetch a single memory by memory_id. |
update_memory |
Overwrite the text of an existing memory. |
delete_memory |
Delete a single memory by memory_id. |
delete_all_memories |
Wipe a scope. Destructive — requires an explicit user_id, agent_id, or run_id. |
memory_history |
Show the ADD/UPDATE/DELETE history of a memory. |
Errors are returned as structured JSON ({"error": ..., "detail": ...}) so agents can
self-correct instead of failing opaquely.
TeleMem semantics worth knowing
search_memoriesreturns a single fused text passage, not ranked rows — this is TeleMem's design (related memories are clustered and merged).- Conversation-level event memories live under the pseudo-user
"events"and are searched automatically alongside the requested user. Useget_memorieswithuser_id="events"to list them. - When no scope is given, reads and writes default to
TELEMEM_DEFAULT_USER_ID;delete_all_memoriesdeliberately never assumes a default.
Client configuration
Claude Desktop / Cursor
Add to claude_desktop_config.json (or Cursor's mcp.json) — see
examples/mcp_config.json:
{
"mcpServers": {
"telemem": {
"command": "telemem-mcp",
"args": [],
"env": {
"TELEMEM_CONFIG": "/absolute/path/to/config/config.yaml",
"TELEMEM_DEFAULT_USER_ID": "your-handle",
"OPENAI_API_KEY": "sk-..."
}
}
}
}
Claude Code
claude mcp add telemem -e TELEMEM_CONFIG=/absolute/path/to/config/config.yaml -- telemem-mcp
Python client
examples/mcp_client.py drives the server programmatically over stdio — the quickstart flow (add a conversation, search it) expressed as MCP tool calls:
export OPENAI_API_KEY=sk-... # or TELEMEM_CONFIG=config/config.yaml
python examples/mcp_client.py
Embedding in your own server
from telemem.mcp import create_server
server = create_server(host="127.0.0.1", port=8421)
server.run(transport="stdio") # or "sse" / "streamable-http"
Testing
The MCP layer has an offline test suite (no API key required) covering the tool registry, argument mapping, scoping rules, error surfacing, and a full client/server protocol round-trip:
python tests/test_mcp.py