Connect a client
Every way to connect an MCP client to Pink Editor, and what the server speaks.
API v1
Pink Editor's MCP server is reachable two ways. Both serve the same tools.
| Transport | Endpoint | Auth | Best for |
|---|---|---|---|
| Remote (Streamable HTTP) | https://app.edit.pink/api/mcp | OAuth sign-in, or Authorization: Bearer cm_live_… | claude.ai, ChatGPT, Claude Code, Cursor, your own client |
| Remote, key in URL | https://app.edit.pink/api/mcp/cm_live_… | The key in the path | Clients with no header setting |
| stdio bridge | npx -y @editpink/mcp (or the Claude Desktop .dxt) | Device sign-in on first call, or EDITPINK_API_KEY | Claude Desktop, Windsurf |
The remote endpoint is the one to prefer: nothing to install, and it never goes out of date. The stdio bridge is a small local program that forwards to the same server; it needs Node 18 or later.
To pin the API version, add ?api_version=1 to the connector URL (https://app.edit.pink/api/mcp?api_version=1) or send the header Pink-Version: 1. Without either you get version 1.
Per client
The signed-in Connect page builds every snippet below for you, with or without a key.
claude.ai and ChatGPT
Add a custom connector with the URL https://app.edit.pink/api/mcp. The client discovers the sign-in on its own and asks you to approve once.
With an API key instead: use https://app.edit.pink/api/mcp/cm_live_YOUR_KEY as the URL. There is no sign-in, but the URL is now a secret.
Claude Desktop
Download editpink.dxt and open it; Claude Desktop installs it as an extension. Ask Claude for your Pink sites: the first call opens a browser tab to approve a code. Approve it, then ask again.
Or skip the install and add https://app.edit.pink/api/mcp as a custom connector, as for claude.ai.
With an API key, merge this into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows) and restart Claude Desktop:
Claude Code
--scope user makes Pink available in every project. On the first call Claude Code asks you to sign in. With a key, append it to the URL: …/api/mcp/cm_live_YOUR_KEY.
Cursor
Merge into ~/.cursor/mcp.json:
Leave out headers to sign in on first use instead.
Windsurf
Merge into ~/.codeium/windsurf/mcp_config.json the same npx block as Claude Desktop above. Without EDITPINK_API_KEY, the first tool call opens a browser tab to sign in.
Your own client
Any MCP client that speaks Streamable HTTP works. Send JSON-RPC 2.0 requests as POST to https://app.edit.pink/api/mcp with your key as a bearer token:
What the server speaks
| Protocol versions | 2025-06-18 (latest), 2025-03-26, 2024-11-05. The server answers initialize with the version you asked for when it supports it, otherwise 2025-06-18. An unsupported MCP-Protocol-Version header is a 400. |
| Methods | initialize, ping, tools/list, tools/call, prompts/list, prompts/get |
| Capabilities | tools, prompts. No resources, sampling or list-changed notifications. |
| Batches | JSON-RPC batches are accepted. Notifications get 202 with no body. |
| CORS | Allowed from any origin, so a browser-based client can connect. |
| Server instructions | Sent in the initialize response; they tell the model how to start a session (see Sessions). |
The pink prompt
The server registers one prompt, pink, with an optional task argument. Clients show it as a slash command (/pink in Claude Desktop). It tells the model to start a session: list_sites, select_site, then load the pink-core playbook.
The stdio bridge
| Variable | Default | Meaning |
|---|---|---|
EDITPINK_API_URL | https://app.edit.pink | The server to talk to |
EDITPINK_API_KEY | unset | Your key. Unset: the bridge signs in with a device code on first use and keeps the key in ~/.editpink-mcp-state.json. |
The bridge refreshes its tool list and instructions from the server in the background; a change takes effect the next time the client starts it. An outdated bridge is told to update; see Versioning.
Check it works
Ask your AI to list my Pink sites. If that fails, see Responses and errors.