paperops
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@paperopsshow me the live tape of recent calls"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
paperops
Observability control plane for Paper's MCP. A pass-through proxy that sits between your MCP clients and Paper's local server, metering, attributing, and live-streaming every tool call. Paper bills per MCP call — and the calls are made by an agent, at a speed you were never meant to watch. paperops is where you watch them.
Features
Live tape — every MCP call as it happens: client, tool, the artboard or file it acted on, status, latency, size. Sort it, filter it, slice it by file tabs.
Call inspector — click any row: plain-language facts, a latency sparkline against recent calls of the same tool, and the raw request/response one click (and one copy button) away.
Budgets — weekly quotas from Paper's real plans (
free/pro), per-file and per-client limits, runaway-session alerts. Declarative JSON, hot-reloaded, warn-only.Timelapse — every screenshot your agent takes, as a gallery. Each one names the artboard it is of and the client that took it, in the order they happened.
Light and dark — follows your system until you choose;
Dtoggles.Passive by design — zero MCP calls of its own. The meter never spends what it measures.
Private by design — payloads and snapshots live in memory only, the on-disk ledger is metadata, the dashboard binds to localhost and makes zero external requests — fonts included.
Zero dependencies — one Bun process, one HTML file.
bunx paperopsand you're watching.
Related MCP server: MCPSpend
Run
bunx paperops
# paperops · proxy :29980/mcp → http://127.0.0.1:29979/mcp · dashboard http://127.0.0.1:29980/Requires the Paper desktop app running (it serves the real MCP on 127.0.0.1:29979).
paperops --help lists the flags — --port, --target, --version. From a clone, bun dev starts the same server without the CLI wrapper.
Wire your clients through it
This repo ships a project-scoped .mcp.json: open it with Claude Code and the paperops server is already wired through the proxy — approve it once and every call appears on the tape at http://127.0.0.1:29980/ in real time.
To observe sessions in other projects, point them at the proxy too:
claude mcp add --transport http paperops http://127.0.0.1:29980/mcpOr copy the .mcp.json entry into that project.
What gets recorded
One JSONL line per call in ~/.paperops/ledger.jsonl:
{"id":267,"ts":"2026-07-28T04:47:14.159Z","session":"8b252f7c-…","client":"claude-code","rpc":"tools/call","tool":"write_html","fileId":"01KYJQ…","fileName":"paperops","nodeId":"T5-0","nodeName":"paperops — calls (light)","status":200,"ms":40.6,"argsBytes":2333,"resultBytes":3563,"error":null}Attribution comes free: the proxy reads
clientInfo.namefrominitializepayloads and tags every subsequent call in that session, and learns artboard names fromget_basic_inforesponses in transit — so a line says who made the call and what it acted on, without either being asked for. Clients already connected when paperops starts show asunknown, because the name only ever travels ininitialize— reconnect them and it clears. Restarting paperops itself is safe: it replays the map from the ledger.The 7-day meter counts
tools/callrequests against your weekly quota — which comes frombudgets.json(week, or theplanpreset). It survives restarts by replaying the ledger.The ledger is an audit trail: the exact sequence of every call — names, timing, sizes, attribution. Call payloads live in memory only (privacy by design), so sessions can be audited from disk but not re-executed.
Budgets
~/.paperops/budgets.json — declarative limits, hot-reloaded on save:
{
"plan": "pro",
"budgets": [
{ "scope": "file", "match": "paperops", "limit": 2000, "note": "design project" },
{ "scope": "client", "match": "claude-code", "limit": 50000 }
]
}plan—"free"or"pro"; sets the weekly quota to Paper's official number (100 or 1M calls/week, per paper.design/pricing) and a sensible session alert (50 / 200 — a heavy design session measures ≈100 calls). Defaults tofree: the Free user is the one a silent meter hurts most.week/sessionAlert— explicit overrides for the plan-derived values.budgets— one rule per line:scope(fileorclient),match(exact string — a file name or id, or a client name; no regex/glob),limit(weekly calls), optionalnotefor humans. Matching by file name reads better but detaches if the file is renamed in Paper; ids survive renames.
States: ok → warning at 80% (chrome yellow) → exceeded (red), shown on the header meter, tab counts, and the budgets rail section. v1 warns, never blocks.
Config
Env var | Default | Meaning |
|
| Proxy + dashboard port |
|
| Listen address. Localhost-only by default — your tape, payloads and frames are your designs. Set explicitly (e.g. |
|
| The real Paper MCP endpoint |
|
| Fallback weekly quota, used only when |
Nothing Paper-specific lives in the proxy path — point PAPEROPS_TARGET at any streamable-HTTP MCP server and it meters that instead.
Known limitation: JSON-RPC batch requests pass through untouched but meter as a single request (no per-call accounting). No supported client sends batches today, and recent MCP revisions removed batching from the protocol.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Flicense-qualityCmaintenanceAn observability tool for agentic AI pipelines that intercepts MCP and Python tool calls to provide real-time metrics, session replays, and alerts via a local dashboard. It enables centralized monitoring of multiple MCP servers through multiplexer and proxy modes without requiring changes to existing agent code.Last updated3
- AlicenseAqualityAmaintenanceReal-time cost observability for Model Context Protocol tool calls. Wraps any MCP server, attributesspend per tool/project/customer. Free 25K calls/month. EU-hosted, GDPR-ready, MIT.Last updated685MIT
- Alicense-qualityAmaintenanceA local-first control plane for AI agent tools, providing policy enforcement, spend caps, rate limiting, and audit trails for MCP servers.Last updated1Apache 2.0
- Alicense-qualityBmaintenanceAn open-source, vendor-agnostic MCP governance proxy that sits between AI clients and tool servers to apply response projection, metering, and retry policies, reducing token bloat and providing per-tool cost visibility.Last updated1MIT
Related MCP Connectors
See, price, and control every tool call your AI agents make: policy checks, cost, and audit tools.
Enterprise AI Control Plane: governance, guardrails, spend tracking, compliance & smart routing.
Control plane for autonomous software labor. Agents claim objectives over MCP with audit trail.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/rbadillap/paperops'
If you have feedback or need assistance with the MCP directory API, please join our Discord server