Claude-Desktop-Bridge
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
Built for Claude Desktop users. If you only use the standalone
claudeCLI or Claude.ai in a browser, this isn't for you — skip to Where this works for the one exception.
The problem
Claude Desktop's Chat tab and Code tab live in the same app, one click apart. But they don't share a single byte of context.
Ask Claude something in Chat, switch to Code to actually build it — Claude in Code has no memory the conversation ever happened. Spend an hour in Code working through a decision, hop to Chat to think out loud about what's next — Chat starts from zero. Two tabs, one window, and no connection between them at all.
So close, yet so far. The workaround is re-explaining yourself every time you switch tabs — burning tokens and patience re-deriving context that existed ten seconds ago, one tab over.
Related MCP server: MCP Note-Taking Server
The solution
Claude-Desktop-Bridge is a small local MCP server, installed once into Claude Desktop, that gives Chat and Code a shared, persistent knowledge vault. Save a note while working in Code, read it back in Chat five minutes later. Research something in Chat, recall it in Code without repeating yourself.
It's deliberately not a context dump. Instead of pasting whole documents or files into the conversation, Claude gets five narrow tools — save, retrieve, search, update, delete — so it pulls in only what's actually relevant, on demand, instead of loading everything every time.
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 can be tagged with an optional project field, so if you work across multiple codebases, the vault doesn't turn into one undifferentiated pile — each project's notes can be filtered independently.
Install
Download
claude-desktop-bridge.mcpbfrom Releases.Drag it onto the Claude Desktop window — or Settings → Extensions → Advanced settings → Install Extension…
That's it. No configuration screen, nothing to fill in. The vault lives at
~/.claude-bridge/vault.db.
Use it
Once installed, just talk normally in either tab — Claude calls save_note, get_notes, search_notes, etc. on its own when it's useful, the same way it uses any other tool. You don't invoke anything manually.
A few things worth knowing:
It's proactive, not automatic-automatic. Claude decides when something's worth saving or worth searching for — it's not logging every message. If you want something remembered, it helps to say so ("remember this for later").
Tag by project if you work across multiple codebases. Ask Claude to filter by
projectwhen recalling notes, so a search in one repo's context doesn't surface notes from an unrelated one.Chat tab "Projects" (claude.ai-style, with Custom Instructions) don't auto-link to a Code tab folder. There's no protocol-level way for Chat to know which codebase it corresponds to. If you want a Chat Project to stay in sync with a specific repo's notes, say so explicitly in that Project's Custom Instructions — e.g. "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, no filesystem/network access from the cloud) |
Chat and the Desktop Code tab both connect through the same install automatically — nothing extra to configure there.
The standalone terminal CLI (claude run directly, without the Desktop app open) doesn't read Desktop's extension config, so it won't see Claude-Desktop-Bridge unless you register it explicitly:
# macOS or WSL — imports every MCP server Desktop has configured
claude mcp add-from-claude-desktop
# Any platform, including Linux — register Claude-Desktop-Bridge directly,
# pointed at 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, not just the one you ran the command from. Once added, claude mcp list should show claude-desktop-bridge connected — and it reads from the same ~/.claude-bridge/vault.db the Desktop extension uses, so notes saved from the terminal and notes saved from Desktop are the same vault.
Want notes to cost fewer tokens? cdb-companion is a small companion skill that compresses content before it hits
save_note/update_note— drop it alongside this extension for a leaner vault.
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+ (for the built-in node:sqlite module). Claude Desktop's own built-in Node.js runtime is used automatically when the installed extension runs — end users don't need Node installed separately.
Privacy Policy
Claude-Desktop-Bridge runs entirely on your own machine and makes no network requests.
Data collection: Claude-Desktop-Bridge does not collect any data. No analytics, telemetry, or crash reporting of any kind.
Usage and storage: Notes you save (titles, content, tags, and project labels) are stored exclusively in a local SQLite database at
~/.claude-bridge/vault.dbon the device where the extension is installed.Third-party sharing: No data is ever transmitted anywhere. Claude-Desktop-Bridge has no server component and makes no outbound network connections.
Data retention: Notes persist in the local database until you delete them (via the
delete_notetool) or delete the database file yourself. Uninstalling the extension does not delete the database file.Contact: For questions about this policy, open an issue on this repository.
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.
Cross-session, cross-device memory for your agent: remember and recall notes. No key to start.
Portable AI memory you own. Keep memories and notes across Claude, ChatGPT, and other AI tools.
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 gradedqualityAmaintenanceEnables 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.11MIT
- FlicenseNot gradedqualityCmaintenanceEnables Claude Desktop to create, read, list, and manage local notes stored on the computer using natural language requests.1-