mcpField
A
Apideck MCP Server

Apideck MCP Server

远程服务
apideck.com商业与营销201 周前更新

关于 Apideck MCP Server

Apideck MCP Server 通过单一 MCP 端点向 Agent 提供 Apideck Unified API 操作,覆盖会计、CRM、人力资源等领域。多种工具发现模式支持按需加载,或使用精简的代码调用接口。

主要功能

  1. 01覆盖 10 个 API 的 330 个工具
  2. 02渐进式发现工具
  3. 03静态与代码调用模式
  4. 04按 HTTP 方法筛选工具
  5. 05支持托管 HTTP 与本地 stdio

适用场景

  1. 01管理会计记录与报表
  2. 02搜索和更新 CRM 联系人
  3. 03处理文件与人力资源数据
  4. 04限制 Agent 仅执行读取或写入操作

MCP 相关

它将 Apideck Unified API 操作作为 MCP 工具提供,涵盖会计、CRM、人力资源、文件存储等领域。客户端可连接托管 HTTP 端点,也可通过 stdio 在本地运行服务。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://mcp.apideck.dev/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

全部服务地址
Streamable HTTPhttps://mcp.apideck.dev/mcp需要授权
安装包
npm@apideck/mcp0.1.13

工具

4
参数类型必填说明
scopeenum否按变更范围筛选:"read"(不写入)、"write"(创建/更新)或 "destructive"(删除/覆盖)。省略则包含所有范围。read | write | destructive
domainstring否将结果限制为单个工具域(例如 "accounting"、"hris")。省略则获取跨域索引。使用之前无参数调用返回的键。
search_termsarray否在工具名称/描述中按不区分大小写的子字符串筛选条件进行 AND 匹配(例如 ["invoice","create"])。省略则列出该域中的所有工具。

详细介绍

Apideck MCP 服务

npm version MCP Registry Glama score voke MTQS License: MIT

用于 Apideck Unified API 的模型上下文协议服务。通过一次集成,将任何兼容 MCP 的 Agent 连接到 200 多个连接器,包括会计系统、HRIS 平台、CRM、文件存储等。

快速连接

在 Cursor 中安装 在 VS Code 中安装

Claude Desktop(.mcpb bundle)

推荐 — 预构建 bundle:

将预构建的 mcp-server.mcpb 拖放到 Claude Desktop 中。Claude 会读取 manifest.json 来提示输入凭据并启动服务,无需手动配置。

说明

详细了解 Desktop Extensions。

本地 stdio(npx)替代方案:

编辑 ~/Library/Application Support/Claude/claude_desktop_config.json(macOS)或 %APPDATA%\Claude\claude_desktop_config.json(Windows):

{
  "mcpServers": {
    "apideck": {
      "command": "npx",
      "args": ["-y", "@apideck/mcp", "start"],
      "env": {
        "APIDECK_API_KEY": "YOUR_API_KEY",
        "APIDECK_CONSUMER_ID": "YOUR_CONSUMER_ID",
        "APIDECK_APP_ID": "YOUR_APP_ID"
      }
    }
  }
}

保存后重启 Claude Desktop。将 @apideck/mcp 替换为 @apideck/[email protected],即可固定到特定版本。

Claude Code CLI

在 shell 中设置凭据:

export APIDECK_API_KEY="..."
export APIDECK_CONSUMER_ID="..."
export APIDECK_APP_ID="..."

托管版(推荐):

claude mcp add --transport http apideck https://mcp.apideck.dev/mcp \
  --header "Authorization: Bearer $APIDECK_API_KEY" \
  --header "x-apideck-consumer-id: $APIDECK_CONSUMER_ID" \
  --header "x-apideck-app-id: $APIDECK_APP_ID"

本地 stdio(npx):

claude mcp add apideck \
  -e APIDECK_API_KEY="$APIDECK_API_KEY" \
  -e APIDECK_CONSUMER_ID="$APIDECK_CONSUMER_ID" \
  -e APIDECK_APP_ID="$APIDECK_APP_ID" \
  -- npx -y @apideck/mcp start

start 命令仅从环境变量读取凭据,不接受 --api-key / --consumer-id / --app-id 标志。

Windsurf

Settings → Cascade → Manage MCPs → View raw config,然后粘贴:

{
  "mcpServers": {
    "apideck": {
      "url": "https://mcp.apideck.dev/mcp",
      "headers": {
        "x-apideck-api-key": "YOUR_API_KEY",
        "x-apideck-consumer-id": "YOUR_CONSUMER_ID",
        "x-apideck-app-id": "YOUR_APP_ID"
      }
    }
  }
}
任何 MCP 客户端(手动 JSON)
{
  "mcpServers": {
    "apideck": {
      "url": "https://mcp.apideck.dev/mcp",
      "headers": {
        "x-apideck-api-key": "YOUR_API_KEY",
        "x-apideck-consumer-id": "YOUR_CONSUMER_ID",
        "x-apideck-app-id": "YOUR_APP_ID"
      }
    }
  }
}

Claude Desktop(.mcpb 插件 bundle)

Apideck 提供 Claude 插件 bundle(.mcpb — Anthropic 的模型上下文协议 Bundle 格式)。将它放入 Claude Desktop,即可使用完整服务(330 个端点工具 + 4 个工作流工具),并通过标准插件界面输入 API 密钥 / consumer ID / app ID。

pnpm mcpb:build       # → dist/mcp-server.mcpb (~590 KB)

该 bundle 在本地构建;CI 发布到 GitHub Releases 的工作暂缓进行。使用 Claude Desktop 的插件安装程序打开 .mcpb;Claude Desktop 会读取 manifest.json,配置凭据并启动服务。


工具

330 个工具,涵盖 10 个统一 API:

API工具数覆盖范围
Accounting143发票、账单、付款、供应商、客户、日记账分录、总账科目、采购订单、税率、损益表、资产负债表等
CRM50公司、联系人、潜在客户、商机、销售管道、备注、活动、用户
File Storage32文件、文件夹、云盘、共享链接、上传会话
HRIS25员工、公司、部门、工资单、休假申请
Vault23连接、使用方、会话、自定义映射、日志
ATS15申请人、申请、职位
Issue Tracking15集合、工单、用户、标签、评论
Connector8API、连接器、资源、覆盖范围元数据
Ecommerce7客户、订单、产品、商店
Webhook6Webhook 订阅、日志
Proxy6GET、POST、PUT、PATCH、DELETE、OPTIONS
工作流工具

按意图分组的工作流会通过单个 MCP 工具编排多个调用,避免 Agent 反复往返调用,以及经常出错的字段传递。

工具功能调用数
apideck-month-end-close-check并行调用逾期应付账款、逾期应收账款、资产负债表和损益表。部分报告不受连接器支持时,仍返回部分结果。4

托管服务

服务已在以下地址上线:

https://mcp.apideck.dev/mcp

通过请求头传递凭据:

请求头描述
x-apideck-api-key你的 Apideck API 密钥
x-apideck-consumer-id你的应用中的终端用户 / 客户 ID(可选——见下文)
x-apideck-app-id你的 Apideck 应用 ID
x-apideck-auth-type可选。设为 JWT,即可使用 Vault 会话令牌而非 API 密钥进行身份验证
Vault 会话令牌(JWT)

若要让终端用户的浏览器或 Agent 无需你的 API 密钥即可调用工具,请在后端创建一个 Vault 会话,并传递其 session_token:

Authorization: Bearer <session_token>
x-apideck-auth-type: JWT
x-apideck-app-id: <your app ID>
x-apideck-consumer-id: <the session's consumer ID>

服务会在每次 Apideck API 调用中转发 x-apideck-auth-type: JWT,其方式与 API Explorer 对会话进行身份验证相同。其他任何值都会继续使用 API 密钥进行身份验证。以下是一些限制:

  • 只有在请求中同时提供 bearer 令牌时,该请求头才会生效。服务自身的 APIDECK_API_KEY 绝不会作为 JWT 发送。
  • 会话令牌无法创建新的 Vault 会话。如果连接需要重新授权,工具会返回普通错误消息,而不会提供重新授权链接。
  • JWT 身份验证仅适用于 HTTP。stdio CLI 始终使用 API 密钥。
使用方范围限定(可选)

连接时无需提供使用方 ID。可以不设置 APIDECK_CONSUMER_ID / x-apideck-consumer-id,以不限定范围的方式启动服务,然后在调用任意工具时传入 consumer_id 参数,为每次调用提供或覆盖使用方:

execute_tool({ name: "crm-contacts-all", input: { consumer_id: "acme-inc" } })

优先级:每次调用的 consumer_id 参数优先于 APIDECK_CONSUMER_ID 环境变量 / x-apideck-consumer-id 请求头。

  • 不限定范围的调用适用于不需要使用方的应用范围端点,例如 Webhook 日志(webhook-event-logs-all)和 vault-connections-all。
  • 使用方范围限定的端点若在未提供使用方时调用,会返回 Apideck 的“需要使用方”错误,因此请为这些端点设置 consumer_id(或环境变量 / 请求头)。
锁定身份(可选启用)

若要将身份固定为启动时请求头 / 环境变量中的值,并阻止 Agent 在每次调用时切换使用方或连接,请使用 --lock-identity(CLI),或在托管服务 URL 后添加 ?lock_identity=true。锁定后,每次调用中的 consumer_id / service_id 参数都会被忽略。默认关闭。需要 consumer_id 作为路径参数的 Vault 使用方工具(例如 vault-consumers-one)只接受已锁定的使用方;任何其他值,或未锁定使用方时,都会被拒绝。service_id 路径参数(例如 vault-connections-one)不受影响。


三种模式

模式暴露的工具初始 token 数最适合
dynamic(默认)4 个元工具~1,300通用 Agent、对 token 敏感的场景
static全部 330 个工具~35–55K专注于特定 API 的 Agent
codeapideck_search + apideck_run~600通过 JS 以编程方式调用端点的 Agent
Dynamic 模式

Agent 逐步发现工具 — 与预先加载全部 330 个工具架构相比,token 数减少约 85%:

list_tools({})
  → { total: 330, domains: [{ name: "accounting", count: 143 }, ...],
      hint: "Call list_tools(domain=X) or list_tools(search_terms=[...])" }

list_tools({"search_terms": ["invoices"]})
  → accounting-invoices-all, accounting-invoices-add, accounting-invoices-one, ...

describe_tool_input({"name": "accounting-invoices-all"})
  → Full JSON Schema with all parameters

execute_tool({"name": "accounting-invoices-all", "input": {"limit": 10}})
  → Invoice data from the connected accounting system

直接在 input 中放入操作字段,并遵循 describe_tool_input 返回的契约。动态执行会在分发前验证参数;格式错误的封装和违反架构的输入会返回 isError: true,并包含 code: "invalid_tool_input"、字段路径或问题路径,且不会进行下游调用。 写入工具也会拒绝未知的顶层字段,因此未声明的内容不会传递到 API。验证错误不会回显提交的值。仍支持按调用覆盖 consumer_id 和 service_id;身份锁定规则仍然适用。 请求架构会省略只读响应字段,同时保留可写的关联 ID 和必需的路径 ID。这不会增加幂等性,也不会让写入重试变得安全。

你可以将 dynamic 模式与范围筛选器结合使用:

{
  "mcpServers": {
    "apideck": {
      "command": "node",
      "args": ["dist/bin/mcp.js", "--mode", "dynamic", "--scope", "read"],
      "env": { "APIDECK_API_KEY": "...", "APIDECK_CONSUMER_ID": "...", "APIDECK_APP_ID": "..." }
    }
  }
}
Code 模式

Code 模式只暴露两个工具,而非 330 多个。它专为更喜欢将端点作为方法调用,而不是发起工具调用的 Agent 设计:

  1. apideck_search — 按子字符串查找端点,并返回 camelCase 方法名
  2. apideck_run — 执行 JS 脚本,其中 apideck.<methodName> 绑定到实时端点分发器,并在 node:vm 中进行沙箱隔离
apideck_search("invoices")
  → {
      count: 4,
      endpoints: [
        { name: "accounting-invoices-list",   method: "accountingInvoicesList" },
        { name: "accounting-invoices-create",  method: "accountingInvoicesCreate" },
        { name: "accounting-invoices-get",     method: "accountingInvoicesGet" },
        { name: "accounting-invoices-delete",  method: "accountingInvoicesDelete" }
      ]
    }

apideck_run({
  script: "return await apideck.accountingInvoicesList({ request: { limit: 5 } })"
})
  → Invoice data from the connected accounting system

沙箱会移除 process、require、fs、child_process 和其他 Node 全局对象 — 脚本只能访问 apideck 对象。


范围

按 HTTP 方法类别筛选工具:

范围HTTP 方法标志
readGET、HEAD--scope read
writePOST、PUT、PATCH--scope write
destructiveDELETE--scope destructive

重复使用该标志即可组合多个范围(--scope read --scope write)。在托管端点上,使用逗号分隔的查询参数:?scopes=read,write。无效或空值会被拒绝(CLI 解析错误 / HTTP 400)。所有模式均适用范围筛选,包括 code。


连接任意 Agent 框架

远程(托管 — 无需本地安装)
# OpenAI Agents SDK
from agents import Agent
from agents.mcp import MCPServerHTTP

agent = Agent(
    name="Apideck Agent",
    mcp_servers=[MCPServerHTTP(
        url="https://mcp.apideck.dev/mcp",
        headers={
            "x-apideck-api-key": "...",
            "x-apideck-consumer-id": "...",
            "x-apideck-app-id": "..."
        }
    )]
)
# Pydantic AI
from pydantic_ai import Agent
from pydantic_ai.mcp import MCPServerHTTP

agent = Agent("anthropic:claude-sonnet-4-5", mcp_servers=[
    MCPServerHTTP(
        url="https://mcp.apideck.dev/mcp",
        headers={
            "x-apideck-api-key": "...",
            "x-apideck-consumer-id": "...",
            "x-apideck-app-id": "..."
        }
    )
])
# LangChain / LangGraph
from langchain_mcp_adapters.client import MultiServerMCPClient

client = MultiServerMCPClient({
    "apideck": {
        "url": "https://mcp.apideck.dev/mcp",
        "transport": "streamable_http",
        "headers": {
            "x-apideck-api-key": "...",
            "x-apideck-consumer-id": "...",
            "x-apideck-app-id": "..."
        }
    }
})
tools = await client.get_tools()
本地 stdio(用于开发)
pnpm install
pnpm build

# Dynamic mode (default)
APIDECK_API_KEY=... APIDECK_CONSUMER_ID=... APIDECK_APP_ID=... node dist/bin/mcp.js start

# Static mode (all 330 tools)
APIDECK_API_KEY=... node dist/bin/mcp.js start --mode static

# Code mode
APIDECK_API_KEY=... node dist/bin/mcp.js start --mode code

# Read-only
APIDECK_API_KEY=... node dist/bin/mcp.js start --scope read
# OpenAI Agents SDK (local stdio)
from agents import Agent
from agents.mcp import MCPServerStdio

mcp = MCPServerStdio(name="apideck", params={
    "command": "node",
    "args": ["dist/bin/mcp.js", "start", "--mode", "dynamic"],
    "env": {
        "APIDECK_API_KEY": "...",
        "APIDECK_CONSUMER_ID": "...",
        "APIDECK_APP_ID": "..."
    }
})
agent = Agent(name="Apideck Agent", mcp_servers=[mcp])

可靠性

运行时会自动重试失败的请求,避免暂时性错误传递给 Agent:

  • 重试的状态码:408、500、502、503、504
  • 重试的网络错误:ECONNRESET、ECONNREFUSED、ETIMEDOUT 等
  • 策略:指数退避,最多 4 次尝试,最长间隔为 30 s
  • 幂等性:仅对 GET、HEAD、PUT、DELETE、OPTIONS、TRACE 触发重试 — 不会自动重试 POST/PATCH

二进制内容

返回图像或音频的 File Storage 端点会将其作为原生 MCP 内容块发送,而不是作为 JSON 中的 base64 字符串:

{ "type": "image", "data": "<base64>", "mimeType": "image/png" }
{ "type": "audio", "data": "<base64>", "mimeType": "audio/mpeg" }

支持多模态 MCP 内容的 Agent(Claude、GPT-4o)会接收原始字节 — 无需额外的解码步骤。


许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。