关于 datuma_k
datuma_k MCP 是面向应用仓库中 Agent 的 stdio MCP 服务,通过已安装的 datuma_k 二进制处理数据契约与模板。它提供查询、校验、预览和生成操作,并附带相关语言文档与提示词。
主要功能
- 01列出项目契约与模板路径
- 02查询数据契约
- 03校验契约与关键字
- 04预览生成计划
- 05生成代码片段
- 06推断模式并提供规则建议
适用场景
- 01检查项目中的契约和模板
- 02按模型或字段查找契约
- 03写入前预览生成结果
- 04为新增模型或字段提供指导
MCP 相关
该服务通过 stdio 向 MCP 客户端提供工具、资源和提示词,并调用项目中已安装的 datuma_k 二进制执行部分操作。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
7收录的工具列表 · 更新于 3 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| root | string | 否 | 项目目录(默认为 MCP 进程的当前工作目录) |
详细介绍
datuma_k MCP
供 Agent 在应用仓库中使用已安装的 datuma_k 二进制文件的 stdio MCP 服务。它不会链接编译器 crate。如果 datuma_k 不在 PATH 中,请将 DATUMA_K 设置为该二进制文件的路径。
安装
已发布到 npm,包名为 @marthvon/datuma-k-mcp,并已发布到 MCP Registry,名称为 io.github.marthvon/datuma-k。
Cursor / Claude 示例(mcp.json):
{
"mcpServers": {
"datuma_k": {
"command": "npx",
"args": ["-y", "@marthvon/datuma-k-mcp"]
}
}
}
datuma_k 必须位于 PATH 中。如果不是,请将 DATUMA_K 指向该二进制文件:
{
"mcpServers": {
"datuma_k": {
"command": "npx",
"args": ["-y", "@marthvon/datuma-k-mcp"],
"env": {
"DATUMA_K": "/ABS/PATH/TO/datuma_k/target/release/datuma_k"
}
}
}
}
从源码安装
cd mcp
npm install
npm run build
然后使用 "command": "node" 和 "args": ["/ABS/PATH/TO/datuma_k/mcp/dist/index.js"]。
进程的工作目录应为 datuma_k 项目(包含 .env 的目录),或者在每次工具调用时传入 root。
工具
| 工具 | 二进制文件 | 说明 |
|---|---|---|
list_project | (文件 + .env) | 目录和契约/模板路径 |
query_contracts | datuma_k catalog | 可选的 trait / model / field / attribute / type |
validate | datuma_k check | 解析 + 必须包含 data/keywords.md |
preview | datuma_k preview | 生成计划,不写入文件 |
generate | datuma_k run | 写入生成的片段 |
advise_ngin | (本地规则) | 何时使用 ngin,而非手写代码 |
infer_patterns | catalog + keywords.md | trait、控件、关联审查备注、同步风险、别名 |
资源
datuma://language/dtctdatuma://language/ngindatuma://language/standardsdatuma://docs/keywordsdatuma://docs/practicesdatuma://docs/when-ngin
提示词
add-model、add-field、scaffold-ngin、should-use-ngin、infer-contract-patterns
测试
npm test
发布
按以下顺序发布到两个注册表。npm 托管 tarball;MCP Registry 仅托管元数据,并会对照已发布的 npm 包进行验证,因此必须先发布到 npm,否则第二次发布会失败,并提示 Registry validation failed for package。
| 名称 | 位置 | 设置于 |
|---|---|---|
@marthvon/datuma-k-mcp | npm 包 | package.json 中的 name |
io.github.marthvon/datuma-k | MCP Registry 服务 | package.json 中的 mcpName 以及 server.json 中的 name——两者必须一致,否则注册表会拒绝发布 |
io.github.marthvon/ 前缀并非装饰:GitHub 设备流身份验证只授予该命名空间。若使用其他前缀,则需要 DNS 或 HTTP 身份验证。
一次性设置
brew install mcp-publisher # or a binary from the registry releases page
npm login # npm account, scope @marthvon
npm 发布需要启用双重身份验证。如果账户尚未启用,npm publish 会失败,并提示 403 ... Two-factor authentication or granular access token with bypass 2fa enabled is required,此时甚至还未检查 tarball。使用 npm profile get 检查;使用 npm profile enable-2fa auth-and-writes 或在 npmjs.com 上启用,并妥善保管恢复代码。
发布版本
在三个位置更新版本号——注册表会拒绝已发布过的版本;而 npm 包版本与 server.json 中的 packages[0].version 不一致则会导致验证失败:
package.json→versionserver.json→versionserver.json→packages[0].version
然后:
npm test # tsc + node --test
mcp-publisher validate # checks server.json against the live registry, publishes nothing
npm publish --otp=123456 # prepublishOnly runs the build; drop --otp to be prompted
mcp-publisher login github # device code → github.com/login/device
mcp-publisher publish
mcp-publisher login 会保存令牌,因此日常发布只需依次运行 npm publish 和 mcp-publisher publish。
验证:
npm view @marthvon/datuma-k-mcp version
curl "https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.marthvon/datuma-k"
发布内容
package.json 中的 files 将 tarball 限定为 dist、resources 和 README.md。resources/ 是运行时必需的——server.ts 会将其解析为 dist/../resources——因此若从 files 中移除它,虽然包可以正常安装,但每次读取资源都会失败。发布前使用 npm pack --dry-run 确认。
故障排除
| 错误 | 原因 |
|---|---|
403 ... Two-factor authentication ... is required | npm 账户已禁用 2FA。请参阅上文。 |
403 ... you do not have access | @marthvon 作用域属于一个组织;请使用 npm org ls marthvon 确认成员资格。 |
Registry validation failed for package | 尚未执行 npm 发布,或者 package.json 中的 mcpName 与 server.json 中的 name 不匹配。 |
Invalid or expired Registry JWT token | 重新运行 mcp-publisher login github。 |
You do not have permission to publish this server | 服务名称未以 io.github.<your-github-username>/ 开头。 |
expected length <= 100 on body.description | server.json 中的 description 最多为 100 个字符。npm 的 description 不受此限制。 |
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。