Pinpole MCP Server
README.md
# Pinpole MCP Server
Design cloud architectures, run cost/performance simulations, and **draw them on your
[Pinpole](https://pinpole.cloud) canvas** — from **Cursor**, **Claude Code**, **Codex**,
**Claude.ai**, and **Bolt**.
**Product:** https://pinpole.cloud · **App:** https://app.pinpole.cloud · **Connectors:** [docs/connectors.md](docs/connectors.md)
---
## Quick start (stdio — Cursor, Claude Code, Codex)
### 1. Get a token
Open **Pinpole → Settings → Developer / MCP** and create a personal access token
(`pp_live_…`). Copy it — it's shown only once.
### 2. Configure your agent
**Cursor** — add to `~/.cursor/mcp.json`:
```json
{
"mcpServers": {
"pinpole": {
"command": "npx",
"args": ["-y", "@pinpole/mcp"],
"env": {
"PINPOLE_API_TOKEN": "pp_live_…",
"PINPOLE_BASE_URL": "https://app.pinpole.cloud"
}
}
}
}
```
**Claude Code:**
```bash
claude mcp add pinpole \
--env PINPOLE_API_TOKEN=pp_live_… \
--env PINPOLE_BASE_URL=https://app.pinpole.cloud \
-- npx -y @pinpole/mcp
```
**Codex** — add to `~/.codex/config.toml`:
```toml
[mcp_servers.pinpole]
command = "npx"
args = ["-y", "@pinpole/mcp"]
env = { PINPOLE_API_TOKEN = "pp_live_…", PINPOLE_BASE_URL = "https://app.pinpole.cloud" }
```
---
## Remote connector (Claude Desktop, Claude.ai, Bolt)
| Field | Value |
|-------|-------|
| URL | `https://app.pinpole.cloud/mcp` |
| Transport | HTTP |
| Auth | OAuth (Claude) or API key `pp_live_…` (Bolt) |
**Claude Desktop:** Settings → Connectors → Add custom connector → URL above (leave OAuth Client ID/Secret blank). See [docs/connectors.md](docs/connectors.md).
OAuth discovery: `https://app.pinpole.cloud/.well-known/oauth-authorization-server`
Self-hosted HTTP server:
```bash
npm run build && npm run start:http
```
Env: `MCP_HOST`, `MCP_PORT` (default `3333`), `PINPOLE_BASE_URL`.
Embed in your Node app:
```ts
import { createMcpApp } from "@pinpole/mcp/http";
const app = createMcpApp();
app.listen(3333);
```
---
## Tools
66 MCP tools covering projects, workspaces, AI architect, simulation, deploy, templates,
teams, connectors, billing, and export. Full API parity matrix:
[docs/PARITY.md](docs/PARITY.md).
Highlights:
| Tool | What it does |
|------|--------------|
| `pinpole_build_architecture` | Prompt → architecture → **inline canvas in chat** (+ optional simulation) |
| `pinpole_ai_chat` / `pinpole_ai_vision` | Multi-turn AI architect |
| `pinpole_simulate_cost` | Cost/latency simulation |
| `pinpole_list_projects` / workspace CRUD | Project & canvas management |
| `pinpole_open_canvas` | Inline read-only canvas embed (PAT) + links to full editor |
### Canvas in Cursor
With `PINPOLE_API_TOKEN` set, canvas tools mint a short-lived `/embed/canvas` URL and return
an **inline read-only diagram in chat** (no Pinpole browser login). Use
**Open interactive canvas in Pinpole** for full drag-and-drop editing.
See [docs/connectors.md](docs/connectors.md).
| `pinpole_deploy_execute` / `pinpole_get_drift` | Deploy & drift |
| `pinpole_export_terraform` | Offline Terraform export (no network) |
---
## Environment variables
| Variable | Default | Notes |
|----------|---------|-------|
| `PINPOLE_API_TOKEN` | – | `pp_live_…` from Developer settings |
| `PINPOLE_BASE_URL` | `https://app.pinpole.cloud` | API base URL |
| `PINPOLE_DEV_USER_ID` | – | Local dev only (`ALLOW_DEV_USER_HEADER=1` on server) |
---
## Development
```bash
npm ci
npm run build
npm test
```
```bash
npm test # smoke: tools/list
npm run test:tools # list all registered tools
npm run test:parity # compare tools against docs/PARITY.md
```
Local integration testing (no browser UI): see [docs/LOCAL_TESTING.md](docs/LOCAL_TESTING.md).
---
## Links
- Pinpole — https://pinpole.cloud
- App — https://app.pinpole.cloud
- Connector setup — [docs/connectors.md](docs/connectors.md)
- Issues — https://github.com/codeforstartups/pinpole-mcp
MIT licensed.
TDQS
A3.8/5.0
Scored across 9 tools
Disambiguation5/5
Each tool has a clearly distinct purpose: building vs creating architecture, drawing vs simulating, listing vs opening. No overlapping functionality that could confuse an agent.
Naming Consistency5/5
All tools follow a consistent 'pinpole_verb_noun' pattern in snake_case, making the naming predictable and easy to understand.
Tool Count5/5
With 9 tools, the server covers the main workflows (create, visualize, simulate, export) without being bloated or too sparse. The count feels well-scoped.
Completeness4/5
The core lifecycle of architecture design is covered: create project, define architecture, draw on canvas, simulate cost, export to Terraform. Minor gaps like update/delete operations are absent but can be handled via the canvas UI.
Maintenance
ActivityStale
ResponsivenessNo issues