Purser

Connect your AI to Purser

Your AI reads your books in Purser over MCP: invoices, payments, cash, VAT, what waits for approval and the CFO's policy.

Read only. No AI can approve, pay, change a limit or write to the books. Every payment needs the CFO's Face ID in Purser Cloud.

Serverhttps://purser-try.max-31b.workers.dev/mcp
TransportStreamable HTTP (MCP 2026-07-28, and 2025-11-25 back to 2024-11-05)
Sign-inOAuth 2.1 with PKCE, or a bearer header with your connector token (Purser Cloud: Settings, Connect your AI).
Demo tokenpurser-demo-read-only reads the demo company: made-up data, no real money.

Claude

claude.ai, the Claude desktop and mobile apps, and Claude Code.

  1. claude.ai or the Claude app: Customize (or Settings), Connectors, Add custom connector.
  2. Name it Purser and paste https://purser-try.max-31b.workers.dev/mcp. Leave the sign-in on automatic.
  3. Claude opens Purser's sign-in page: paste your connector token, or choose Use the demo company.

Claude Code, with a token

claude mcp add --transport http purser https://purser-try.max-31b.workers.dev/mcp --header "Authorization: Bearer purser-demo-read-only"

Claude Code, signing in through Purser's page

claude mcp add --transport http purser https://purser-try.max-31b.workers.dev/mcp

On a Team or Enterprise plan an owner adds custom connectors for the organisation.

ChatGPT

ChatGPT on the web: custom MCP servers as connectors (apps).

  1. In ChatGPT, open Apps (or Plugins), +, Add custom MCP server.
  2. Name Purser, connection URL https://purser-try.max-31b.workers.dev/mcp.
  3. Authentication: OAuth. ChatGPT finds Purser's sign-in by itself; on Purser's page paste your connector token or choose Use the demo company.
  4. Accept the warning and create it. Purser's tools are read only.

ChatGPT signs in by OAuth only; it cannot send a fixed token, so the demo token does not apply here (choose Use the demo company instead). OpenAI lists custom MCP servers for Business, Enterprise and Edu workspaces, and read/fetch connectors for Pro.

Cursor

Cursor's agent, in ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project).

  1. Click Add to Cursor, or paste the config below.
  2. Without a header, Cursor opens Purser's sign-in page.

~/.cursor/mcp.json

{
  "mcpServers": {
    "purser": {
      "url": "https://purser-try.max-31b.workers.dev/mcp",
      "headers": {
        "Authorization": "Bearer ${env:PURSER_CONNECTOR_TOKEN}"
      }
    }
  }
}

Set PURSER_CONNECTOR_TOKEN to your connector token (or purser-demo-read-only).

VS Code

GitHub Copilot's agent mode in VS Code.

  1. Click Add to VS Code, or Command Palette, MCP: Add Server, HTTP, and paste the address.
  2. VS Code opens Purser's sign-in page, or sends the header from the config below.

.mcp.json at the workspace root (or ~/.copilot/mcp-config.json)

{
  "mcpServers": {
    "purser": {
      "type": "http",
      "url": "https://purser-try.max-31b.workers.dev/mcp",
      "headers": {
        "Authorization": "Bearer ${PURSER_CONNECTOR_TOKEN}"
      }
    }
  }
}

.vscode/mcp.json (the older format, asks for the token once)

{
  "inputs": [
    {
      "type": "promptString",
      "id": "purser-token",
      "description": "Purser connector token",
      "password": true
    }
  ],
  "servers": {
    "purser": {
      "type": "http",
      "url": "https://purser-try.max-31b.workers.dev/mcp",
      "headers": {
        "Authorization": "Bearer ${input:purser-token}"
      }
    }
  }
}

Gemini CLI

Google's Gemini CLI, in ~/.gemini/settings.json (or .gemini/settings.json in a project).

  1. Run the command, or add the config. httpUrl (not url) is Streamable HTTP.

Command

gemini mcp add --transport http --scope user --header "Authorization: Bearer purser-demo-read-only" purser https://purser-try.max-31b.workers.dev/mcp

~/.gemini/settings.json

{
  "mcpServers": {
    "purser": {
      "httpUrl": "https://purser-try.max-31b.workers.dev/mcp",
      "headers": {
        "Authorization": "Bearer purser-demo-read-only"
      }
    }
  }
}

Without a header, Gemini CLI finds Purser's sign-in on the first 401.

Windsurf

Windsurf, now Devin Desktop: its MCP config file.

  1. Open the MCP config (~/.config/devin/mcp_config.json; older Windsurf: ~/.codeium/windsurf/mcp_config.json) and add Purser.

mcp_config.json

{
  "mcpServers": {
    "purser": {
      "serverUrl": "https://purser-try.max-31b.workers.dev/mcp",
      "headers": {
        "Authorization": "Bearer ${env:PURSER_CONNECTOR_TOKEN}"
      }
    }
  }
}

Devin CLI

devin mcp add purser https://purser-try.max-31b.workers.dev/mcp

Windsurf's MCP documentation now lives in Devin's docs.

Other

Any MCP client that speaks Streamable HTTP, and the MCP Inspector.

  1. The server: https://purser-try.max-31b.workers.dev/mcp (Streamable HTTP). Sign-in: OAuth 2.1 with PKCE (client metadata documents or dynamic registration), or a bearer header.

MCP Inspector

npx @modelcontextprotocol/inspector --cli https://purser-try.max-31b.workers.dev/mcp --transport http --method tools/list --header "Authorization: Bearer purser-demo-read-only"