paperclip-mcp

paperclip-mcp

Schema-driven MCP server that exposes all Paperclip API operations as typed MCP tools over stdio or Streamable HTTP, supporting both authenticated and local_mode deployments.

Category
访问服务器

README

Paperclip MCP

Complete, schema-driven Model Context Protocol access to the Paperclip API.

Paperclip MCP turns the supplied paperclip-openapi.json contract into typed MCP tools without maintaining a second, drifting interface registry. It exposes all 590 documented operations over stdio or authenticated Streamable HTTP, handles Paperclip deployments both with bearer authentication and in tokenless local_mode, and preserves the path, query, body, and authorization boundaries described by the source document.

What it provides

  • One direct, schema-validated pc_* MCP tool for every OpenAPI method/path operation.
  • Bounded paperclip_list_operations discovery and paperclip_call_operation dispatch by stable METHOD /path/{template} keys.
  • Correct OpenAPI 3.0 nullable and exclusive-bound translation, path escaping, and query array serialization.
  • JSON, text, JSONL, SSE transcript, and base64 binary responses behind one result envelope.
  • Separate inbound MCP and outbound Paperclip bearer credentials; inbound credentials are never forwarded upstream.
  • Optional upstream authentication: omit the Paperclip token for local_mode, or configure a board/agent bearer token when Paperclip requires authentication.
  • Loopback-bound, non-root, read-only, capability-free Docker deployment with secret mounts, health/readiness probes, and resource limits.

Architecture

flowchart LR
    Client[MCP client] -->|stdio or HTTP Bearer A| Gateway[Paperclip MCP]
    Spec[paperclip-openapi.json] -->|590 validated operations| Gateway
    Gateway -->|No auth in local_mode| Local[Paperclip local_mode]
    Gateway -->|Bearer B when configured| Auth[Authenticated Paperclip]

Bearer A protects this service's HTTP endpoint. Bearer B belongs to Paperclip. They must be different, and neither is accepted as MCP tool input.

Quick start

Python 3.12 is required.

scripts/bootstrap.sh
export PAPERCLIP_BASE_URL=http://127.0.0.1:3100

For Paperclip local_mode, do not set PAPERCLIP_API_TOKEN:

.venv/bin/paperclip-mcp stdio

For a Paperclip instance that requires board or agent authentication:

export PAPERCLIP_API_TOKEN='paperclip-issued-token'
.venv/bin/paperclip-mcp stdio

The credential type determines which board-only, instance-admin, or agent-capable operations Paperclip will authorize. The MCP does not elevate upstream permissions.

Streamable HTTP

Create a gateway-only token and start the service:

.venv/bin/paperclip-mcp token --output secrets/mcp_token
export PAPERCLIP_MCP_TOKEN_FILE="$PWD/secrets/mcp_token"
.venv/bin/paperclip-mcp http

Connect an MCP client to http://127.0.0.1:8000/mcp with:

Authorization: Bearer <contents of secrets/mcp_token>

GET /healthz checks only the gateway. GET /readyz performs the public Paperclip health request and therefore works in both upstream authentication modes. On loopback, the inbound MCP token may be omitted for local development. Non-loopback binds fail closed unless it is configured.

Docker

Generate the inbound token file:

.venv/bin/paperclip-mcp token --output secrets/mcp_token
export PAPERCLIP_BASE_URL=http://host.docker.internal:3100
docker compose up --build -d

That starts against Paperclip local_mode with no upstream authorization header. For an authenticated Paperclip deployment, add the secret-only overlay:

install -m 600 /secure/path/paperclip-api-token secrets/paperclip_api_token
docker compose -f compose.yaml -f compose.auth.yaml up --build -d

The host port stays on 127.0.0.1. If Paperclip is another Compose service, place both on an appropriate user-defined network and set PAPERCLIP_BASE_URL to its service URL; do not use 127.0.0.1 inside this container to refer to the host.

Tool input and output

Direct tools group URL values so names cannot collide:

{
  "path": {"companyId": "company-123"},
  "query": {"limit": 25},
  "body": {"title": "Example"}
}

The source contract currently omits request schemas for three upload routes. Their tools provide a marked compatibility input:

{
  "path": {"companyId": "company-123"},
  "multipart": {
    "file": {
      "filename": "diagram.png",
      "media_type": "image/png",
      "data_base64": "iVBORw0KGgo..."
    }
  }
}

Success results use {status_code, content_type, headers, body, encoding}. Non-success responses become MCP tool errors. See the generated reference and MCP client guide.

Documentation

Development

scripts/ci-bootstrap.sh
scripts/validate.sh

Validation checks formatting, lint, strict typing, compilation, the full test suite with branch coverage, generated documentation, distributions, and both Compose modes. Live Paperclip acceptance and built-container security checks are separate operator-run gates; mocked upstream tests do not constitute live service evidence.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选