@ebitex / content-mcp
一个 MCP 服务器 ebitex内容. 让一个人工智能代理对准它,然后 它可以建立一个端到端的内容模型——契约及其字段、模板、组件等 体验树——并发布它。
它在局部运行,结束 stdio,通过您自己创建的内容管理密钥进行身份验证。没有什么
由ebitex托管,因此您的可写密钥永远不会离开您的机器。
配置它
{
"mcpServers": {
"ebitex-content": {
"command": "npx",
"args": ["-y", "@ebitex/content-mcp"],
"env": { "EBITEX_CONTENT_MANAGEMENT_KEY": "frm_live_..." }
}
}
}
| 变量 | |
|---|---|
EBITEX_CONTENT_MANAGEMENT_KEY | 必需的。 在设置→API密钥→管理密钥下的内容中创建一个 |
EBITEX_CONTENT_API_BASE | 默认为 https://api.ebitex.io |
EBITEX_CONTENT_MCP_READ_ONLY | 设置为 1 隐藏每个写工具,而不考虑键的作用域 |
EBITEX_CONTENT_TARGET_MANAGEMENT_KEY | 第二个键,for content_transfer 导入 |
EBITEX_CONTENT_REALM | 期望管理键在其中起作用的领域键。如果没有,则启动停止(键绑定到一个领域;此检查,它不选择)。Unset:未选中 |
故意把钥匙磨碎
一个管理密钥绑定到 一个组织和一个创作环境,并作为 一个 角色. 这种绑定是这里真正的安全边界,这是服务器无法提供的 对你:
- 将其绑定到非生产创作环境。 此服务器无法分辨是哪一个 您的环境是生产环境——这是您自己的拓扑结构,也是一个管理密钥 看不见。启发式比什么都没有更糟糕,因为人们会相信它。
- 关闭创作范围,除非代理需要写。 没有它,编写工具是 不仅仅是拒绝;它们根本就没有被提供。
- 给它一个角色和它需要的访问权限,而不是更多。 分支访问规则和工作流门控 适用于钥匙,就像适用于人一样。
在启动时,服务器打印该键到达的组织和环境 它扮演哪个角色。读一遍;如果不是你所期望的,停下来。
的工具
十,围绕代理做什么而不是围绕REST路由。
content_whoami | 此键的作用域:组织、环境、角色、作用域、此服务器的版本,以及保留哪些工具及其原因。不需要作用域,所以一个几乎什么都做不了的键仍然可以问为什么 |
content_describe | 这里可以存在什么:每个字段类型都有其 自己的设置模式,再加上这个环境的契约和模板 |
content_find | 通过类型、搜索或外部id定位实体,在两个清单中使用一个分页契约 |
content_get | 完整地读取一个实体 |
content_write | 创建或更新一个实体 |
content_delete | 删除一个,后面要有明确的确认 |
content_publish | 计划,阅读障碍,然后发表 |
content_operation_status | 投票工作 |
content_transfer | 自动地在环境之间移动整个模型。 identityMode 选择项目如何匹配: externalId (默认,通过自然键), preserve (按id),或 fresh (新的) |
content_topology | 这个环境所在的位置:发布所处的交付环境,以及它的推广邻居。只跳一跳 |
它们中的哪一个取决于键的作用域:一个读作用域的键得到一个没有写的服务器
工具,而不是总是失败的工具。 content_whoami 例外和总是吗
出现-它报告哪些工具被保留,以及每个工具需要什么,因此缺失的工具是
解释了而不是仅仅错过了。
每个结果还列出了回答它的组织和环境,一个空的结果就是这样 明确。一个键只能读取和写入一个创作环境,所以“无契约”总是意味着 “none here”——代理将其读取为“none anywhere”会创建副本。
创作是工作的一半
该服务器构建并发布内容模型。这个网站 呈现 它读取内容
交付API,它有自己的客户端, @ebitex/content-sdk
(或 Ebitex.Content.Delivery 为。net)。服务员的指示和
ebitex-content://help/rendering-your-site 在代理写渲染器之前告诉它资源;如果
你自己给探员做简报,也这么说。
为什么它不能漂移
服务器编码 不了解内容模型. 它不知道存在什么字段类型,
合同可以包含什么内容,或者什么使文件有效。这三个都在运行时得到回答:
content_describe 返回每个字段类型自己声明的模式,并且每次写入都由
存储它的服务器。这里没有什么是不一致的,因为没有什么是重复的。
这也决定了错误是如何产生的。拒绝被传递 整个,电场路径完好无损,没有 总结一下,因为对于一个代理来说错误就是控制回路:尝试,读取错误,修复错误 输入名称,再呼叫。
资源
除了这些工具之外,服务器还提供了作为MCP资源的内容文档——从这里开始
ebitex-content://help/agent-authoring,它解释了合同、模板、演示文稿、
适配器和经验树,以及创建它们的顺序。然后读
ebitex-content://help/content-modelling 在你决定模型的样子之前:它会告诉你什么属于契约,什么属于模板,
使用哪个字段,如何命名事物,如何构建标签和手风琴等容器,以及如何将模型交付给其他人。
嵌入它
import { buildServer, readConfig } from '@ebitex/content-mcp'
const { server, banner } = await buildServer({ config: readConfig() })
console.error(banner) // never stdout — on stdio, that stream is the protocol
关于 zod
这个包装别针 zod 来 ^3.25.76 而不是 ^4即使,即使 @modelcontextprotocol/sdk
接受。原因是类型标识,而不是功能:SDK的模式类型是编写的
对任何一个 zod 解决了的 它,在不同的主要位置进行第二次复制产生一个类型
每个工具注册不匹配。绑定到SDK解析的版本会保留一个 zod 在
树。这只在构建时起作用;在运行时,SDK会同时处理这两种情况。
执照
Apache-2.0 -©ebitex software LLC。
完整的指南: developers.ebitex.io.