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. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| 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