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.
Custom connector (recommended)
In Claude Desktop, open Settings → Connectors, choose Add custom connector at the bottom of the Connectors section, and paste:
https://joinmarka.com/api/mcpLeave 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
- An API key from Settings → API keys (Getting started).
- Node.js 20.19 or newer. There is nothing to install —
npxfetches 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 --helpTroubleshooting
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.