mcpField
I
InsumerAPI

InsumerAPI

已认证精选远程服务
insumermodel.comAI 与智能体26 天前更新

关于 InsumerAPI

InsumerAPI 是通过 MCP 服务向 AI Agent 和 MCP 客户端提供的条件式访问服务。它针对钱包条件返回经过签名的通过或未通过结果,不公开余额,也不要求身份信息。

主要功能

  1. 01覆盖 37 条链的钱包条件证明
  2. 02可离线验证的签名布尔结果
  3. 03可选的 EVM Merkle 证明
  4. 04商家发现与折扣码工具
  5. 05托管 HTTP 端点和本地服务

适用场景

  1. 01在 Agent 工作流中检查链上钱包条件
  2. 02向下游服务提供签名访问判定
  3. 03发现商家并验证折扣码

MCP 相关

MCP 服务提供证明、钱包信任、商家与代币目录、折扣检查及设置等工具。客户端可连接托管端点,也可在本地运行程序包。

配置

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

服务地址https://api.insumermodel.com/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 配置后重启。需要授权的服务会在首次连接时提示登录。

安装包
npmmcp-server-insumer1.23.0

工具

10

此工具无需参数。

详细介绍

mcp-server-insumer

npm License: MIT Glama License: MIT

适用于 InsumerAPI 的 MCP 服务:基于条件的访问基础设施。提供钱包和条件,即可在 37 条链上获取签名后的布尔值。不公开余额,无需身份信息。每个结果都经过签名,可使用已发布的密钥离线验证;在 EVM 链上,还可选择使用 Merkle 证明,让验证方直接根据区块头检查余额,而无需信任 API。

让 AI Agent(Claude Desktop、Cursor、Windsurf 以及任何兼容 MCP 的客户端)能够在任何工作流中添加基于条件的访问:验证链上条件、发现商家、生成签名折扣码并引导新商家入驻。

已投入生产: AsterPay 是一个通过获得许可的欧盟合作伙伴结算的非托管支付编排器,在其生产环境中的 ERC-8183 Agent 商业信任检查中使用 InsumerAPI 证明。案例研究。

另有以下版本:LangChain(26 个工具,PyPI)| ElizaOS(10 个操作,npm)| OpenAI GPT(GPT Store)| insumer-verify(客户端验证,npm)

完整的 AI Agent 验证 API 指南:涵盖全部 37 条链、信任配置、商业协议和签名验证。

快速开始

Claude Desktop

将以下内容添加到你的 claude_desktop_config.json:

{
  "mcpServers": {
    "insumer": {
      "command": "npx",
      "args": ["-y", "mcp-server-insumer"],
      "env": {
        "INSUMER_API_KEY": "insr_live_..."
      }
    }
  }
}
Cursor / Windsurf

将以下内容添加到 MCP 设置:

{
  "insumer": {
    "command": "npx",
    "args": ["-y", "mcp-server-insumer"],
    "env": {
      "INSUMER_API_KEY": "insr_live_..."
    }
  }
}
获取密钥:只需邮箱,无需控制面板或密码

有三种方式,都能在几秒内获取可用的 insr_live_... 密钥,包含 10 次免费验证和每天 100 次请求。每个邮箱限领一个免费密钥。

选项 A:让你的 Agent 来获取。 不提供密钥即可启动服务。你的 AI Agent 可以使用邮箱调用 insumer_setup 工具,即刻生成免费密钥。将密钥添加到配置中并重启。

选项 B:终端。

curl -s -X POST https://api.insumermodel.com/v1/keys/create \
  -H "Content-Type: application/json" \
  -d '{"email": "[email protected]", "appName": "MCP Server", "tier": "free"}'

选项 C:浏览器。 在 insumermodel.com 输入邮箱,密钥就会直接显示。

在配置中将其设为 INSUMER_API_KEY。

已经有密钥? 在 insumermodel.com/developers/account/ 管理用量、充值或升级。

选项 D:使用 x402 按调用付费(完全无需密钥)

无需密钥,只需将 INSUMER_PAYMENT_KEY 设置为一个临时 Base 钱包,并向其中存入几美元的 USDC。计量收费的调用(insumer_attest、insumer_wallet_trust、insumer_batch_wallet_trust)随后会通过 x402 内联付款:服务端请求价格,在 Base 上签署 EIP-3009 USDC 授权,然后重试。无需注册、无需积分、无需控制面板。

{
  "mcpServers": {
    "insumer": {
      "command": "npx",
      "args": ["-y", "mcp-server-insumer"],
      "env": { "INSUMER_PAYMENT_KEY": "0x<throwaway-wallet-private-key>" }
    }
  }
}
  • 仅支持 Base 上的 USDC;钱包需要有 USDC,但不需要 ETH(结算无需 Gas)。
  • 每次调用花费几美分(attest 为 $0.05,trust 为 $0.15)。请使用存入少量资金的专用临时钱包,切勿使用持有大量资金的钱包。
  • 每次报价都会在钱包签名前经过检查。 服务端只会向 InsumerAPI 自己的收款地址(0xee432065474D2C852700f74e3fD81e2Bcc16a3D4,或其在 2026-10-19 之前报价时使用的地址 0xAd982CB19aCCa2923Df8F687C0614a7700255a23)付款,只会在 Base 上使用 USDC 付款,且金额绝不会超过上限:默认每次调用 $3.00,即当前最大调用的价格(包含 Merkle 证明的 10 个钱包 trust 批次)。任何其他情况都会被拒绝,且不会签署任何内容。设置 INSUMER_MAX_PAYMENT_USDC 可更改上限,例如,如果你只调用 attest,可设为 "0.25"。最便宜的调用为 $0.05,因此低于该金额的上限会拒绝所有付费调用(服务端会在启动时发出警告)。无效值会关闭按调用付费,而不是回退到默认值。
  • 如果同时设置了 INSUMER_API_KEY 和 INSUMER_PAYMENT_KEY,则会使用密钥(积分)。

托管端点(无需安装)

同一服务也通过 MCP 可流式传输的 HTTP 协议运行在 https://api.insumermodel.com/mcp 上,适用于通过 URL 连接的客户端:ChatGPT 插件和开发者模式连接器、claude.ai 自定义连接器,以及无法运行 npm 包的托管 Agent 平台。粘贴 URL 即可;无需进行任何配置。

该端点为共享且匿名,因此提供十种无需调用者身份即可使用的工具(HOSTED_TOOLS:签名密钥、attest、合规模板、钱包 trust 和批量 trust、商户和代币目录、免费折扣检查、代码验证),计量收费工具共用每日免费额度。超出额度后,调用会被拒绝并提示访问此处。如需自己的额度、密钥和积分管理,或商户工具,请按上述说明使用自己的密钥在本地运行此包。

如需自行托管服务,请构建后设置 INSUMER_API_KEY 并运行 node build/http.js(PORT、INSUMER_HOSTED_TOOLS 和 INSUMER_DAILY_CAP 为可选项),或将其嵌入:从包根目录调用 createInsumerServer(options),即可返回适用于任意传输方式的已配置服务。

返回内容

当你的 Agent 调用 insumer_attest 时,会收到一份 ECDSA 签名的证明:

{
  "ok": true,
  "data": {
    "attestation": {
      "id": "ATST-A7C3E1B2D4F56789",
      "pass": true,
      "results": [
        {
          "condition": 0,
          "met": true,
          "label": "USDC >= 1000 on Ethereum",
          "type": "token_balance",
          "chainId": 1,
          "evaluatedCondition": {
            "chainId": 1,
            "contractAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
            "operator": "gte",
            "threshold": "1000",
            "type": "token_balance"
          },
          "conditionHash": "0x8a3b...",
          "blockNumber": "0x1799043",
          "blockTimestamp": "2026-03-26T20:04:23.000Z"
        }
      ],
      "passCount": 1,
      "failCount": 0,
      "attestedAt": "2026-02-28T12:34:57.000Z",
      "expiresAt": "2026-02-28T13:04:57.000Z"
    },
    "sig": "NgA7BO8SAildiTrgIQY2UyXsBrySZknkP85pT2Zqv8Hq0KsCsB8DRFVMkXgnXtCXrbb726Is6k4LyyBYU+f/Pw==",
    "kid": "insumer-attest-v2",
    "pqSig": "<base64 ML-DSA-65 signature>",
    "pqKid": "insumer-attest-pq1"
  },
  "meta": {
    "version": "1.0",
    "timestamp": "2026-02-28T12:34:57.000Z",
    "creditsRemaining": 99,
    "creditsCharged": 1
  }
}

sig 是 ECDSA P-256 签名(base64、P1363 r||s,88 个字符)。kid 用于标识密钥并选择签名的字节:insumer-attest-v2 对 "insumer.attestation.v2\n" + canonical_json({v: 2, id, pass, results, attestedAt}) 签名(每一层的键均按排序排列);insumer-attest-v1 则按插入顺序对 {id, pass, results, attestedAt} 的原始 JSON.stringify 结果签名。每个 attest 和 trust 响应都会进行双重签名:使用 ES256 和后量子 ML-DSA-65 签名,分别为 pqSig 和 pqKid(对后量子域标记及与 kid 选择相同的经典签名前映像进行签名;pqJwt 与 jwt 并列),它们会添加在 sig 和 kid 旁,不会更改这两项。conditionHash 是所评估条件逻辑的精确内容的 SHA-256 哈希。

没有余额。没有金额。只有经过密码学签名的真/假结果。

对于 XRPL 条件,结果包含 ledgerIndex、ledgerHash(已验证的账本哈希)和 trustLineState: { frozen: boolean },而不是 blockNumber/blockTimestamp。原生 XRP 条件包含 ledgerIndex 和 ledgerHash,但不包含 trustLineState。冻结的信任线会导致 met: false。

钱包身份验证(JWT)

在 insumer_attest 工具参数中添加 format: "jwt",即可将证明作为标准 JWT 持有者令牌接收:

{
  "wallet": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
  "conditions": [ ... ],
  "format": "jwt"
}

响应会额外包含一个 jwt 字段,其中包含由 ES256 签名的 JWT;旁边还有一个同级的 pqJwt(一个紧凑型 JWS,alg 为 ML-DSA-65,携带相同声明,并使用 insumer-attest-pq1 签名)。任何标准 JWT 库都可通过 GET /v1/jwks JWKS 端点验证 jwt 令牌,因此它兼容 Kong、Nginx、Cloudflare Access、AWS API Gateway 及其他接受 JWT 持有者令牌的中间件。

验证响应

你的 Agent 会获取证明。你的应用应对其进行验证。安装 insumer-verify(Python 版也可通过 PyPI 获取:pip install insumer-verify;检查项相同,包含相同的 27 个已发布测试向量):

npm install insumer-verify
import { verifyAttestation } from "insumer-verify";

// attestationResponse = the full API envelope {ok, data: {attestation, sig, kid, pqSig, pqKid}, meta}
// Do NOT pass attestationResponse.data; the function expects the outer envelope
const result = await verifyAttestation(attestationResponse, {
  jwksUrl: "https://insumermodel.com/.well-known/jwks.json",
  maxAge: 120, // reject if block data is older than 2 minutes
});

if (result.valid) {
  // Signature verified, condition hashes match, not expired
  const pass = attestationResponse.data.attestation.pass;
  console.log(`Attestation ${pass ? "passed" : "failed"} all conditions`);
} else {
  console.log("Verification failed:", result.checks);
}

它会报告五项独立判定:ECDSA 签名、条件哈希完整性、区块时效性、证明有效期,以及后量子签名(insumer-verify 1.8.1+ 会将其报告为已验证、已驳回、不存在或无法验证)。零运行时依赖,使用 Web Crypto API。

工具(27)

设置(免费,无需身份验证)
工具描述
insumer_setup即时生成免费的 API 密钥。提供电子邮件地址后,即可获取一个 insr_live_... 密钥,包含 10 次免费验证额度和每天 100 次请求额度。无需信用卡。
密钥发现(免费)
工具描述
insumer_jwks获取 JWKS:两个密钥共包含五个条目。ECDSA P-256 密钥分别对应 insumer-attest-v1、insumer-attest-v2 和 insumer-trust-v2;其后是 ML-DSA-65 后量子密钥,对应两个 RFC 9964 AKP 条目:insumer-attest-pq1 和 insumer-trust-pq1。请根据响应中的 kid(或 pqKid)匹配,切勿按位置匹配。
链上验证(消耗积分)

token_balance 阈值必须是十进制字符串。 请将 threshold 设为 "100",而不是 100。从 2026-06-10 起创建的密钥使用 kid: insumer-attest-v2 签名,可保留完整精度,并会拒绝 JSON 数字,返回 400。insumer_attest 工具接受数字或字符串,并将其强制转换为规范字符串;较早的 insumer-attest-v1 密钥两种格式均接受。

工具描述
insumer_attest验证链上条件(代币余额、NFT 所有权、EAS 证明、Farcaster 身份、用于任意布尔型视图函数的 evm_view_call、用于自适应扩展 Agent 支出限额的 ratio_to_amount,以及用于供应量占比规则的 ratio_to_supply;这三者仅支持 EVM;此外还包括用于 ERC-8004 Agent 注册的 erc8004_agent,以及用于验证 MetaMask 框架委托有效性的 erc7710_delegation,两者均支持 Base;还有用于检查 EVM 链上钱包地址自身代码状态的 account_code:expect 可设为普通密钥账户对应的 none、EIP-7702 委托标识符对应的 eip7702(可选指定 delegate),或任何其他代码对应的 contract;结果为满足或不满足,绝不会返回代码或委托目标)。返回带有 kid、evaluatedCondition、conditionHash(SHA-256)和 blockNumber/blockTimestamp 的 ECDSA 签名布尔值。1 积分。可选的 proof: "merkle" 可生成 EIP-1186 Merkle 证明(2 积分):代币余额的余额槽存储证明、原生币的账户证明(主题为 account_balance)、account_code 的账户证明(主题为 account_code),以及 erc7710_delegation 的撤销槽证明(主题为 delegation_revocation)。
insumer_compliance_templates列出可用的 EAS 合规模板(Base 上的 Coinbase Verifications、Optimism 上的 Gitcoin Passport)。免费。
insumer_wallet_trust生成 ECDSA 签名的钱包信任事实档案。包含 10 个维度、覆盖 27 条链的 155 项基础检查(稳定币、治理、NFT、质押、机构稳定币、代币化国债、稳定币存款、封装比特币、名称、账户);启用可选的 Solana、XRPL、Bitcoin 和 Tron 钱包后,最多可覆盖 14 个维度、29 条链的 176 项检查(Stellar 和 Sui 钱包会启用基础维度中的检查项)。所有检查均为存在性检查;账户维度在每条链上有两项(合约代码、EIP-7702 委托,在 Ethereum、Base、Arbitrum、Optimism 和 Polygon 上),结果为存在或不存在。维度按固定顺序返回:先是上文列出的基础维度,再是已启用的 solana、xrpl、bitcoin 和 tron 维度。签名的 conditionSetVersion(当前为 2026-10-08)用于标识检查列表;请记录此值,切勿据此拒绝。3 积分(使用 merkle 时为 6 积分;未提供证明时退还额外费用)。
insumer_batch_wallet_trust批量生成最多 10 个钱包的信任档案。每个钱包对象可选包含 solanaWallet、xrplWallet、bitcoinWallet、tronWallet、stellarWallet 和 suiWallet。比逐个调用更快。支持部分成功。每个钱包收费 3 积分(使用 merkle 时为 6 积分)。默认情况下,文本是每个钱包的摘要(维度按固定顺序排列,且所有钱包的顺序相同;账户维度中的检查项显示为存在,而非持有),完整签名档案位于 structuredContent 中;detail: "full" 会将档案也放入文本中(请在调用时设置:无法再次获取档案)。
insumer_verify为商家处的钱包创建签名折扣码(INSR-XXXXX,有效期 30 分钟)。折扣码若包含折扣,则由拥有该商店的 API 密钥扣除 1 积分;结果为 0% 时免费。使用其他密钥的调用者不会被收费。可选的 walletProof 可证明你控制该 EVM 钱包:可享受完整折扣,且无每日限额。
发现(免费)
工具描述
insumer_list_merchants浏览商家目录。可按代币、验证状态筛选。
insumer_get_merchant获取完整的商家公开资料。
insumer_list_tokens列出 Insumer 注册表中收录的代币和 NFT。可按链、符号、类型筛选。这是一个目录,并非可检查对象的列表:证明可检查受支持链上的任何代币,以及 EVM 链、Solana 和 XRPL 上的 NFT。
insumer_check_discount计算钱包在某商家处可享受的折扣。
额度与密钥
工具描述
insumer_buy_key使用 USDC 购买新的 API 密钥(无需身份验证)。适合 Agent 使用:无需电子邮箱,付款钱包将成为密钥的身份,并对一段注明付款信息的固定文本进行签名(senderSignature;不传入此参数的调用会返回该文本)。每个钱包限购一把密钥。必须提供 amount,最低 $5。批量折扣:每次调用 $0.04–$0.02。支持的链:Ethereum、Base、Polygon、Arbitrum、Optimism、BNB Chain、Avalanche、Solana。不可退款。
insumer_credits查看额度余额和等级。
insumer_buy_credits使用 USDC 购买验证额度。必须提供 amount,最低 $5。批量折扣:每次调用 $0.04–$0.02。支持的链:Ethereum、Base、Polygon、Arbitrum、Optimism、BNB Chain、Avalanche、Solana。不可退款。首次购买会注册付款钱包;之后的购买必须由该钱包发起,或包含 updateWallet: true。注册或更换钱包时,需由发送付款的钱包提供 senderSignature。
insumer_confirm_payment确认用于折扣码的 USDC 付款。
商家入驻(仅限所有者)
工具描述
insumer_create_merchant创建新商家,该商家归创建它的密钥所有。商家本身没有余额:其密钥需支付商家的代码、扫描和点击费用。
insumer_merchant_status获取完整的商家私有详情。
insumer_configure_tokens设置代币折扣等级。折扣等级为 1 到 50 的整数。代币可设置展示用的 name 和 logo;商家自己的代币需设置 enabled。
insumer_configure_nfts设置 NFT 系列:折扣为 1 到 50 的整数,或设置 benefitType: "recognition",仅用于身份识别。enabled: false 会使系列保持关闭状态。
insumer_configure_settings设置折扣模式、上限、无控制权证明的钱包适用条款,以及 USDC 付款。
insumer_publish_directory将商家发布到公开目录。
insumer_buy_merchant_credits为保持兼容而保留。商家本身没有余额:在此提交的 USDC 付款会为商家所有者的 API 密钥增加常规额度,固定按每 $1 兑换 25 个额度(insumer_buy_credits 提供批量折扣等级)。必须提供 amount,最低 $5。仅限所有者。不可退款。首次购买会注册付款钱包;之后的购买必须由该钱包发起,或包含 updateWallet: true。注册或更换钱包时,需由发送付款的钱包提供 senderSignature。
域名验证(仅限所有者)
工具描述
insumer_request_domain_verification为商家的域名申请验证令牌。返回令牌和 3 种验证方式(DNS TXT、元标签、文件上传)。
insumer_verify_domain放置令牌后完成域名验证。通过验证的商家会获得信任徽章。
Commerce Protocol 集成
工具描述
insumer_acp_discount以 OpenAI/Stripe ACP 格式检查折扣资格。返回优惠券对象和逐项分配结果。包含折扣的代码会使商店所有者的密钥扣除 1 个额度;折扣率为 0% 时免费。使用其他密钥的调用方不会被扣费。
insumer_ucp_discount以 Google UCP 格式检查折扣资格。返回标题、扩展字段和 applied 数组。包含折扣的代码会使商店所有者的密钥扣除 1 个额度;折扣率为 0% 时免费。使用其他密钥的调用方不会被扣费。
insumer_validate_code验证 INSR-XXXXX 折扣码。返回有效性、折扣百分比和到期时间。免费,无需身份验证。

定价

套餐: 免费(10 次免费验证,每天 100 次请求)| Pro $29/月(每月 1,000 个额度,每天 10,000 次)| Enterprise $99/月(每月 5,000 个额度,每天 100,000 次)

批量折扣: $5–$99 = $0.04/次(25 个额度/$1)· $100–$499 = $0.03(33 个/$1,优惠 25%)· $500+ = $0.02(50 个/$1,优惠 50%)

密钥和额度只能使用 USDC 购买。 收款地址:

  • Ethereum、Base、Polygon、Arbitrum、Optimism 或 Avalanche 上的 USDC: 0xee432065474D2C852700f74e3fD81e2Bcc16a3D4
  • BNB Chain 上的 USDC: 0xAd982CB19aCCa2923Df8F687C0614a7700255a23(过渡期间,也接受发送至其他 EVM 链上该地址的 USDC)
  • Solana 上的 USDC: 8fyEGM5tRjMocKQWaVXyM2XvvnTxR3sWdrYtug2zeLX4(过渡期间,也接受发送至 6a1mLjefhvSJX1sEX8PTnionbE9DqoYjU6F6bNkT4Ydr 的 USDC)

支持的支付链: Ethereum、Base、Polygon、Arbitrum、Optimism、BNB Chain、Avalanche、Solana。USDT 和其他代币会被拒绝且不会计入额度;在不支持的链上发送的代币无法找回。所有购买均为最终交易,不予退款。完整定价 →

发送方签名。 将密钥绑定到钱包的购买(每次密钥购买、尚未注册钱包的密钥进行额度购买,或从其他钱包发起 updateWallet: true)需要提供 senderSignature:发送付款的钱包须为以下确切文本签名,该文本由五行组成,以 \n 连接且末尾没有换行符:

api.insumermodel.com
Confirm the wallet that sent this payment.
Purpose: key purchase
Chain: eip155:8453
Transaction: 0x<transaction hash, lowercase hex>

额度购买时,Purpose 为 credit purchase;在 EVM 链上,Chain 为 eip155:<chainId>,在 Solana 上则为 solana(并使用给定的 Solana 签名)。调用时先不提供 senderSignature,400 响应会返回确切文本。EVM 钱包使用 personal_sign 签名(EIP-191,0x 十六进制;智能钱包通过 ERC-1271 检查);Solana 钱包使用 signMessage 签名(ed25519,base58 或 base64)。403 表示签名并非来自发送付款的钱包;503 表示智能钱包检查未能完成,且未使用该笔付款。

处理 rpc_failure 错误

如果重试后 API 仍无法访问一个或多个区块链数据源,insumer_attest、insumer_wallet_trust、insumer_verify、insumer_acp_discount、insumer_ucp_discount 和 insumer_check_discount 会返回 ok: false,错误代码为 rpc_failure。不会签名、不会生成 JWT,也不会扣除额度。insumer_batch_wallet_trust 会正常响应,并针对未能完成读取的钱包附带一个 error 条目,同时列出已签名的钱包。这是可重试错误:MCP 客户端应在短暂等待后(2-5 秒)重试。

重要提示: rpc_failure 并非验证失败。不要将其视为 pass: false。这表示数据源暂时不可用,API 因此拒绝对未经验证的结果进行签名。

支持的链(37 条)

31 条 EVM 链 + Solana + XRP Ledger + Bitcoin + Tron + Stellar + Sui。包括 Ethereum、Base、Polygon、Arbitrum、Optimism、BNB Chain、Avalanche、XDC、Robinhood Chain、Arc,以及另外 21 条 EVM 链。完整列表 →

也可通过以下方式使用

  • Claude Code 技能: git clone https://github.com/insumerapi/insumer-skill.git ~/.claude/skills/insumer(GitHub · Smithery),可在 Claude Code 中将钱包身份验证代码编写到你自己的项目中。此 MCP 服务为 Agent 运行时提供 API 访问权限;insumer-skill 可帮助开发者在构建时编写集成代码。应用场景不同,但基础机制相同。
  • ElizaOS 插件: @insumermodel/plugin-eliza(npm)
  • LangChain(Python): pip install langchain-insumer(PyPI)
  • OpenAI GPT: InsumerAPI Wallet Auth(GPT Store)
  • 验证器(离线 JWKS): npm install insumer-verify(npm,源代码)

开发

npm install
npm run build

# Test with MCP Inspector
npx @modelcontextprotocol/inspector node build/index.js

许可证

MIT


评论

支持 Markdown

第一次接触 MCP?

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

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