MCP Server
Connect AI coding tools to your team's memories via the Model Context Protocol.
Mneme exposes a Model Context Protocol (MCP) server over Streamable HTTP. This lets AI coding tools — Claude Code, Cursor, Windsurf, and others — query your team's memories directly during development.
Setup
1. Create an API key
From the Mneme dashboard or via the admin API:
curl -X POST https://mneme.fly.dev/api/keys \
-H "Authorization: Bearer $API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"installationId": 123, "name": "my-dev-machine"}'This returns a mneme_... key. Save it immediately — the plaintext is only shown once.
2. Configure your client
Claude Code
Add to ~/.claude.json:
{
"mcpServers": {
"mneme": {
"type": "http",
"url": "https://mneme.fly.dev/mcp",
"headers": {
"Authorization": "Bearer mneme_..."
}
}
}
}Other MCP clients
Use the Streamable HTTP transport with URL https://mneme.fly.dev/mcp and an Authorization: Bearer mneme_... header. Consult your client's documentation for the exact config format.
3. Verify
In Claude Code, type /mcp — you should see mneme listed with three tools. Try asking Claude to search your memories.
Tools
search_memories
Semantic search across team memories using embedding similarity and multi-factor scoring (relevance, recency, confidence, corroboration).
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | yes | Freeform search query |
repo | string | no | Filter to a specific repo (owner/repo) |
limit | number | no | Max results (default: 5, max: 20) |
Example prompt: "Search for decisions about state management in acme/web-app"
get_memory
Retrieve a single memory by ID, including its full content, entity references, and evidence chain showing how the memory was formed and corroborated.
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string (UUID) | yes | Memory ID |
list_memories
Browse memories for a repository with optional type filtering and pagination.
| Parameter | Type | Required | Description |
|---|---|---|---|
repo | string | yes | Repository full name (owner/repo) |
type | string | no | Filter: decision, pattern, convention, issue, preference, fact |
limit | number | no | Max per page (default: 50, max: 200) |
offset | number | no | Pagination offset (default: 0) |
Resources
The server also exposes a resource template:
memory://{owner}/{repo}This returns all active memories for a repository in a single read, useful for clients that support MCP resource browsing.
Access control
API keys are scoped to a GitHub App installation. Each key can only access memories for repos belonging to that installation. Requests for repos outside the key's scope return empty results (for search) or access denied errors (for list/get), without leaking whether the repo exists.
Key management
| Action | Endpoint | Method |
|---|---|---|
| Create key | /api/keys | POST |
| List keys | /api/keys?installationId=N | GET |
| Revoke key | /api/keys/:id | DELETE |
All key management endpoints require the admin API_TOKEN. Keys can be revoked at any time — revoked keys are rejected immediately on next use.
Technical details
- Transport: Streamable HTTP (current MCP standard, replaces deprecated SSE)
- Stateless: No session management — each request creates a fresh server instance, compatible with auto-scaling
- Discovery: New tools are available immediately after deploy. Clients see them on their next
tools/listcall (typically on reconnect or session start).