The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Apideck MCP Server listing page.
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent to 200+ connectors — accounting systems, HRIS platforms, CRM, file storage, and more — through one integration.
Recommended — prebuilt bundle:
Drag and drop the prebuilt mcp-server.mcpb onto Claude Desktop. Claude reads manifest.json to prompt for credentials and spawn the server — no manual config needed.
[!NOTE] Learn more about Desktop Extensions.
Local stdio (npx) alternative:
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
Restart Claude Desktop after saving. Pin a specific version by replacing @apideck/mcp with @apideck/mcp@0.1.15.
Set credentials in your shell:
Hosted (recommended):
Local stdio (npx):
The start command reads credentials from environment variables only — it does not accept --api-key / --consumer-id / --app-id flags.
Settings → Cascade → Manage MCPs → View raw config, then paste:
Apideck ships a Claude plugin bundle (.mcpb — Anthropic's Model Context Protocol Bundle format). Drop it into Claude Desktop and you get the full server (330 endpoint tools + 4 workflow tools) with API key / consumer ID / app ID prompted via the standard plugin UI.
The bundle is built locally; CI publication to GitHub Releases is deferred. Open the .mcpb with Claude Desktop's plugin installer; Claude Desktop reads manifest.json to wire credentials and spawn the server.
330 tools across 10 unified APIs:
| API | Tools | Coverage |
|---|---|---|
| Accounting | 143 | Invoices, bills, payments, suppliers, customers, journal entries, ledger accounts, purchase orders, tax rates, P&L, balance sheet, and more |
| CRM | 50 | Companies, contacts, leads, opportunities, pipelines, notes, activities, users |
| File Storage | 32 | Files, folders, drives, shared links, upload sessions |
| HRIS | 25 | Employees, companies, departments, payrolls, time-off requests |
| Vault | 23 | Connections, consumers, sessions, custom mappings, logs |
| ATS | 15 | Applicants, applications, jobs |
| Issue Tracking | 15 | Collections, tickets, users, tags, comments |
| Connector | 8 | APIs, connectors, resources, coverage metadata |
| Ecommerce | 7 | Customers, orders, products, stores |
| Webhook | 6 | Webhook subscriptions, logs |
| Proxy | 6 | GET, POST, PUT, PATCH, DELETE, OPTIONS |
Intent-grouped workflows orchestrate multiple calls behind a single MCP tool — saving agents the round-trips and field-plumbing they routinely get wrong.
| Tool | What it does | Calls |
|---|---|---|
apideck-month-end-close-check | Fans out aged-creditors, aged-debtors, balance-sheet, and P&L in parallel. Returns a partial result when some reports aren't supported by the connector. | 4 |
The server is live at:
Pass credentials via headers:
| Header | Description |
|---|---|
x-apideck-api-key | Your Apideck API key |
x-apideck-consumer-id | The end-user / customer ID in your app (optional — see below) |
x-apideck-app-id | Your Apideck application ID |
The consumer ID is optional at connect time. Leave APIDECK_CONSUMER_ID /
x-apideck-consumer-id unset to start the server unscoped, then supply or
override the consumer per call by passing a consumer_id argument to any tool:
Precedence: the per-call consumer_id argument wins over the
APIDECK_CONSUMER_ID env var / x-apideck-consumer-id header.
webhook-event-logs-all) and
vault-connections-all.consumer_id (or the env/header) for those.To pin identity to the boot header/env and stop agents from switching consumer
or connection per call, start with --lock-identity (CLI) or append
?lock_identity=true (hosted). Locked calls ignore per-call consumer_id /
service_id arguments. Off by default. Vault consumer tools that take
consumer_id as a path parameter (e.g. vault-consumers-one) only accept the
locked consumer; any other value, or no locked consumer, is refused.
service_id path parameters (e.g. vault-connections-one) are unaffected.
| Mode | Tools exposed | Initial tokens | Best for |
|---|---|---|---|
dynamic (default) | 4 meta-tools | ~1,300 | General-purpose agents, token-sensitive contexts |
static | All 330 tools | ~35–55K | Focused agents doing a specific API |
code | apideck_search + apideck_run | ~600 | Agents that call endpoints programmatically via JS |
Agents discover tools progressively — ~85% fewer tokens than loading all 330 schemas upfront:
You can combine dynamic mode with a scope filter:
Code mode exposes two tools instead of 330+. Designed for agents that prefer calling endpoints as methods rather than tool calls:
apideck_search — find endpoints by substring, returns camelCase method namesapideck_run — execute a JS script with apideck.<methodName> bound to live endpoint dispatchers, sandboxed in node:vmThe sandbox strips process, require, fs, child_process, and other Node globals — scripts only have access to the apideck object.
Filter tools by HTTP method class:
| Scope | HTTP methods | Flag |
|---|---|---|
read | GET, HEAD | --scope read |
write | POST, PUT, PATCH | --scope write |
destructive | DELETE | --scope destructive |
Repeat the flag to combine scopes (--scope read --scope write). On the hosted
endpoint use a comma-separated query param: ?scopes=read,write. Invalid or
empty values are rejected (CLI parse error / HTTP 400). Scopes apply in every
mode, including code.
The runtime automatically retries failed requests so transient errors don't surface to your agent:
ECONNRESET, ECONNREFUSED, ETIMEDOUT, and similarFile Storage endpoints that return images or audio send them as native MCP content blocks rather than base64 strings in JSON:
Agents that support multi-modal MCP content (Claude, GPT-4o) receive the raw bytes — no extra decoding step needed.
MIT