# Pocket MCP Server Setup for Claude and Cursor

> Set up Pocket's MCP server in Claude Code, Claude Desktop, Cursor and other clients: the URL, OAuth or API key, every tool, and what needs Pocket Pro.

- Canonical URL: https://webofmike.com/pocket-mcp-server/
- Author: Mike Moore (https://webofmike.com/about/)
- Published: 2026-10-21
- Last modified: 2026-10-21
- Tags: AI Tools, Productivity, MCP
- Cite as: Mike Moore, "Pocket MCP Server Setup for Claude and Cursor", Web of Mike (webofmike.com), 2026-10-21. https://webofmike.com/pocket-mcp-server/


Pocket's MCP server lives at https://public.heypocketai.com/mcp and works with any MCP client that supports remote servers, including Claude Code, Claude Desktop and Cursor. Sign in with OAuth where your client supports it, or send an API key that starts with pk_ as a Bearer header where the client only takes static headers. I run it every day from Claude Code, on top of [how I use the Pocket AI recorder](/pocket-ai-recorder/). If you do not have recordings in the account yet, [set up the recorder first](/how-to-use-pocket-ai-recorder/).

**Try the recorder I use:** {{< aff pocket >}}Get Pocket{{< /aff >}}. I use and pay for this.

## What the Pocket MCP server does

It lets an AI client search recordings, read and update action items, list folders, and on Pro fetch transcripts and ask questions across meetings. Pocket calls it a first release.

The client is whatever you already work in. The server is Pocket's. Once it is connected, questions like "what did I discuss last week" or "mark that follow-up as done" go to your recordings instead of a blank chat. Pocket's own examples also include listing this week's recordings, fetching the last transcript, searching a tag, and bumping the priority of open reminders. Those last two need Pro when they need the full transcript.

## URL, transport and sign-in

The endpoint is Streamable HTTP at `https://public.heypocketai.com/mcp`. Pocket's docs treat that URL as the server URL for every client on this page.

OAuth is the path Pocket recommends. Add the URL as a remote MCP server and finish the login prompt.

An API key is the path for clients that only take static headers. Create it in Pocket settings under Settings, then Developer, then API Keys. The key starts with `pk_`. Send it as `Authorization: Bearer pk_...` (the form Pocket recommends) or `Authorization: ApiKey pk_...`. Direct HTTP clients also need:

- `Content-Type: application/json`
- `Accept: application/json, text/event-stream`

If the client uses `mcp-remote`, forward the `Authorization` header with `--header`. Some clients, including Claude Desktop and Cursor, mangle command arguments that contain spaces. Pocket's examples put the value in an `AUTH_HEADER` environment variable and pass `Authorization:${AUTH_HEADER}` so the space in `Bearer pk_...` never lands in the argument list.

### OAuth or API key?

Use OAuth when the client supports it. An API key is a long-lived secret for your whole account. It [acts as the person, not the agent](/mcp-agent-identity-gap/). Pocket's docs do not describe narrowing OAuth scopes, and they do not describe how to revoke a grant on Pocket's side, so I am not claiming either.

## Setup by client

Pocket's docs list these clients. I am not ranking them.

### Claude Code

The OAuth command I use is the one on the hub:

```bash
claude mcp add --transport http pocket https://public.heypocketai.com/mcp
```

The first tool call opens a browser for Pocket sign-in.

The API key form, from Pocket's docs, is:

```bash
claude mcp add pocket --transport http https://public.heypocketai.com/mcp --header "Authorization: Bearer pk_your_api_key_here"
```

Or the same block in a settings file:

```json
{
  "mcpServers": {
    "pocket": {
      "type": "http",
      "url": "https://public.heypocketai.com/mcp",
      "headers": {
        "Authorization": "Bearer pk_your_api_key_here"
      }
    }
  }
}
```

Pocket's docs still show that file as `~/.claude/settings.json`. Claude Code's own docs store user-scoped and local-scoped MCP servers in `~/.claude.json`, and project-scoped servers in `.mcp.json` at the repo root. Restart Claude Code after you edit a file.

### Claude Desktop

OAuth is the connector UI: Settings, then Connectors, then Add custom connector, paste `https://public.heypocketai.com/mcp`, connect, and finish sign-in.

To do that in the Claude app step by step, see how to [connect it in Claude](/connect-pocket-ai-to-claude/).

For an API key, Pocket has you edit the config file and restart Claude Desktop.

- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`

```json
{
  "mcpServers": {
    "pocket": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://public.heypocketai.com/mcp",
        "--header",
        "Authorization:${AUTH_HEADER}"
      ],
      "env": {
        "AUTH_HEADER": "Bearer pk_your_api_key_here"
      }
    }
  }
}
```

<!-- TODO link S5 /mcp-config-file-locations/ when live -->

The `AUTH_HEADER` split is the space-in-arguments workaround above. Pocket's docs say to look for the plug icon after a restart.

### Cursor

<!-- TODO hands-on: Cursor OAuth install button behavior on the day -->

Pocket's docs recommend OAuth for Cursor. The API key block goes in Cursor's MCP settings, then restart:

```json
{
  "pocket": {
    "command": "npx",
    "args": [
      "-y",
      "mcp-remote",
      "https://public.heypocketai.com/mcp",
      "--header",
      "Authorization:${AUTH_HEADER}"
    ],
    "env": {
      "AUTH_HEADER": "Bearer pk_your_api_key_here"
    }
  }
}
```

Open Cursor Settings, search for MCP or go to Features, then MCP Servers, add the server, and restart.

### Other clients

Littlebird: Pocket is an official integration. Open Littlebird Settings, then Integrations, then Add integration, search for Pocket, and follow the prompts.

Windsurf: add the same `mcp-remote` plus `AUTH_HEADER` block Pocket shows for other clients, in `~/.windsurf/mcp.json`.

Cline: the same block, in VS Code Settings under Cline MCP.

Any generic Streamable HTTP client: endpoint `https://public.heypocketai.com/mcp`, transport Streamable HTTP, `Authorization: Bearer pk_your_api_key_here`, plus the JSON and event-stream headers.

## Every Pocket MCP tool

| Tool | Plan | What it returns |
|---|---|---|
| `search_pocket_conversations` | Every plan | Section hits with a query, or recent full transcripts without one. Folder filter with `folderIds`. |
| `search_pocket_actionitems` | Every plan | Action items, filterable by status, priority, category, and due date. |
| `update_pocket_actionitem` | Every plan | The updated action, written back to the Pocket app. |
| `get_account_info` | Every plan | Email, display name, plan, and active organization. |
| `list_pocket_folders` | Every plan | Spaces and folders with recording counts. |
| `get_pocket_conversation` | Pro | Full transcript segments, the Notes summary, and a signed audio URL. |
| `query_pocket_meetings` | Pro | A synthesized answer plus the source recording ids. |

### Search has two modes

With a `query`, it runs hybrid semantic and keyword search and returns up to 8 section hits, with timestamps and summaries. Without a `query`, it returns recent full transcripts, newest first, paged. If `data.meta.hasMore` is true, call again with `cursor` set to `data.meta.nextCursor`. Recordings that have not been transcribed yet come back with `transcriptAvailable: false`.

You can also filter by `recordingDateAfter`, `recordingDateBefore`, `tags`, and `folderIds`. Recency-mode recording objects include `transcriptSegments` (text, start, end, optional speaker) and a flattened `transcript` field Pocket keeps for compatibility.

### Updates write back

`update_pocket_actionitem` changes only the fields you send: status (`TODO`, `IN_PROGRESS`, `COMPLETED`, `CANCELLED`), priority (`CRITICAL`, `HIGH`, `MEDIUM`, `LOW`), due date, label, context, assignee. You pass the `actionItemId` from a search result. Setting COMPLETED stamps the completion time, and moving the item back out of COMPLETED clears it. Pass an empty string to clear due date, context, or assignee. Completions, reprioritizations, and reschedules show up in the Pocket app the same as edits made there.

`search_pocket_actionitems` filters on those same status and priority values, plus category (`TASK`, `MEETING`, `REMINDER`), due dates, a text query, and the date of the source recording.

### Audio links expire

`get_pocket_conversation` takes `recording_ids` and returns, for each recording, the title, date, tags, transcript segments, the Notes-tab summary from the most recent summarization (omitted if none exists yet), and a signed audio URL with `expiresIn` 3600 seconds. A link pasted into meeting notes is dead by the next meeting. Pocket no longer returns a flattened `transcript` field from this tool.

`query_pocket_meetings` takes a natural-language `query` and an optional `language`, and returns `answer` plus `sourceRecordings`. `list_pocket_folders` takes no parameters. `get_account_info` takes none either, and returns `userId`, `email`, `displayName`, `plan`, `tier`, and `organization` when you belong to one.

## Free vs Pro for MCP

From the tool table only. Search, action items, folders, and account info work on every Pocket plan. Fetching a full transcript with its summary, and asking a natural-language question across all meetings, need Pocket Pro. Pro-only tools stay unavailable on a free account rather than failing open.

## Keep it safe

Treat a `pk_` key like a password: not in repos, shared configs, or screenshots. Regenerate it if it leaks. [Keep long-lived keys out of the agent](/secretless-ai-agents/) when the client can do OAuth instead.

This server holds every conversation you have recorded, so it belongs on your team's [inventory of connected MCP servers](/shadow-mcp-servers/).

Transcripts are untrusted input for the model. A recording can carry instructions that were said out loud, which is the same shape as [prompt injection through MCP](/mcp-discovery-prompt-injection/). Folder filters on search are a way to keep a work question inside a work folder. They are not a permission boundary. The key, or the OAuth grant, still sees the whole account.

## Troubleshooting

Pocket's docs, in order:

- Restart the app after you change a config file.
- The key starts with `pk_`.
- The JSON is valid.
- If you use `mcp-remote`, the `Authorization` header is forwarded with `--header`.
- No stray spaces or newlines in the key.

If authentication still fails, regenerate the key in Pocket settings and try again. Tools not showing up is the restart, key-prefix, and valid-JSON list above. Pocket's own FAQ for this page is the URL, OAuth versus API key, and that the server works with MCP-compatible clients including Claude, Cursor, Littlebird, and other remote MCP clients.

