mcpField
D
DataCore A2A

DataCore A2A

本地服务
github.com/DataCore-VietNam商业与营销02 天前更新

关于 DataCore A2A

DataCore A2A 是一个 Python MCP 服务,通过 DataCore 网关提供越南地址处理、企业查询和文本嵌入功能,面向需要访问这些技能的 MCP 客户端。它将技能以只读工具形式呈现,并可自动续换短期 mandate。

主要功能

  1. 01规范化越南地址
  2. 02验证行政区地址
  3. 03按名称或税号搜索企业
  4. 04查询企业关系
  5. 05生成文本嵌入
  6. 06续换短期 mandate

适用场景

  1. 01将地址拆分为省、市辖区和坊
  2. 02依据行政数据核验地址
  3. 03在业务决策前查询企业
  4. 04为文本生成嵌入向量

MCP 相关

通过 stdio 向 MCP 客户端提供 DataCore 技能作为只读工具。工具列表根据配置的 DataCore 端点生成;服务会用 API 密钥换取短期 mandate。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"vn-datacore-datacore-a2a": {
"command": "uvx",
"args": [
"datacore-a2a-mcp"
],
"env": {
"DATACORE_A2A_URL": "<DATACORE_A2A_URL>",
"DATACORE_API_KEY": "<DATACORE_API_KEY>",
"DATACORE_MANDATE": "<DATACORE_MANDATE>",
"DATACORE_SKILLS": "<DATACORE_SKILLS>",
"DATACORE_TIMEOUT": "<DATACORE_TIMEOUT>"
}
}
}
}
启动命令uvx datacore-a2a-mcp
需要配置的环境变量
DATACORE_A2A_URLBase URL of the DataCore gateway, for example https://gateway.datacore.vn. It must be the gateway — pointing straight at the orchestrator is always rejected with 401.
DATACORE_API_KEY密钥Long-lived credential shaped dck_..., created with POST /mcp/credentials — see the README. The server exchanges it for short-lived mandates and refreshes them itself, so it never has to be replaced on expiry. Either this or DATACORE_MANDATE is required.
DATACORE_MANDATE密钥A hand-issued AP2 mandate, the older way. Not refreshed: when it expires you replace it and restart. Use it only if you were set up this way; otherwise use DATACORE_API_KEY.
DATACORE_SKILLSComma-separated skill ids to narrow the tools that get exposed, or * for every skill the endpoint returns. Empty uses the default four.
DATACORE_TIMEOUTPer-request timeout in seconds. Defaults to 30.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypidatacore-a2a-mcp0.2.5

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

DataCore A2A — MCP 服务

English · Tiếng Việt

让 MCP 客户端(Claude Code、Claude Desktop、VS Code、Cursor……)将 DataCore 的 数据技能用作原生工具:规范化越南地址、验证地址、查询公司、生成嵌入向量。

MCP client (stdio) ──► datacore-mcp ──HTTPS──► DataCore gateway

零依赖,支持 Python 3.9 及更高版本。

快速开始

此服务是客户端,而非服务端。它需要 DataCore 端点和用于调用该端点的 凭据。缺少其中任意一项时,它会启动、提示缺少哪个变量,然后退出。

你需要先拥有 datacore.vn 账户。

1. 安装
pip install datacore-a2a-mcp

如果你在该项目尚未发布时从 GitHub 安装,--upgrade 不会将你升级到 PyPI 版本——请先卸载,再重新安装。

2. 获取会话令牌

登录 datacore.vn,然后从对 gateway.datacore.vn 的任意一次调用中复制 token 请求 标头(开发者工具 → 网络)。共 64 个十六进制字符。

没有对应的 curl 命令:POST /auth/login 会对密码进行 RSA 解密,且没有端点公开公钥,因此只有 Web 应用才能完成登录。之后可通过凭据页面省去此步骤。

忽略同一次登录返回的 jwt——网关会以 409 拒绝客户端提供的 Authorization;它接受的标头是 token。

3. 创建凭据
curl -s -X POST https://gateway.datacore.vn/mcp/credentials \
  -H "token: <64-character token>" \
  -H 'Content-Type: application/json' \
  -d '{"name":"claude-code"}' | jq .

返回 201,并附带凭据,其中包括 api_key、key_prefix、allowed_skills、 spend_cap_vnd 和 quota_period。

请立即复制 api_key——它只会返回一次。系统只存储哈希,因此无法再读取该值。若丢失,请创建新的凭据。

此处返回 409 表示你已持有最多 3 个有效凭据。请先撤销一个(参见 配额与限制)。

4. 在客户端中声明凭据

参见下方的 配置。

步骤 2–3 目前还没有 Web 界面;请使用 curl。管理页面上线后,这些命令仍然可用。

配额与限制

免费套餐每个凭据每月可消费 500,000 VND
每次调用的价格默认 500 VND,约可调用 1,000 次
重置时间每月 1 日,Asia/Ho_Chi_Minh
凭据数量每个账户最多 3 个有效凭据
凭据有效期90 天
令牌签发频率每个凭据每分钟最多 10 次交换

额度按凭据而非账户计算——三个凭据就为一个账户提供三份独立额度。服务以 VND 而非调用次数计量,以便日后引入按技能定价时,无需重写已存储的额度上限。

凭据不绑定机器或 IP,因此同一个密钥可以在另一台计算机上使用——两台设备共用同一份配额,撤销密钥则会同时使两台设备无法使用。

查看凭据的消费情况并撤销凭据:

curl -s https://gateway.datacore.vn/mcp/credentials/<id>/usage -H "token: <token>" | jq .
curl -s https://gateway.datacore.vn/mcp/credentials -H "token: <token>" | jq .
curl -X DELETE https://gateway.datacore.vn/mcp/credentials/<id> -H "token: <token>"

/usage 会报告 spent_vnd、spend_cap_vnd、quota_period 和 resets_at。 撤销成功时返回 204;若 ID 不属于你,则返回 404——这两种情况会刻意保持不可区分。

配置

变量必填含义
DATACORE_A2A_URL是DataCore 网关的基础 URL — https://gateway.datacore.vn,除非你获得了自己的端点
DATACORE_API_KEY是¹长期凭据,格式为 dck_<prefix>_<secret>。服务会用它换取短期授权,并自行刷新
DATACORE_MANDATE是¹手动签发的 AP2 授权。仅适用于按旧方式配置的调用方 — 见下文
DATACORE_SKILLS否用逗号分隔的技能 ID,用于缩小工具列表范围;也可以用 * 表示端点返回的所有内容。留空时使用默认的四项
DATACORE_TIMEOUT否每次请求的超时时间(秒),默认为 30

¹ 必须设置其中一个。如果两者都设置,则以 DATACORE_MANDATE 为准。

请使用 DataCore 提供给你的 URL。其他端点无法识别你的凭据,并会返回 401。

为什么应该使用 DATACORE_API_KEY

授权有效期为 15 分钟。使用 DATACORE_API_KEY 时,服务会在当前授权过期前一分钟请求新的授权,因此你永远不必因为令牌过期而编辑配置文件。授权会保留在进程内存中,不会写入任何位置。如果调用仍返回 401,服务会强制刷新一次,并恰好重试一次,然后才报告失败。

DATACORE_MANDATE 仍然可用,但不会刷新 — 它是为凭据推出前已完成配置的用户保留的。授权过期后,你需要手动替换它并重启 MCP 服务。

Claude Code
claude mcp add datacore-a2a -s user \
  -e DATACORE_A2A_URL=https://gateway.datacore.vn \
  -e DATACORE_API_KEY=<YOUR_API_KEY> \
  -- datacore-mcp

将 <YOUR_API_KEY> 替换为第 3 步中的 api_key — 格式类似 dck_<8 hex chars>_<secret>。

-s user 会为每个项目注册它。建议使用此方式,而不是项目范围的 .mcp.json:该文件往往会被提交,而密钥是有效期为 90 天的持有者凭据。

Claude Desktop

将下面的代码块合并到配置中 — 不要替换整个文件,因为其中保存了你的应用偏好设置。

操作系统配置路径
macOS~/Library/Application Support/Claude/claude_desktop_config.json
Windows%APPDATA%\Claude\claude_desktop_config.json
Linux~/.config/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "datacore-a2a": {
      "command": "<PATH_TO_DATACORE_MCP>",
      "env": {
        "DATACORE_A2A_URL": "https://gateway.datacore.vn",
        "DATACORE_API_KEY": "<YOUR_API_KEY>"
      }
    }
  }
}

两个 <...> 值都需要你自行填写 — JSON 不支持注释,因此文件中不会有任何提示:

占位符来源
<PATH_TO_DATACORE_MCP>which datacore-mcp(macOS/Linux)或 where datacore-mcp(Windows)的输出。类似 /home/you/.local/bin/datacore-mcp 或 C:\Users\you\AppData\Roaming\Python\Scripts\datacore-mcp.exe
<YOUR_API_KEY>第 3 步中的 api_key,格式为 dck_<8 hex chars>_<secret>

必须使用绝对路径:桌面应用不会继承你的 shell PATH,因此通常无法通过裸命令名启动。也可以使用 python -m datacore_mcp.server。然后彻底退出应用 — 仅关闭窗口是不够的。

日志会写入 stderr,应用会将其保存在该配置文件旁边的 logs/ 目录中。

工具

工具列表由端点生成,而不是在此处硬编码。因此,DataCore 添加技能后,只需重启服务即可看到新工具。

默认情况下会公开五项技能,即已连接到真实后端的技能:

工具技能 ID功能
address_normalizeaddress.normalize将越南地址标准化为省/县/坊
address_validateaddress.validate根据行政区划数据检查地址
company_searchcompany.search按名称或税号查询公司
company_graphcompany.graph返回公司的关系信息,包括代表、省份、行业以及图谱中包含的其他信息
company_embeddingscompany.embeddings为一段文本生成嵌入向量

每项工具都接受一个必需参数 text,其值为自由文本字符串;不接受其他属性。所有工具均为只读(readOnlyHint: true):不会写入、删除或创建任何内容,且相同输入会得到相同结果。

DataCore 的另外两项技能(company.financial-sankey、company.news)有意不予公开:它们目前返回的是模拟/确定性数据。将 DATACORE_SKILLS="*" 设置为工具后,虽然会列出这些技能,但免费套餐凭据无法调用它们——其允许列表仅包含上述五项技能,因此每次调用都会返回 403。创建凭据时请求额外技能也不会报错;请求会被静默缩减为这五项技能。

company.graph 以前就在该列表中。现在它会读取真实关系,因此在此版本发布前创建的凭据不包含它——签发凭据时会将允许的技能写入其中。请创建新凭据以使用该技能。

示例

以下三个提示词分别调用三种不同的工具:

  1. 标准化地址——“将此地址标准化为省/县/坊:So 1 Ly Thai To, Hoan Kiem, Ha Noi”
  2. 公司查询——“查找税号为 0100109106 的公司,并告诉我它是否仍在运营”
  3. 嵌入向量——“为此业务范围生成嵌入向量,并告诉我该向量有多少个维度:电子设备批发”

安全模型

此服务会在 X-AP2-Mandate 标头中原样传递授权委托,供 DataCore 验证,并且不声明自己的授权标头。客户端无权自行授权——它只会转发收到的内容,所有允许或拒绝的决定都由 DataCore 作出。

用于兑换授权委托的 API 密钥通过 X-Datacore-Credential 传递,而不是通过 Authorization 传递。DataCore 的网关会保留 Authorization 供自己使用——它会在对调用方进行身份验证后签署并注入该标头,因此任何携带此标头的请求都会被拒绝,并返回 409 和空响应体。如果你手动调用 /mandate/issue,并收到没有消息的 409,原因就在这里。

API 密钥是一种持有者凭据:任何持有它的人都可以用它兑换授权委托,并在额度用尽前调用授权委托允许的技能。请像对待密码一样处理它——不要提交已填入密钥的 .mcp.json;如果客户端支持,请从密钥管理器读取密钥,而不是直接写入配置。如果密钥泄露,请立即通过 DELETE /mcp/credentials/<id> 撤销它(参见配额和限制);由此签发的授权委托仍会继续生效 15 分钟,因为没有即时撤销列表。

授权委托则恰恰相反:有效期为 15 分钟,仅存于进程内存中。它不会写入磁盘,也不会被记录到日志中,你也不应该需要查看它。

每个凭据每分钟最多可兑换 10 次,以此限制签发频率,防止利用该端点遍历密钥空间。所有拒绝请求的情况——未知密钥、已撤销密钥、过期密钥、密钥错误——都会返回相同原因的 401 消息。

此软件包绝不会记录令牌,哪怕是部分内容;也绝不会记录你发送的 text。这项承诺仅适用于在你机器上运行的进程——服务端是另一回事,PRIVACY.md 会明确说明它存储了什么。

故障排除

日志输出到 stderr,并以 [datacore-mcp] 为前缀。stdout 是 JSON-RPC 通道。

症状常见原因
立即退出,显示 MISSING required environment variable未设置 DATACORE_A2A_URL
立即退出,显示 MISSING authentication未设置 DATACORE_API_KEY 或 DATACORE_MANDATE
DATACORE_API_KEY 看起来被忽略你使用的是 0.1.0,该版本早于凭据功能,且只读取 DATACORE_MANDATE。请升级:pip install -U datacore-a2a-mcp
所有请求都返回 401凭据已撤销、已超过 90 天,或 DATACORE_A2A_URL 不是签发该凭据的端点。若使用 DATACORE_MANDATE:授权委托已过期,且不会刷新。这些情况故意使用同一条消息,以免有人利用该端点探测有效密钥。若要区分,请调用 GET /mcp/credentials,查看你的凭据是否仍为 ACTIVE
手动调用 /mandate/issue 时返回 409你把密钥放进了 Authorization。密钥应放在 X-Datacore-Credential 中。软件包会正确处理;只有手动调用时才会遇到此问题
创建凭据时返回 409你已经持有 3 个有效凭据。请先撤销一个
429单个凭据每分钟兑换授权委托超过 10 次。软件包每小时大约刷新 4 次,因此这表示某处陷入了循环
402该凭据本月的额度已用尽。额度会在每月 1 日重置
403此技能不在凭据的允许列表中——免费层仅涵盖上述 4 项技能,且无法扩大此范围
400请求格式错误,或该技能 ID 未在端点注册
404路由不存在——请检查 DATACORE_A2A_URL
502 / 503此技能后端没有响应
完全没有工具DATACORE_SKILLS 过滤掉了所有工具,或该端点没有注册任何技能

报告安全问题

[email protected]。请勿为安全漏洞创建公开问题。

如果你认为凭据已泄露,请立即报告——不要等到它过期。我们需要了解情况,以便在服务端采取行动。

隐私

请参阅 PRIVACY.md。 简而言之:此软件包在你的计算机上运行,不存储任何内容,不会向任何地方发送数据(你配置的 DataCore 端点除外),并且绝不会将 mandate 令牌写入日志。

许可证

MIT——请参阅 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

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

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