paperclip-mcp
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., "@paperclip-mcpshow me issues in review or blocked"
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.
paperclip-mcp
An MCP server for Paperclip, deployed as a Cloudflare Worker. Exposes full contractor-scale capabilities — read, write, and composite action tools — for use in AI clients (TypingMind, Brain, Claude, etc.).
Server version: 1.1.0 · Protocol: MCP 2025-03-26 · Tools: 18
Tools
Read tools
Tool | Description | Key parameters |
| List company issues with filters |
|
| Full details for one issue |
|
| Overview of agents and open issues | — |
| Agent roster |
|
| Human user directory (falls back to |
|
| Comments / activity feed on an issue |
|
| Issues needing human decision ( |
|
| Company activity log, most recent first |
|
| Cost/spend data |
|
| Pending or historical approval requests |
|
list_issues status filter patterns:
status=in_review,blocked # Action Queue default
status=todo,in_progress,in_review,blocked,done # "My items"
status=todo,in_progress,in_review,blocked # Active issues onlyWrite tools
Critical rule: Never send
commentandstatusin the same PATCH. Alwaysadd_commentfirst, thenupdate_issue_status. Mixing them causes "Agent cannot mutate another agent's issue" errors in Paperclip.
Tool | Description | Key parameters |
| Post a comment without changing status |
|
| Status-only PATCH — rejects any |
|
| Multi-field PATCH — rejects |
|
Valid statuses: backlog · todo · in_progress · in_review · done · blocked · cancelled
Valid priorities: critical · high · medium · low
Action / composite tools
Tool | Description | Key parameters | Steps performed |
| Approve from Action Queue |
| 1. POST comment → 2. PATCH status |
| Request changes |
| 1. POST comment "Changes requested: {reason}" → 2. PATCH status |
| Mark as not actionable |
| PATCH status |
Convenience / diagnostics tools
Tool | Description | Key parameters |
| "My items" — merges user ID, alias IDs, and agent IDs; deduplicates; sorts by priority then age |
|
| Test reachability of Paperclip upstream (Cloudflare Tunnel / Access) |
|
Human attribution on writes
All write tools accept optional dashboard_user_id / dashboard_user_email parameters. When provided, they are sent as X-Dashboard-User-Id / X-Dashboard-User-Email headers and the comment body is prefixed with [displayName] so the Paperclip activity log shows who acted (workaround for paperclipai/paperclip#1177).
You can also set defaults via env vars:
wrangler secret put PAPERCLIP_DASHBOARD_USER_ID
wrangler secret put PAPERCLIP_DASHBOARD_USER_EMAILRelated MCP server: JIRA MCP Server
Endpoints
Endpoint | Method | Auth | Purpose |
| GET | No | Health check — returns server info |
| POST | Yes | Streamable HTTP MCP (recommended) |
| DELETE | Yes | Terminate MCP session |
| GET | Yes | SSE transport — establishes streaming session |
| POST | Yes | Send messages on an SSE session |
Authentication
The server requires an API key on all endpoints except the health check.
Option A — Header (preferred):
X-API-Key: your-api-keyOption B — Query parameter (for clients that can't set custom headers, e.g. Claude):
https://paperclip-mcp.isagani.workers.dev/mcp?api_key=your-api-keySecrets
All sensitive values are stored as Cloudflare secrets — never in wrangler.jsonc. Set them with:
wrangler secret put API_KEY # Key clients use to call this worker
wrangler secret put PAPERCLIP_API_KEY # Paperclip board/service key (pcp_board_...)
wrangler secret put PAPERCLIP_API_URL # e.g. https://paperclip-hetzner.ctrsc.co
wrangler secret put PAPERCLIP_COMPANY_ID # Company UUID
wrangler secret put CF_ACCESS_CLIENT_ID # Cloudflare Access service token ID (optional)
wrangler secret put CF_ACCESS_CLIENT_SECRET # Cloudflare Access service token secret (optional)
wrangler secret put PAPERCLIP_DASHBOARD_USER_ID # Optional: default user UUID for write attribution
wrangler secret put PAPERCLIP_DASHBOARD_USER_EMAIL # Optional: default user email for write attributionSecrets are scoped per worker — setting API_KEY on this worker does not affect other workers with the same variable name.
To verify what's set:
wrangler secret list --name paperclip-mcpLocal Development
Create a .dev.vars file (gitignored) with your secrets:
API_KEY=your-key
PAPERCLIP_API_KEY=pcp_board_...
PAPERCLIP_API_URL=https://paperclip-hetzner.ctrsc.co
PAPERCLIP_COMPANY_ID=your-company-uuid
CF_ACCESS_CLIENT_ID=your-cf-access-id
CF_ACCESS_CLIENT_SECRET=your-cf-access-secret
# Optional write attribution defaults:
PAPERCLIP_DASHBOARD_USER_ID=your-user-uuid
PAPERCLIP_DASHBOARD_USER_EMAIL=you@example.comWrangler loads this automatically when running wrangler dev.
npm run dev # Start local dev server at http://localhost:8787
npm run deploy # Deploy to Cloudflare WorkersDeployment
# 1. Login to Cloudflare
wrangler login
# 2. Set all secrets (see Secrets section above)
# 3. Deploy
npm run deployDebugging
Tail live logs after deployment:
wrangler tail --name paperclip-mcp
# Filter to errors only
wrangler tail --name paperclip-mcp --status errorThe worker logs every request, outbound Paperclip API URL, whether secrets are set, and full error responses from the Paperclip API on failures.
Testing with curl
# Step 1: initialize — note the Mcp-Session-Id in response headers
curl -si -X POST https://paperclip-mcp.isagani.workers.dev/mcp \
-H "Content-Type: application/json" \
-H "X-API-Key: your-api-key" \
-d '{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'
# Step 2: call a tool using the session ID from above
curl -s -X POST https://paperclip-mcp.isagani.workers.dev/mcp \
-H "Content-Type: application/json" \
-H "X-API-Key: your-api-key" \
-H "Mcp-Session-Id: <session-id-from-step-1>" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_issues","arguments":{"limit":5}}}'MCP Client Setup
Brain / Claude / TypingMind (query parameter — recommended, works everywhere):
URL:
https://paperclip-mcp.isagani.workers.dev/mcp?api_key=your-api-keyTransport: Streamable HTTP
TypingMind (header-based alternative):
URL:
https://paperclip-mcp.isagani.workers.dev/mcpTransport: Streamable HTTP
Header:
X-API-Key: your-api-key
Brain note: When using Brain's tool picker, all 18 tools are present in a scrollable list — Brain displays them in a fixed-height box so you may need to scroll to see them all.
Architecture
Runtime: Cloudflare Workers (serverless, global edge)
Transport: Streamable HTTP (
/mcp) and SSE (/sse)Protocol: MCP
2025-03-26Auth model: Single shared
API_KEYfor inbound requests; separatePAPERCLIP_API_KEY(never exposed) for outbound Paperclip API callsPaperclip access: All requests to Paperclip include
Authorization: Bearer,CF-Access-Client-Id, andCF-Access-Client-Secretheaders — required because the Paperclip backend is behind a Cloudflare Access tunnel
Notes
Comment-then-patch rule: Never mix
commentandstatusin one PATCH. Post the comment first (add_comment), then update the status (update_issue_status). The composite tools (approve_issue,reject_issue) do this correctly.No
assigneeUserId=me: Service tokens resolvemeto the API key owner. Always pass explicit UUIDs for human assignee filters.Cloudflare Tunnel:
paperclip-hetzner.ctrsc.cois only reachable via Cloudflare Tunnel. Direct curl from your machine will timeout (524). Test via the worker orwrangler tail.wrangler.jsoncis gitignored: Use.dev.varsfor local secrets andwrangler secret putfor production. Never put secrets invarsinwrangler.jsonc— they appear as plain text in the Cloudflare dashboard.
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.
Latest Blog Posts
- 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/isaganiesteron/paperclip-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server