markaDocs
MCP

Claude Desktop

Connect Claude Desktop to Marka as a custom connector over OAuth, or through the SDK's stdio bridge for local development.

Claude Desktop reaches remote MCP servers through custom connectors, which handle OAuth in the browser for you. That is the route to use: one URL, no key, and you can disconnect it from Marka later. The stdio bridge below remains the way to point Claude Desktop at a local Marka.

In Claude Desktop, open Settings → Connectors, choose Add custom connector at the bottom of the Connectors section, and paste:

https://joinmarka.com/api/mcp

Leave Advanced settings alone — it is there to supply an OAuth Client ID and Secret for servers that do not support dynamic client registration. Marka does, so the connector registers itself.

Claude then opens your browser: sign in to Marka if you are not already, check the connector's name and the callback address on the consent screen, and press Allow. The Marka tools appear in the tools list.

On claude.ai the same flow lives under Customize → Connectors → + → Add custom connector; in a Team or Enterprise workspace an owner adds it under Organization settings → Connectors and each member then connects individually. Custom connectors are a paid-plan feature — free accounts are limited to one. Anthropic documents the current UI in Get started with custom connectors using remote MCP.

Check the callback address

Any application can register itself under any name. The consent screen shows the address the connector will send you back to — that is the part a lookalike cannot fake.

You get the hosted server's six tools: search_listings, get_listing, list_categories, get_seller_info, create_listing_draft, update_listing_draft. See Tools.

To revoke access, go to Marka → Settings → Connected apps and press Disconnect. That invalidates the token immediately, wherever it is. Removing the connector in Claude Desktop only makes that copy of Claude forget it.

Connections come from Anthropic's servers

A custom connector is dialled from Anthropic's infrastructure, not from your machine, so the URL has to be reachable on the public internet. http://localhost:3001/api/mcp will not work — use the stdio bridge below for local development.

The stdio bridge

claude_desktop_config.json has no HTTP transport: it connects to an MCP server by spawning a subprocess and speaking over stdin/stdout. That route runs the SDK's local bridge, which talks to the public /api/v1 API and therefore needs an API key.

Use it when you are developing against a local Marka, or when you want the bridge's tool set — the SDK's six: search_listings, get_listing, list_categories, get_me, create_listing, update_listing. See SDK.

What you need

  1. An API key from Settings → API keys (Getting started).
  2. Node.js 20.19 or newer. There is nothing to install — npx fetches the package on first run.

Config

Edit claude_desktop_config.json:

  • macOS — ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows — %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "marka": {
      "command": "npx",
      "args": ["-y", "-p", "@joinmarka/sdk", "marka-mcp-stdio"],
      "env": {
        "MARKA_API_KEY": "mk_YOUR_KEY_HERE"
      }
    }
  }
}

Restart Claude Desktop. The Marka tools should appear in the tools list.

If the package is already installed

Where @joinmarka/sdk is a dependency, the marka-mcp-stdio bin is already on the path and the block collapses to:

{
  "mcpServers": {
    "marka": {
      "command": "marka-mcp-stdio",
      "args": [],
      "env": {
        "MARKA_API_KEY": "mk_YOUR_KEY_HERE"
      }
    }
  }
}

This is exactly what getMcpServerConfig({ apiKey }).claudeDesktop returns from the SDK — call it if you would rather generate the block than type it.

From a checkout

Working on the SDK itself? The workspace package runs its TypeScript source through tsx instead of the compiled bin, so point Claude Desktop at the file:

{
  "mcpServers": {
    "marka": {
      "command": "node",
      "args": ["/absolute/path/to/marka/packages/sdk/bin/mcp-stdio.mjs"],
      "env": {
        "MARKA_API_KEY": "mk_YOUR_KEY_HERE"
      }
    }
  }
}

Pointing at a different environment

Add MARKA_BASE_URL to develop against a local Marka:

"env": {
  "MARKA_API_KEY": "mk_YOUR_KEY_HERE",
  "MARKA_BASE_URL": "http://localhost:3001"
}

Origin only

MARKA_BASE_URL is scheme and host — no /api, no /v1. Those are appended by the client.

The bridge also accepts both as flags, which is handy for testing it by hand:

npx -p @joinmarka/sdk marka-mcp-stdio --api-key=mk_… --base-url=http://localhost:3001
npx -p @joinmarka/sdk marka-mcp-stdio --help

Troubleshooting

The connector will not authorize. Marka's consent screen only appears for a signed-in browser session; if you are signed out, sign in first and start the connection again from Claude.

The server exits immediately. The stdio bridge needs a key: without --api-key or MARKA_API_KEY it writes marka-mcp-stdio: no API key to stderr and exits 1.

Tools fail with a 401. On a custom connector, the token was disconnected or has expired past its refresh window — remove and re-add the connector. On the bridge, the key is missing, malformed, revoked, or expired; check it against GET /api/v1/me first — see Getting started.

Writes fail with a 402. The local bridge writes through /api/v1, which requires the api_write entitlement (Pro or higher). Ask the assistant to call get_me and it will tell you which entitlements the key carries. See Plans & limits.

Nothing appears after editing the config. Claude Desktop reads claude_desktop_config.json at startup — restart it fully.

On this page