Skip to main content
Glama
KiMiGuel

Claude-Desktop-Bridge

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

  1. Download claude-desktop-bridge.mcpb from Releases.

  2. Drag it onto the Claude Desktop window — or Settings → Extensions → Advanced settings → Install Extension…

  3. No configuration. The vault lives at ~/.claude-bridge/vault.db.

Related MCP server: MCP Note-Taking Server

Tools

Tool

Description

save_note

Save a new note (title, content, optional tags, optional project)

get_notes

Retrieve notes by id, tags, or project, most recent first

search_notes

Full-text search over note titles and content

update_note

Update an existing note's title, content, tags, or project

delete_note

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-repo codebase; use Claude-Desktop-Bridge with project: 'my-repo'."

Where this works

Surface

Works out of the box?

Claude Desktop — Chat tab

✅ Yes

Claude Desktop — Code tab (local sessions)

✅ Yes

Standalone claude CLI (terminal, Desktop not required)

⚠️ 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.mcpb

Requires 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 via delete_note or 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 tools
delete_noteA
Destructive

Permanently delete a note from the vault by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_notesA
Read-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).

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoReturn exactly this note by id
tagsNoOnly return notes containing all of these tags
limitNoMax notes to return
offsetNo
projectNoOnly return notes saved under this project/repo

TDQS

A4.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoOptional tags for filtering later
titleYesShort title for the note
contentYesBody of the note
projectNoProject/repo this note belongs to, if any

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_notesA
Read-only

Full-text search over note titles and content. Use this to find relevant past notes by keyword before starting new research.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
projectNoOnly search notes saved under this project/repo

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_noteA
Destructive

Update an existing note's title, content, tags, and/or project.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
tagsNo
titleNo
contentNo
projectNo

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

  1. 5 tool updatesv1.0.0
    • First observeddelete_note
    • First observedget_notes
    • First observedsave_note
    • First observedsearch_notes
    • First observedupdate_note

TDQS

A4.1/5.0

Scored across 5 tools

Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness5/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers