Local-first token, cost and cache observability for Roo Code (VS Code).
Roo Code has an in-extension Marketplace, but its submission channel is a GitHub issue on the main repository rather than a public schema we could package against — so this surface is a config listing: the exact block to paste.
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 daemonPut this in .roo/mcp.json at the root of a project (project scope,
shareable with the repository), or in the global mcp_settings.json
Roo Code opens from MCP Servers → Edit Global MCP (every project). If
either file already has an mcpServers object, add the
observer entry to it rather than replacing it:
{
"mcpServers": {
"observer": {
"command": "observer",
"args": [
"serve"
]
}
}
}Project scope wins over global scope for the same server name.
| Key | Value |
|---|---|
command + args |
observer serve — the same launch observer init writes for every other client, resolved from PATH. |
Roo Code inherited Cline's entry shape, which also documents env,
alwaysAllow and disabled. None is emitted: observer's server
takes no environment, and an auto-approval list is your trust decision to
make, not something a published listing should make for you.
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.
Roo Code's Marketplace is real and installs MCP servers in one click, but
items are served from Roo's own API and submissions are filed as GitHub
issues on RooCodeInc/Roo-Code — no public submission repository, and
no published schema for the metadata a submission carries. Inventing that
file is the kind of guess this repository's generator exists to prevent.
Filing the issue is an operator decision, not a build artifact.
observer init writes no Roo Code config today —
internal/mcp has no Roo client row — so this hand-added entry cannot
duplicate anything observer wrote. Adding it at BOTH project and global
scope is fine (project wins), but adding it twice under different names
loads the same tool schema twice.
The automatic detect-and-skip observer init performs for the Claude Code
plugin is claude-code-only (internal/claudeplugin); no equivalent
probe exists for Roo Code. Documented, not built.
- Docs: https://superbased.app/
- Source: https://github.com/superbasedapp/observer
- License: Apache-2.0