Local-first token, cost and cache observability for GitHub Copilot CLI
(@github/copilot).
Copilot CLI has no plugin package format; MCP config is its documented extension surface. So this is a config listing — the exact block to paste — rather than something to install.
Requires the observer binary already on your PATH. This is
wiring only — the block below 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 daemonFrom the shell:
copilot mcp add observer -- observer serveOr merge this into ~/.copilot/mcp-config.json (the directory follows
COPILOT_HOME). If the file already has an
mcpServers object, add the
observer entry to it rather than replacing it:
{
"mcpServers": {
"observer": {
"type": "local",
"command": "observer",
"args": [
"serve"
],
"tools": [
"*"
]
}
}
}You can also commit it as .github/mcp.json in a repository, which
Copilot CLI loads for that project once you trust the folder.
This is the one thing to get right, because getting it wrong fails silently — the server just never shows up.
| Product | File | Top-level key |
|---|---|---|
| GitHub Copilot CLI (this page) | ~/.copilot/mcp-config.json |
mcpServers |
GitHub Copilot in VS Code (../copilot/) |
.vscode/mcp.json |
servers |
GitHub's own documentation says the CLI does not read .vscode/mcp.json
because it uses the unsupported top-level key servers.
Two GitHub-branded surfaces, two incompatible spellings. Copy the block from
the page that matches the product you are configuring.
| Key | Value | Why |
|---|---|---|
type |
local |
Copilot CLI's discriminator for a command-launched server. |
command + args |
observer serve |
The same launch observer init writes for every other client, resolved from PATH. |
tools |
["*"] |
Every local example in GitHub's docs carries this key; it exposes the server's tools. Narrow it by listing tool names if you would rather. |
env is documented too and is deliberately absent — observer's server
takes no environment.
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.
Copilot CLI capture is unaffected either way: observer's watcher reads its own session logs whether or not this entry exists.
observer init writes no Copilot CLI config today —
internal/mcp has no Copilot CLI client row — so this hand-added entry
cannot duplicate anything observer wrote. Adding it at BOTH user level and
repo level loads the same tool schema 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 for Copilot CLI. Documented, not built.
- Docs: https://superbased.app/
- Source: https://github.com/superbasedapp/observer
- License: Apache-2.0