Skip to main content

MCP server

The @pocketping/mcp server connects PocketPing to any Model Context Protocol client — Claude Desktop, Cursor, and a growing list of AI tools — so your assistant can triage your inbox and actually reply to visitors.

Unlike read-only support integrations, a PocketPing reply sent through the MCP fans out to the chat widget and every connected bridge (Telegram/Discord/Slack) — your assistant closes the loop, it doesn't just summarize.

Setup

First, create an API key: dashboard → Settings → API keysCreate key. Copy it (it's shown once).

The fastest path — no install. Add a custom connector pointing at the hosted server and authenticate with your key as a Bearer token.

  • Connector URL: https://app.pocketping.io/api/mcp
  • Auth: Authorization: Bearer ppk_…

For config-file clients (Claude Desktop, Cursor):

{
"mcpServers": {
"pocketping": {
"url": "https://app.pocketping.io/api/mcp",
"headers": { "Authorization": "Bearer ppk_your_key_here" }
}
}
}

The endpoint speaks Streamable HTTP (the current MCP transport; legacy SSE is disabled) and authenticates with your API key as a Bearer token — so it works in any client that lets you set a header or token: Cursor, Claude Desktop, the Claude API connector, ChatGPT, or the local option below. (Claude's web "Add connector" UI expects an OAuth flow rather than a Bearer header, so use one of those clients there.)

Local (npx)

Prefer to run it on your machine, or self-hosting PocketPing? Use the @pocketping/mcp package over stdio:

{
"mcpServers": {
"pocketping": {
"command": "npx",
"args": ["-y", "@pocketping/mcp"],
"env": {
"POCKETPING_API_KEY": "ppk_your_key_here",
"POCKETPING_API_URL": "https://app.pocketping.io"
}
}
}
}

Self-hosting? Point POCKETPING_API_URL at your own instance.

Tools

ToolRead/writeWhat it does
list_projectsreadList your projects
list_sessionsreadList conversations — filter by projectId, status, unanswered, or a search q
get_conversationreadFull transcript + visitor details for one session
get_statsreadMini support stats — conversations, response rate, median first reply, CSAT% (projectId?, period 7d/30d)
send_replywriteSend a real reply to a visitor (widget + all bridges)

send_reply is the only write tool and is marked non-read-only, so well-behaved clients ask you to confirm before it sends.

Prompts

PromptWhat it does
triage_unansweredSummarize chats awaiting a reply and propose drafts
draft_replyDraft (but not send) a reply for a specific conversation

Example

You: Summarize my unanswered PocketPing chats and draft a reply to each.

The assistant calls list_sessions(unanswered=true), then get_conversation on each, summarizes, and proposes drafts. You approve one, and it calls send_reply — the visitor sees it in the widget, and it lands in your Telegram/Slack thread too.

Security

  • Keys are organization-scoped, hashed at rest, and revocable at any time from the dashboard (Settings → API keys).
  • The server talks to the authenticated /api/v1 management API over HTTPS.
  • Rate-limited to 600 requests/minute per key.

Behind the scenes

Both modes expose the same tools. The hosted endpoint (/api/mcp) runs in-process; the npx package is a thin stdio wrapper over the same /api/v1 management API. So anything the MCP can do, your own scripts and agents can do too with the same API key.