Symbol Docs
Connect to AI

Symbol Bridge

Install Symbol Bridge to attach local files to capsules and read end-to-end encrypted capsules in Claude Desktop.

Do I Need This?

Most users don't need Symbol Bridge. The standard Symbol MCP handles everything: saving capsules, loading context, searching, and more.

You need Symbol Bridge if you want either of these:

  • Local file attachments — attach files stored on your computer to a capsule (logs, screenshots, config files, etc.)
  • End-to-end encrypted capsules — read and decrypt encrypted capsules locally, so plaintext never leaves your machine

If you're saving text-based context and don't use encryption, skip this page.

Attaching a file from the web? You don't need Symbol Bridge for that. Any Symbol MCP — including hosted claude.ai Symbol — can attach a public https:// image or file: just give the AI the URL and it's fetched server-side. Symbol Bridge is for files that live on your own computer.


What is Symbol Bridge?

Symbol Bridge is a small companion tool that runs locally on your computer. It runs alongside the main Symbol MCP; you keep both connected at the same time.

It adds the following tools to your AI assistant:

File attachments:

  • Create a capsule with attachments: save a capsule and attach files from your computer in one step
  • Update a capsule with attachments: add files to an existing capsule

End-to-end encryption (E2EE):

  • Read and decrypt encrypted capsules locally using your encryption keys
  • Plaintext is never sent to Symbol's servers or your AI provider

Installation

Symbol Bridge ships as a Claude Desktop extension bundle (.mcpb). There is no API key to paste — you approve the connection with your existing Symbol sign-in.

Connect the hosted Symbol MCP first

Symbol Bridge is a companion, not a replacement. Follow Connect to Claude or Other AI Tools if you haven't already. You keep both connected.

Download the extension

Download Symbol Bridge — a stable URL that always serves the current release:

https://symbol.chat/download/symbol-desktop.mcpb

You can also get it from Settings → Connected Apps in Symbol.

Open it with Claude Desktop

Claude Desktop asks you to confirm the install, then to approve the connection to Symbol. Once approved, Symbol appears under Connected Apps in your settings.

Restart Claude Desktop

Quit and reopen the app. You'll now have the attachment tools alongside your existing Symbol tools.

Prefer automatic setup? The Symbol app's getting-started wizard installs the same bundle for you, reusing your existing sign-in. It's the identical artifact — pick whichever route you like.

Also use Claude Code?

Claude Desktop and Claude Code are separate apps with separate settings, so an extension installed in one doesn't show up in the other. Adding it to Claude Code is a single command:

unzip ~/Downloads/symbol-desktop.mcpb -d ~/symbol-bridge
claude mcp add symbol-bridge -s user -- node ~/symbol-bridge/server/server.mjs

-s user makes it available in every project rather than just the current one. Your sign-in carries over — Bridge stores credentials per machine, not per app, so there's nothing to authorize again.

The same applies to Cursor, Windsurf, and anything else that speaks MCP; see Manual Install below.


Manual Install (Cursor, Windsurf, Claude Code, and others)

The .mcpb above is Claude Desktop's extension format. Every other MCP client starts a local server itself, so you point it at the Bridge with a normal stdio config instead.

The .mcpb is a zip. Unpack it and you have a self-contained server file that any MCP client can run.

Unpack the bundle

curl -L -o symbol-bridge.mcpb https://symbol.chat/download/symbol-desktop.mcpb
unzip symbol-bridge.mcpb -d ~/symbol-bridge

That gives you ~/symbol-bridge/server/server.mjs. Note the absolute path — MCP clients do not resolve relative paths. Node.js 18+ is required.

Get an API key

  1. Sign in to symbol.chat
  2. Go to Settings → API Keys
  3. Click Create API key and copy it (it starts with sym_)

Add it to your client's MCP config

The shape is the same everywhere — only the file location differs:

{
  "mcpServers": {
    "symbol-bridge": {
      "command": "node",
      "args": ["/absolute/path/to/symbol-bridge/server/server.mjs"],
      "env": {
        "SYMBOL_API_KEY": "sym_your_key_here"
      }
    }
  }
}
  • Cursor: Settings → MCP → Add new MCP server

  • Windsurf: Settings → AI → MCP Servers

  • Claude Code: skip the JSON entirely —

    claude mcp add symbol-bridge -s user \
      -e SYMBOL_API_KEY=sym_your_key_here \
      -- node /absolute/path/to/symbol-bridge/server/server.mjs

    -s user registers it for every project; the default (local) applies to the current directory only, which is the usual reason it "works in one project but not another". Drop -e if you have already signed in with symbol-bridge-login.

Restart the client

Ask it "What Symbol tools do you have?" — you should see create_capsule_with_attachments and update_capsule_with_attachments.

Claude Desktop by hand

If you would rather edit JSON than open the .mcpb, Claude Desktop uses the same format. Settings → Developer → Edit Config opens the file, or edit it directly:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Installing the .mcpb is still the better route on Claude Desktop: it signs you in over OAuth, so no API key is written to a config file in plain text. Use the manual path when you need a specific Node version or a checked-out build.

Turning on encryption

Encrypted-capsule reading is off unless you ask for it. Add to the same env block:

"env": {
  "SYMBOL_API_KEY": "sym_your_key_here",
  "SYMBOL_ENCRYPTION": "true",
  "SYMBOL_RECOVERY_KEY": "your-recovery-key"
}

SYMBOL_ENCRYPTION exposes the encrypted read tools. SYMBOL_RECOVERY_KEY (Settings → Encryption → Recovery Key in the Symbol app) is a break-glass path that lets the Bridge decrypt without the device-link flow — it derives your E2EE master key directly, so the Bridge warns loudly at startup when it is set and it is not part of the extension's default configuration. Prefer leaving it out and linking a device instead (you'll be prompted). See End-to-End Encryption.

Your recovery key decrypts every encrypted capsule you own, and this config file stores it in plain text. Never commit it to a repository, paste it into a chat, or share the file. Prefer device linking — leave SYMBOL_RECOVERY_KEY out and approve the link from the Symbol app, so the key is derived on demand and cached in your OS keychain rather than written to disk.

If you have previously signed in with the OAuth flow, ~/.symbol/config.json may set auth.method to oauth, which takes precedence and makes SYMBOL_API_KEY look ignored. Set it to apikey, or remove it to let the Bridge choose.


Using File Attachments

Once connected, you can ask your AI:

"Save this as a Solution and attach the file at /Users/me/logs/error.log"

The AI will use Symbol Bridge to read the file from your computer and attach it to the new capsule.

Symbol Bridge can only access files on your local machine. Files must exist on the computer where your AI client is running.

File access is deny-by-default. The Bridge reads files only from directories you explicitly allow. List them in ~/.symbol/config.json under "attachmentDirs" (or the SYMBOL_ATTACHMENT_DIRS env var):

{ "attachmentDirs": ["/Users/me/Downloads", "/Users/me/Desktop"] }

With none configured, every disk read is refused. Paths outside those directories, symlinks that escape them, and sensitive files are refused even inside them — SSH/GPG keys, .env, keychains, browser profiles, cloud and cluster credential stores (.aws, .kube, .docker, .azure, .gcloud), and registry/VCS credential files (.npmrc, .pypirc, .git-credentials). So listing your home directory as a root still does not expose your secrets. This protects you from a prompt injection trying to make the assistant read secrets off your machine.

Where configuration comes from, and which source wins. The API key can live in the SYMBOL_API_KEY environment variable (your MCP client config) or in an "apiKey" field in ~/.symbol/config.json. When both are set, the environment variable wins. Attachment directories come from either the SYMBOL_ATTACHMENT_DIRS env var or "attachmentDirs" in the config file, and the same rule applies — by the variable's presence, not its contents. If SYMBOL_ATTACHMENT_DIRS is set at all, it decides, and the config file's list is ignored. A value that names no directory (SYMBOL_ATTACHMENT_DIRS=, blank, or a bare :) therefore grants access to no directories. That is the supported way to switch local file reads off from the environment without editing the config file.

One practical difference: environment variables are read once, when the server process starts. If you add or change SYMBOL_API_KEY in your client config, the running Bridge won't see it until you reconnect/restart the server. A key added to ~/.symbol/config.json, by contrast, is picked up on the next tool call — no restart needed. Run the bridge_status tool any time to see exactly what the Bridge resolved (key source, config-file state, attachment directories, and API host) without touching a shell.

Attachments are not end-to-end encrypted, even on an encrypted capsule. The bytes are stored and served unencrypted, and anyone holding an attachment's URL can fetch them. Don't attach anything you wouldn't store in plaintext. See What E2EE covers. Large raster images are also resized and re-encoded on the server, so the stored bytes and size can differ from the file you sent and the original is not preserved.


Troubleshooting

The extension installed but no attachment tools appear

Restart Claude Desktop, then check that you approved the connection prompt. If you dismissed it, remove the extension and open the .mcpb again.

The tool appears but can't read my files

First check that the file's directory is listed in attachmentDirs (~/.symbol/config.json) or SYMBOL_ATTACHMENT_DIRS — file access is deny-by-default, so with none configured every read is refused. Then check the path is correct and the file exists. On Mac, right-click a file and choose Copy as Pathname to get the exact path.

I only see the attachment tools, not the main Symbol tools

Symbol Bridge doesn't include the full set of Symbol tools — it only adds file attachments and local decryption. Connect the hosted Symbol MCP alongside it.

Manual install: the server never starts

Almost always the path. MCP clients require an absolute path to server/server.mjs~ and relative paths are not expanded. Check it runs on its own first:

echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' \
  | node /absolute/path/to/server/server.mjs

You should get a JSON list of tools. On Claude Desktop, the server's own error output is logged to ~/Library/Logs/Claude/mcp-server-symbol-bridge.log (macOS) or %APPDATA%\Claude\logs\ (Windows).

Manual install: my API key seems to be ignored

Run the bridge_status tool first — it reports whether a key is held, its source, and the config-file state, so you don't have to guess.

If you just added SYMBOL_API_KEY to your client config and the next call still fails with MISSING_KEY, the running server hasn't picked it up: environment variables are read once at startup, so reconnect/restart the Bridge (or add the key to ~/.symbol/config.json instead, which is re-read on the next call without a restart).

If the key is set but still ignored, check ~/.symbol/config.json. If auth.method is oauth, that wins over SYMBOL_API_KEY and the Bridge will look for OAuth tokens instead. Set it to apikey, or remove the field.

On this page