MCP server for the Paperclip AI agent orchestration platform
Project description
paperclip-mcp
MCP server for the Paperclip AI agent orchestration platform.
Exposes Paperclip's REST API as Model Context Protocol tools, so any MCP-compatible AI assistant (Claude, etc.) can manage issues, agents, goals, approvals, and costs through natural language.
Features
| Category | Tools |
|---|---|
| Issues | list_issues · get_issue · create_issue · update_issue · checkout_issue · release_issue · comment_on_issue · delete_issue |
| Agents | list_agents · get_agent · invoke_agent_heartbeat |
| Goals | list_goals · create_goal · update_goal |
| Approvals | list_approvals · approve · reject · request_approval_revision |
| Monitoring | get_cost_summary · get_dashboard · list_activity |
Requirements
- Python 3.10+
- A running Paperclip instance
- An Agent API key (generated in Paperclip UI → Settings → API Keys)
Installation
Option A — pip / uv (recommended)
# Clone the repo
git clone https://github.com/wizarck/paperclip-mcp
cd paperclip-mcp
# Install (editable for local use, or drop -e for production)
pip install -e .
# or
uv pip install -e .
Option B — Run directly without installing
pip install fastmcp httpx python-dotenv
python src/paperclip_mcp/server.py
Configuration
Copy .env.example to .env and fill in your values:
cp .env.example .env
PAPERCLIP_BASE_URL=http://localhost:3100/api # default, change if needed
PAPERCLIP_API_KEY=your_api_key_here
PAPERCLIP_COMPANY_ID=your_company_uuid_here
Security: Never commit
.envto version control. It is listed in.gitignore.
Where to find these values:
PAPERCLIP_API_KEY— Paperclip UI → Settings → API Keys → New KeyPAPERCLIP_COMPANY_ID— visible in the URL when viewing your company:/companies/{uuid}
Usage
Start the server
# HTTP (for Claude Code / mcp-proxy) — default port 9011
paperclip-mcp
# Custom port
paperclip-mcp --port 9012
# stdio transport (for Claude Desktop)
paperclip-mcp --transport stdio
# All options
paperclip-mcp --help
Register with Claude Code
# HTTP transport (persistent — survives Claude restarts)
claude mcp add paperclip --transport http http://localhost:9011/mcp
# stdio transport (Claude Desktop — add to claude_desktop_config.json)
Claude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"paperclip": {
"command": "paperclip-mcp",
"args": ["--transport", "stdio"],
"env": {
"PAPERCLIP_API_KEY": "your_api_key",
"PAPERCLIP_COMPANY_ID": "your_company_uuid"
}
}
}
}
Example interactions
Once registered, you can ask your AI assistant:
"What tasks does the Purchasing agent have open?"
→ calls list_issues(assignee_agent_id="...", status="todo,in_progress")
"Create a task for the CEO agent to search for new cheese suppliers in Barcelona"
→ calls create_issue(title="Search cheese suppliers in Barcelona", assignee_agent_id="...")
"Approve the pending hire request"
→ calls list_approvals(status="pending") + approve(approval_id="...")
"How much have we spent on tokens this month, broken down by agent?"
→ calls get_cost_summary()
"Wake up the Administration agent now"
→ calls invoke_agent_heartbeat(agent_id="...")
Auto-start with the MCP stack
Add to your stack startup script:
# Check if already running
curl -s --max-time 1 http://localhost:9011/mcp > /dev/null 2>&1 || \
nohup paperclip-mcp > /tmp/paperclip-mcp.log 2>&1 &
Development
# Install with dev dependencies
pip install -e ".[dev]"
# Lint
ruff check src/
ruff format src/
# Type check
mypy src/
# Tests
pytest
Architecture notes
- Who should use this MCP: Human operators managing agents via Claude Code or Claude Desktop.
- Do agents need this MCP?: No — Paperclip agents already interact with the REST API directly via HTTP in their HEARTBEAT protocol. This MCP is for the human operator layer.
- Hermes agents: If you switch to Hermes, this MCP is automatically available since Hermes supports MCP natively.
- Transport choice: Use
streamable-httpfor Claude Code and mcp-proxy integrations. Usestdiofor Claude Desktop. - Security: The server binds to
127.0.0.1by default (localhost only). Do not expose it publicly — it carries your Paperclip API key.
License
MIT — see LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file paperclip_mcp-0.1.0.tar.gz.
File metadata
- Download URL: paperclip_mcp-0.1.0.tar.gz
- Upload date:
- Size: 10.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2a755a0e7b95217f81932ef5fe7637789de28b1c6b3061ab4b5cfb7b775e3721
|
|
| MD5 |
4de4173f74d9e3ea09dd0dbbe9ff36c3
|
|
| BLAKE2b-256 |
b97099f1da3fb183b8b236ff1e93fddf394b964594569581dcf42f10d86fd41f
|
Provenance
The following attestation bundles were made for paperclip_mcp-0.1.0.tar.gz:
Publisher:
publish.yml on elevateinformatics/paperclip-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
paperclip_mcp-0.1.0.tar.gz -
Subject digest:
2a755a0e7b95217f81932ef5fe7637789de28b1c6b3061ab4b5cfb7b775e3721 - Sigstore transparency entry: 1280907941
- Sigstore integration time:
-
Permalink:
elevateinformatics/paperclip-mcp@1340962c988de42be2dc6bca37a2f65fd5fe6bcc -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/elevateinformatics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@1340962c988de42be2dc6bca37a2f65fd5fe6bcc -
Trigger Event:
release
-
Statement type:
File details
Details for the file paperclip_mcp-0.1.0-py3-none-any.whl.
File metadata
- Download URL: paperclip_mcp-0.1.0-py3-none-any.whl
- Upload date:
- Size: 10.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a1edfe178987a1f96cc8671346e9a7d6f7cc81fcfd1cf930ba4ca3fbc522afa2
|
|
| MD5 |
5c9d7a384f9231fd2cc02c24a889f731
|
|
| BLAKE2b-256 |
d07b5b4aa60909b28100469e46f777716f1eb39ad2c3613d56f45c5bcc7d233f
|
Provenance
The following attestation bundles were made for paperclip_mcp-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on elevateinformatics/paperclip-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
paperclip_mcp-0.1.0-py3-none-any.whl -
Subject digest:
a1edfe178987a1f96cc8671346e9a7d6f7cc81fcfd1cf930ba4ca3fbc522afa2 - Sigstore transparency entry: 1280907942
- Sigstore integration time:
-
Permalink:
elevateinformatics/paperclip-mcp@1340962c988de42be2dc6bca37a2f65fd5fe6bcc -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/elevateinformatics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@1340962c988de42be2dc6bca37a2f65fd5fe6bcc -
Trigger Event:
release
-
Statement type: