Local-first token, cost and cache observability for GitHub Copilot Chat in VS Code, installed through VS Code's own one-click MCP install link.
Requires the observer binary already on your PATH. This is
wiring only — the link declares an MCP server that runs observer;
it does not download or bundle it.
npm i -g @superbased/observer # or: pipx install superbased-observer
observer start # run the local daemonClick the link (or paste it into a browser; on Linux,
xdg-open "<link>" works from a terminal):
vscode:mcp/install?%7B%22name%22%3A%22observer%22%2C%22type%22%3A%22stdio%22%2C%22command%22%3A%22observer%22%2C%22args%22%3A%5B%22serve%22%5D%7D
VS Code Insiders:
vscode-insiders:mcp/install?%7B%22name%22%3A%22observer%22%2C%22type%22%3A%22stdio%22%2C%22command%22%3A%22observer%22%2C%22args%22%3A%5B%22serve%22%5D%7D
VS Code opens the MCP install prompt with the server pre-filled; confirm it,
and the entry lands in your user profile. MCP: Add Server from the
Command Palette and code --add-mcp '<json>' are the equivalent manual
routes.
To put the link in a README of your own:
[](vscode:mcp/install?%7B%22name%22%3A%22observer%22%2C%22type%22%3A%22stdio%22%2C%22command%22%3A%22observer%22%2C%22args%22%3A%5B%22serve%22%5D%7D)(The image comes from shields.io, a third-party badge host; the link itself is first-party VS Code.)
To share the server with everyone working in a repository, commit this as
.vscode/mcp.json:
{
"servers": {
"observer": {
"type": "stdio",
"command": "observer",
"args": [
"serve"
]
}
}
}VS Code's mcp.json uses the top-level key
servers. GitHub Copilot CLI — a different
product, documented in ../copilot-cli/ — uses
mcpServers and states outright that it will not read
.vscode/mcp.json because of the servers
key. Copy the block from the page that matches the product you are
configuring; the wrong key fails silently.
The payload is compact JSON, encodeURIComponent-escaped, exactly as
VS Code's own developer guide describes:
{
"name": "observer",
"type": "stdio",
"command": "observer",
"args": [
"serve"
]
}| Key | Value | Where it comes from |
|---|---|---|
name |
observer |
The stable MCP server id observer registers under everywhere. |
type |
stdio |
VS Code's discriminator for a command-launched server. |
command + args |
observer serve |
The same launch observer init writes for every other client, resolved from PATH. |
The link is static and exact: it encodes the one configuration observer
would write itself, and nothing is composed from runtime or user input. That
is the same rule the Cursor deeplink in ../cursor/ follows, and for
the same reason — a one-click install URI that accepts arbitrary payloads is
a command-execution surface.
The observer server exposes observer's project, session,
cost and cache queries as tools, reading the local
~/.observer/observer.db. It makes no network calls of its own.
SuperBased Observer also ships a VS Code extension (cost/status surfaces in the editor), published on the Marketplace and Open VSX. It is unrelated to this link: this wires observer's MCP server into Copilot Chat, the extension adds observer's own UI. Installing one does not install the other, and installing both is fine.
observer init writes no VS Code MCP config today —
internal/mcp has no VS Code client row (the Cline row is the VS Code
Cline extension's own settings file, a different target) — so this link
cannot duplicate anything observer wrote. Installing it AND committing the
.vscode/mcp.json above declares the same server twice; pick one.
The automatic detect-and-skip observer init performs for the Claude Code
plugin is claude-code-only (internal/claudeplugin); no equivalent
probe exists here. Documented, not built.
- Docs: https://superbased.app/
- Source: https://github.com/superbasedapp/observer
- License: Apache-2.0