handoff-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| HANDOFF_VAULT | No | Path to the vault directory. Defaults to ~/.handoff-mcp/vault. | |
| HANDOFF_PROJECT | No | Project name for scoping memory. | |
| HANDOFF_EMBEDDER | No | Embedding backend: hashing, local, or openai. Default: hashing. | |
| HANDOFF_SEMANTIC | No | Set to 1 to enable semantic recall layer. Default: not set (off). | |
| HANDOFF_AUTO_SYNC | No | Set to 1 to automatically sync memory across devices. | |
| HANDOFF_LLM_MODEL | No | Set to enable the consolidate tool (e.g., gpt-4o-mini). | |
| HANDOFF_EMBED_MODEL | No | Model name for embeddings. Default: Qwen/Qwen3-Embedding-0.6B for local backend. | |
| HANDOFF_EMBED_API_KEY | No | API key for OpenAI-compatible embedding endpoint. | |
| HANDOFF_EMBED_BASE_URL | No | Base URL for OpenAI-compatible embedding endpoint. | |
| HANDOFF_EMBED_TRUST_REMOTE_CODE | No | Set to 1 to trust remote code for embedding models that require it. |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| log_eventA | Record a progress signal for the current work session. Call this proactively as work happens — every time you set or change the goal, make a non-trivial decision (and why), hit a dead-end worth not repeating, touch an important file, surface an open question, or decide the next step. Keep each event ATOMIC and concise: one item per call, 1-2 sentences. Log several small events rather than dumping a whole session summary into one — the brief is meant to stay skimmable. Reference durable notes inline as [[Entity]] so they link in the brief's "Related knowledge". This is how the next session inherits your context. Returns the new event
id (use it later in |
| get_briefA | Load the prioritised hand-off brief for a project. Call this at the START of a session, before doing anything else, to learn where the previous session left off: the goal, the next step, key decisions and their rationale, dead-ends already ruled out, and open questions. Retracted decisions are omitted. This is a curated brief, not a raw context dump. |
| search_memoryA | Search memory across sessions and projects. Call this whenever the user references past work, a prior decision, or
ANOTHER project — e.g. "in one of my projects we did X", "how did we solve
Y before", "what did we decide about Z", "last time". Use scope='all'
(the default) to recall across every project; scope='current' to stay in
this one. Returns matching past events with their project, content, and
id — the id can be fed straight into log_event's |
| checkpointA | Close out the current session and produce its hand-off brief. Call this at the END of a session, or when the user signals they're stopping or switching context. It finalises the session note and returns the brief the next session will read. |
| note_entityA | Record durable, long-lived project knowledge on an entity note. Use this (rather than log_event) for facts that outlive a single session: the system's architecture, coding conventions, what a component does, or standing open questions. These notes are linked from sessions via [[wiki-links]] and form the project's knowledge graph. Returns the entity name. |
| consolidateA | Compress old finished sessions into durable entity notes ('sleep'). Call this when a project's session log has grown large and you want to reclaim space while keeping the lasting knowledge: it distils old sessions into the durable entity notes and archives the originals. Requires a configured LLM (HANDOFF_LLM_MODEL); it is the only step that uses one. |
| syncA | Sync this device's memory vault with its private git remote. Use when the user wants their memory on another device, or to push/pull now. If the vault isn't configured yet, this returns setup instructions — relay them and ask the user for a private repo URL, then call again with remote_url. Once configured, a bare call pulls remote work, commits local changes, and pushes. Safe to call repeatedly. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| resume | A ready-to-send prompt that primes a new session with the brief. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| brief_resource | The current project's hand-off brief, as a readable MCP resource. |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/kirill-sviridov/handoff-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server