Claude-Desktop-Bridge
Claude-Desktop-Bridge is a local MCP server that gives Claude Desktop’s Chat and Code tabs a shared, persistent note vault through five tools.
Save new notes with title, content, optional tags, and optional project.
Retrieve notes by id, tags, project, or most recent first, with limit/offset.
Full-text search note titles and content, optionally scoped to a project.
Update an existing note’s title, content, tags, or project.
Permanently delete a note by id.
Keep notes separated across codebases using the
projectfield.Use it from Claude Desktop Chat tab, Code tab local sessions, or the CLI with extra registration; not available in cloud sessions.
Store notes locally at
~/.claude-bridge/vault.dbwith no network, analytics, or telemetry.Let Claude decide when to save or search proactively; say “remember this” to keep something.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Claude-Desktop-BridgeRemember this for later: the API timeout decision we made in Chat."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Claude-Desktop-Bridge
Local MCP server that gives Claude Desktop's Chat and Code tabs a shared, persistent note vault. Claude pulls only what it needs via five tools — save_note, get_notes, search_notes, update_note, delete_note — instead of re-deriving context after every tab switch.
Install
Download
claude-desktop-bridge.mcpbfrom Releases.Drag it onto the Claude Desktop window — or Settings → Extensions → Advanced settings → Install Extension…
No configuration. The vault lives at
~/.claude-bridge/vault.db.
Related MCP server: MCP Note-Taking Server
Tools
Tool | Description |
| Save a new note (title, content, optional tags, optional project) |
| Retrieve notes by id, tags, or project, most recent first |
| Full-text search over note titles and content |
| Update an existing note's title, content, tags, or project |
| Permanently delete a note by id |
Notes carry an optional project field, so work across multiple codebases stays separated — each project's notes filter independently.
Use it
Talk normally in either tab — Claude calls the tools on its own when useful. You never invoke anything manually.
Proactive, not automatic-automatic. Claude decides what's worth saving or searching — it's not logging every message. Say "remember this for later" when you want something kept.
Tag by project when working across codebases, so a search in one repo's context doesn't surface another's notes.
Chat tab "Projects" don't auto-link to a Code tab folder. Put it in that Project's Custom Instructions: "This project corresponds to the
my-repocodebase; use Claude-Desktop-Bridge withproject: 'my-repo'."
Where this works
Surface | Works out of the box? |
Claude Desktop — Chat tab | ✅ Yes |
Claude Desktop — Code tab (local sessions) | ✅ Yes |
Standalone | ⚠️ Needs one extra step |
Claude Code on the Web / cloud sessions | ❌ Not available (local-only server) |
The standalone CLI doesn't read Desktop's extension config. Register it explicitly:
# macOS or WSL — imports every MCP server Desktop has configured
claude mcp add-from-claude-desktop
# Any platform, including Linux — register this repo's built server:
claude mcp add --scope user claude-desktop-bridge -- node /path/to/claude-desktop-bridge/server/index.js--scope user makes it available in every terminal project. It reads the same ~/.claude-bridge/vault.db as the Desktop extension, so notes are shared.
Want notes to cost fewer tokens? cdb-companion compresses content before it hits
save_note/update_note.
Building from source
npm install
npm run build # bundles src/index.ts -> server/index.js
npm run pack # produces claude-desktop-bridge.mcpbRequires Node.js 22+ (built-in node:sqlite). Claude Desktop's own Node runtime runs the extension — end users need no Node install. Gates: npm ci + npm test (see .github/workflows/npm-project.yml).
Configuration
Vault →
~/.claude-bridge/vault.db(local SQLite). Uninstalling the extension keeps the file; notes persist until deleted viadelete_noteor by removing the file.Network → none. No server component, no outbound requests, no analytics or telemetry.
Contribute
Open an issue to discuss before a PR. Edit src/index.ts — server/index.js is generated. PRs must pass npm ci + npm test.
License
MIT
Available Tools
5 toolsdelete_noteADestructive
Permanently delete a note from the vault by id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The destructiveHint annotation already signals destructiveness, and the description adds the meaningful behavioral context that deletion is 'permanent' (irreversible) and scoped to 'the vault by id'. This goes beyond the annotation without contradicting it, though it does not detail edge cases like missing ids or cascade effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word contributes meaning: 'Permanently' conveys irreversibility, 'delete' the action, 'note from the vault' the resource, and 'by id' the parameter mapping.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter destructive tool, the description covers the action, target resource, identifier, and permanence. Annotations cover the destructive flag, and no output schema exists, so return-value details are not required. The description is complete enough for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries the burden of explaining the sole parameter. 'by id' indicates the id parameter identifies the note, which is helpful but minimal. It does not add examples, clarify id type (schema already does), or explain behavior when id is invalid.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('delete'), a clear resource ('note'), a location ('vault'), and the key mechanism ('by id'). It unambiguously distinguishes this from sibling tools like save_note, get_notes, search_notes, and update_note without needing to open any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: whenever a note needs to be permanently removed. However, it does not explicitly state when not to use it or name alternatives such as update_note, nor does it mention any prerequisites or permission requirements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_notesARead-only
Retrieve notes from the vault by id, by tag, by project, or the most recently updated ones. Use this for browsing/listing, not free-text search (use search_notes for that).
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Return exactly this note by id | |
| tags | No | Only return notes containing all of these tags | |
| limit | No | Max notes to return | |
| offset | No | ||
| project | No | Only return notes saved under this project/repo |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, so the safe read-only nature is covered. The description adds browsing/listing semantics and selection criteria but does not disclose return shape, ordering details, or behavior when multiple filters are combined. This is acceptable given the annotation coverage but adds only moderate behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the first states the tool's purpose and scope, the second gives routing guidance to search_notes. Every word earns its place, and the key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only listing tool with no required parameters, the description covers all relevant selection modes and the distinction from the search sibling. The schema handles parameter details, and the annotations handle the safety profile, so nothing essential is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80%, and the schema already documents id, tags, limit, and project. The description restates these criteria at a high level but adds no meaningful extra meaning about how parameters combine, offset usage, or default limit/ordering behavior beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Retrieve notes from the vault') and enumerates the selection modes: id, tag, project, or most recently updated. It also explicitly differentiates this from search_notes, so an agent can immediately tell which tool to use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: 'Use this for browsing/listing, not free-text search' and names the alternative tool directly ('use search_notes for that'). This is an explicit when-to-use and when-not-to-use statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_noteA
Save a new note to the shared knowledge vault. Use for research findings, decisions, or context worth persisting across chat and code sessions. Pass project when the note is tied to a specific codebase/repo (e.g. the current working directory's folder or repo name) so it can be filtered later.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Optional tags for filtering later | |
| title | Yes | Short title for the note | |
| content | Yes | Body of the note | |
| project | No | Project/repo this note belongs to, if any |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description clarifies that this is a persistence operation and that notes live in a shared vault, which is useful context beyond the annotations. However, it does not disclose behaviors like overwrite semantics, return values, or permission requirements, and the annotations only cover destructiveHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three focused sentences with no filler. The core purpose is front-loaded, usage context follows, and the optional parameter guidance is concise and actionable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, has no nested objects or enums, and the schema covers all parameters. The description provides enough context for correct invocation, but it does not mention what the tool returns, such as a note ID, which would be useful for subsequent update or delete calls.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds meaningful guidance beyond schema descriptions, especially for `project`: it explains when to use it and gives a concrete example of the current working directory's folder or repo name. This helps the agent populate parameters correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Save a new note to the shared knowledge vault', using a specific verb and resource. The word 'new' differentiates this from the sibling update_note, and the vault context distinguishes it from get/search/delete operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete use cases: 'research findings, decisions, or context worth persisting across chat and code sessions'. It also provides guidance on when to pass `project`, but it does not explicitly mention when not to use this tool or point to alternatives like update_note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_notesARead-only
Full-text search over note titles and content. Use this to find relevant past notes by keyword before starting new research.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| project | No | Only search notes saved under this project/repo |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, covering the safety profile. The description adds that the search covers both titles and content and is keyword-based. However, it does not disclose result ordering, pagination behavior, or search semantics such as case sensitivity or partial matching, which would add further transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no wasted words. The function is stated first, followed by a clear use-case hint. It is well-structured and easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only search tool with annotations covering safety and schema providing default/max for limit, the description is largely complete. It could mention what the response looks like, but given the absence of an output schema and the simplicity of the operation, the essential context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (only 'project' has a description). The description clarifies that 'query' is a keyword, but gives no guidance on the 'limit' parameter or how project scoping affects results. With low schema coverage, the description should compensate more than it does.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Full-text search over note titles and content') and clearly differentiates from sibling tools like save_note, get_notes, update_note, and delete_note by focusing on search. It immediately communicates the tool's core function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage context: 'Use this to find relevant past notes by keyword before starting new research.' This tells the agent when to reach for this tool, though it does not explicitly mention alternatives or when not to use it, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_noteADestructive
Update an existing note's title, content, tags, and/or project.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| tags | No | ||
| title | No | ||
| content | No | ||
| project | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=true, so the description need not re-state mutability. It does add some context by enumerating editable fields and using 'and/or' to suggest partial updates are allowed. Yet it does not disclose whether unspecified fields are preserved or cleared, nor any side effects or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that immediately communicates the action, target, and affected fields. There is no redundant or filler content, making it efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has several siblings and carries a destructiveHint, so context matters. The description covers the basic operation, but it omits how this update differs from save_note, what the response looks like, and whether it is a partial or wholesale replacement of fields. Given the absence of an output schema, the agent is left with some uncertainty about behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, the description must carry the parameter meaning. It names four of the five properties (title, content, tags, project), which helps map the schema, but it does not explain the role of the required 'id' parameter or elaborate on how fields interact beyond 'and/or'. This is a partial but not complete compensation for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Update', the resource 'existing note', and the specific fields involved ('title, content, tags, and/or project'). It is unambiguous about the operation, but it does not explicitly differentiate from the sibling save_note, which could also plausibly perform updates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'existing note' implies this tool is for modifying notes that already exist, and the list of fields gives a sense of intent. However, the description provides no explicit guidance about when to prefer this tool over save_note, get_notes, search_notes, or delete_note, leaving the decision mostly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v1.0.0- First observed
delete_note - First observed
get_notes - First observed
save_note - First observed
search_notes - First observed
update_note
TDQS
Scored across 5 tools
Each tool has a distinct role: save creates, get_notes lists/retrieves by metadata, search_notes handles full-text lookup, update edits, and delete removes. The boundary between get_notes and search_notes is explicitly clarified in the descriptions.
All tools follow a clear verb_note/notes pattern with lowercase snake_case. The only minor inconsistency is singular 'note' for create/update/delete versus plural 'notes' for read/search, but the convention remains predictable.
Five tools is a well-scoped set for a note vault, covering all essential operations without redundancy or bloat. Each tool serves a necessary function.
The tool surface provides full CRUD coverage for notes, plus search for discovery. There are no obvious missing operations for the stated domain of persisting and retrieving shared notes.
Maintenance
Related MCP Connectors
- TaprootOAuthcom.taproothq
Persistent memory layer for AI tools. Save and recall notes across Claude and other MCP clients.
Search, read, create and edit your Memol notes from Claude. Team note-taking with AI search.
Notes and memory assistant: one Markdown vault that Claude, ChatGPT and any MCP client can share.
Cross-session, cross-device memory for your agent: remember and recall notes. No key to start.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceEnables storing and searching personal notes, documents, and snippets using semantic search and RAG capabilities across Claude Desktop, VS Code, and Open WebUI.2-
- AlicenseNot gradedqualityDmaintenanceEnables structured note-taking with markdown support, dynamic tagging system, advanced search capabilities, and markdown export functionality through natural language conversations in Claude Desktop.3GPL 3.0
- AlicenseNot gradedqualityCmaintenanceEnables natural language interaction with a personal knowledge base stored locally on your computer, supporting semantic search, note reading, and writing through Claude Code or mobile apps.13MIT
- FlicenseNot gradedqualityCmaintenanceEnables Claude Desktop to create, read, list, and manage local notes stored on the computer using natural language requests.1-