@ cmssy/ mcp- 服务器
MCP 服务器 阴道,一个主机无头CMS 与内置商务。 让一个AI代理在一个Cmsy工作空间中与页面,记录,媒体,表格,产品,订单,退款以及折扣一起工作.
主机服务器( 未安装)
https://api.cmssy.io/mcp 在HTTP上提供同样的工具。 Claude(网络,桌面,代码)和Codex通过签名连接到cmsy. 一个请求服务器 URL 和 API 密钥的客户端 - v0, 可爱的, 博尔特 或您自己的 - 发送一个 cs_ 代号 :
URL: https://api.cmssy.io/mcp
Header: Authorization: Bearer cs_YOUR_TOKEN
一个瞄准一个工作空间的符号只到达那个工作空间;一个没有瞄准的符号到达你所属的每一个工作空间. 每个工具都需要一个 workspace (单位:千美元)<orgSlug>/<workspaceSlug>),以及 list_workspaces 指定标志可能使用的名称。 它与你在每个工作区的角色一起读写. 更改密码不会取消 - 在 Dashboard > API Tokens 下删除它 。 细节 : cmssy.com/docs/api/mcp (中文(简体) )。 。 。 .
设置
先决条件
- Cmsy 工作空间 - 免费计划有效; 推车和退票需要 Pro
- API 令牌( Dashboard > API) 托肯斯,从
cs_(中文(简体) ) - 您的工作空间标识( 工作空间设置 > 常规)
服务器说话到 https://api.cmssy.io 默认。 过 --api-url 只用于另一个后端.
添加到克洛德代码
添加为 .mcp.json 在您的工程根中 :
{
"mcpServers": {
"cmssy": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@cmssy/mcp-server@latest",
"--token",
"cs_YOUR_TOKEN",
"--workspace-id",
"YOUR_WORKSPACE_ID"
]
}
}
}
环境变量
而非 CLI 参数, 您可以设定 :
CMSSY_API_TOKEN- API 令牌(cs_xxx(中文(简体) )CMSSY_WORKSPACE_ID- 工作空间标识CMSSY_API_URL— API URL( 可选; 默认为https://api.cmssy.io后端)
正在检查哪个构建正在运行
--version 财务报告和审定财务报表 --help 不需要任何标志,所以即使服务器是
未配置 。 运行旗子对 同样的光谱 您的客户端启动, (中文(简体) ),
从您的复制 mcp.json数字 :
npx -y @cmssy/mcp-server --version # what an unpinned config runs
npx -y @cmssy/mcp-server@latest --version # what the registry serves today
npm view @cmssy/mcp-server version # the newest published version
前两个可以不同意, 而分歧是答案: 一个温暖的 npx
缓存保存一个未绑定的 spec 解析到更早,同时 @latest
重新解决并报告最新的一个。 这么说吧 @latest --version 无法诊断
是命令隐藏它。 先问未标注的光谱
当一个工具在一个字段上失败时, API 应该服务, 然后比较 .
清除缓存是 npx clear-npx-cache,或将版本刻入您的配置
所以没什么需要诊断的.
隐私政策
完全政策: https://www.cmssy.com/privacy (中文(简体) )。联系人: 联系人@cmssy.com。 。 。 .
- 此服务器收集的内容:无自取. 它没有本地数据库,没有写文件,也没有向任何分析服务发送任何信息.
- 它发出什么,在哪里:每个工具调用成为 GraphQL 对 Cmsy API 的请求(
https://api.cmssy.io除非你设定CMSSY_API_URL),携带您的 API 令牌,您的工作空间ID,工具的参数,客户端名称和版本,以及正在运行的工具名称. Cmssy API 记录了从最后两个工具调用的一个使用事件. - 文件和 URL数字 :
upload_media仅读取本地文件路径,或只下载您通过的 URL,然后将字节上传到 API 返回的 Cmsy 存储 URL。 没有其他文件. - 使用和储存: Cmsy API在欧盟存储上述政策所描述的工作空间内容(页,记录,媒体,订单,客户). 内容不出售,也不用于培训AI模型.
- 第三方分享:服务器只与 Cmssy API 和 Cmssy 存储 URL 进行交谈,并加上您交出的任何 URL
upload_media保险单列出了Cmsy服务本身使用的第三方. - 保留数据:在呼叫返回后,服务器不保留任何内容 。 工作空间数据在您删除或关闭账户之前会保留;保留期在保单中.
- 你的纪念品:经创建它的成员的许可进行操作. 在 Dashboard > API 下撤消 随时托克.
反应形状( 写工具)
截止0.6.0,大多数写工具接受可选 response 参数 :
response: "minimal"(default) - 返回一个小块(~200字节) :{id, slug, hasUnpublishedChanges, updatedAt}用于页面工具,{pageId, blockId, hasUnpublishedChanges, updatedAt}对于块工具,{id, slug, status, updatedAt}为形式工具,{id, slug, updatedAt}用于模型工具,{id, status, updatedAt}为记录工具,{id, orderNumber, status, paymentStatus, fulfillmentStatus, total, balanceDue, currency, updatedAt}用于订单工具,{id, code, type, value, enabled, updatedAt}用于折扣工具.response: "full"- 返回完整的突变反应(前0.6行为).
使用 "full" 只当您需要后写入状态内入; 否则会发出一个
后续行动 get_page编号 :get_form编号 :get_model编号 :get_record。这保持代理
上下文窗口从被回放内容所吞噬.
接受的工具 response数字 : create_page, (中文(简体) ), update_page_blocks, (中文(简体) ),
update_page_settings, (中文(简体) ), publish_page, (中文(简体) ), unpublish_page, (中文(简体) ), revert_to_published, (中文(简体) ),
update_page_layout, (中文(简体) ), add_block_to_page, (中文(简体) ), update_block_content, (中文(简体) ),
remove_block_from_page, (中文(简体) ), create_form, (中文(简体) ), update_form, (中文(简体) ), create_model, (中文(简体) ),
update_model, (中文(简体) ), create_record, (中文(简体) ), update_record, (中文(简体) ), create_manual_order, (中文(简体) ),
edit_order, (中文(简体) ), update_order_details, (中文(简体) ), mark_order_paid, (中文(简体) ), record_order_payment, (中文(简体) ),
refund_order, (中文(简体) ), cancel_order, (中文(简体) ), close_order, (中文(简体) ), reopen_order, (中文(简体) ),
create_return, (中文(简体) ), approve_return, (中文(简体) ), reject_return, (中文(简体) ), cancel_return, (中文(简体) ),
receive_return, (中文(简体) ), refund_return, (中文(简体) ), complete_return, (中文(简体) ), update_return_tracking, (中文(简体) ),
create_shipment, (中文(简体) ), update_shipment, (中文(简体) ),
set_order_pipeline_stage, (中文(简体) ), record_order_invoice, (中文(简体) ),
record_order_invoice_correction, (中文(简体) ), create_discount, (中文(简体) ),
update_discount, (中文(简体) ), set_discount_enabled。 。 。 .
patch_block_content 和各种 delete_* / 只有状态的工具
(单位:千美元)update_form_submission_status, (中文(简体) ), import_records(中文(简体) )
已经返回一个紧凑的 ack 并且不要拿 response。 。 。 .
建一个站点
连接服务器时,会发出指示,将一个代理(v0,Lovable, Bolt, Claude)发送到 get_site_setup 先说 它会返回文件 cmssy init 为 Next.js 写 - call- all page, 编辑器路由, 代理, 配置, 块注册, 头部/脚部区域 - 并填入工作空间的 env vars 。 特工就部署,打电话 set_preview_url,创建 content.changed 网络浏览 /api/revalidate,用户一旦打开编辑器,块类型就会注册,在其布局区域创建有页眉和页脚的页面,并公布.
可用工具
读取工具
| 工具 | 说明 |
|---|---|
get_site_setup | 要在工作空间上建立一个站点的一切:要写的文件,包,env vars填入的文件,步骤 |
list_pages | 有层次的页面树( 可选) search 过滤器) |
get_page | 包含块、 i18n 内容和区域设置的完整页面( 属于 regionSettings + 解决 resolvedRegions 和遗产来源) 由 swit 或 id |
get_site_config | 语文、导航、站名 |
get_workspace_info | 工作空间名称、计划、限制 |
list_media | 媒体库列表 |
list_trashed_pages | 页面垃圾: 删除了被删除的组, 子树大小和每组被清除( 删除后30天) |
写入工具
| 工具 | 说明 |
|---|---|
create_page | 创建新页面 |
update_page_blocks | 在一页设置完整的块数组 |
update_page_settings | 更新页面元数据和 SIO |
publish_page | 发布一页 |
set_preview_url | 将编辑器指向已部署的应用程序( 存储 URL 的出处) |
unpublish_page | 取消页面 |
delete_page | 将一个页面及其子树移动到垃圾堆中, 持续30天 |
restore_page | 将已丢弃的页面组恢复为未发布的草稿 |
revert_to_published | 丢弃草稿,恢复公布 |
块帮助工具
| 工具 | 说明 |
|---|---|
add_block_to_page | 在位置插入块( 自动生成 UUID + 翻译) |
update_block_content | 合并内容为已存在的块 |
patch_block_content | 外科 HTML 补丁( 插入/替换到唯一标记周围) |
remove_block_from_page | 以 ID 删除块 |
update_page_layout | 更新布局块和覆盖 |
update_region_settings | 设置一个布局区域设置( 明显验证; 其他区域未更改) |
update_region_settings
区域( 显示位置) 设置由工作空间的布局宣布
你当明白,你当明白,你当明白。 工具读取当前页面
layoutRegionSettings,仅替换命名区域并写入整个
列表后,所以兄弟地区保留其数值(区域
区域计划已经不存在的关键
在路上掉下来的—— 同样的pruning管理员编辑器做。 后端的自带
BAD_USER_INPUT 消息为未知区域逐字返回,未知
键,或非空 values 没有声明设置的区域(此类区域)
区域接受 values: {} 仅此而已); blockWarnings 当出现时浮出水面.
{ "pageId": "...", "region": "sidebar", "values": { "width": "wide" } }
儿童页面继承一个区域的设置,除非它们设置自己的 -
get_page 显示每个区域在 resolvedRegions
(单位:千美元)settingsAreInherited, (中文(简体) ), settingsSourcePageId) (中文(简体) ).
patch_block_content
对于长 HTML 内容字符串上的小编辑( 如 a) docs-article 身体状况,
patch_block_content 值值为~10x,比 update_block_content
然后在给DB写信之前 发现标记错误.
{
"pageId": "...",
"blockId": "...",
"locale": "en",
"operations": [
{
"op": "insert_before",
"marker": "<h2>Environment Variables</h2>",
"html": "<hr><h2>cmssy skills install</h2><p>...</p>",
},
],
}
四项行动: insert_before, (中文(简体) ), insert_after, (中文(简体) ), replace_section, (中文(简体) ), replace_all。 。 。 .
每个标记必须匹配 {\fn华文仿宋\fs16\1chd1d1d1}就是一次 - 0或2+ 与错误匹配
实际计算(无静态半应用状态)。 对于 replace_section, (中文(简体) ),
startMarker 包容性和 endMarker 这是独家的. replace_all 设置
整个字符串并取 expected,当前值 - 如果移动则拒绝.
要求数 @cmssy/cli- 注册的工作空间 PAGES_EDIT 允许.
默认 fieldPath 实值 "content" (Docs-article上的HTML正文); 覆盖
如果补入不同的字符串字段。 点片段到达了嵌入的字符串,例如.
tabs.0.label 第一个标签的标签.
模型工具(海关数据模型)
AI代理可以定义ModelDefinitions和CRUD他们的记录. 司马/外地
跟着 PropertyField 从 @cmssy/types; 对照
每一个字的模型.
| 工具 | 说明 |
|---|---|
list_models | 列出工作空间中的所有模型定义 |
get_model | 通过 id(ObjectId) 或 slock 获得模型 |
create_model | 创建模型( 名称、 弹片、 字段、 可选状态 ) |
update_model | 更新模型中的任何字段( 字段会改变 schema 迁移) |
delete_model | 删除一个模型—— 级联至其所有记录 |
list_records | 列出带有过滤器( JSON) 、 排序、 pagination 、 可选填充功能的记录 |
get_record | 由识别码获取记录;公司记录带有增值税识别码、核查和豁免 |
create_record | 创建记录; data 按模式字段键键 |
update_record | 更新记录的数据并(或)过渡其地位 |
delete_record | 删除记录 |
import_records | 批量导入最多 1000 个记录; 返回 { importedCount, errors } |
bulk_update_records | 设置最多 200 个ID 或每个过滤匹配的数据和/或状态 |
需要工作空间权限 MODELS_VIEW (已读) / MODELS_CREATE 编号 :
MODELS_EDIT 编号 : MODELS_DELETE 取决于操作.
商业工具(订单、货物、折扣)
管理店面的订单 手推车和折扣码. 所有钱田
是整数小单位(分数). 顺序/贴现工具接受
response 参数( 见 响应形状) (中文(简体) ).
| 工具 | 说明 |
|---|---|
list_orders | 按付款/完成/交付/状态、仓库队列、客户、货币、日期列出订单 skip编号 :limit |
get_order | 订购物品、付款、包裹、发票和校正、税收汇总和处理、销售渠道和定价价格清单 |
get_order_pipeline | 得到工作空间的可配置订单管道阶段 |
create_manual_order | 创建包含管理员的订单, 并附带可选的运输地址 |
edit_order | 替换一个命令的行项目(重新计算总数) |
update_order_details | 更新客户邮件、笔记、邮号和运输地址 |
mark_order_paid | 记录全额付款(人工核对,没有供应商核查) |
record_order_payment | 将部分付款记入应付款余额 |
refund_order | 退还命令(全额或部分与 amount(中文(简体) ) |
cancel_order | 取消命令 |
close_order | 标出已执行的命令; 如果支付或实现滑动, 重新打开 |
reopen_order | 重新打开已关闭的命令 |
create_return | 打开返回:线路、数量、原因、返回空间跟踪 |
approve_return | 批准客户要求的回报 |
reject_return | 拒绝请求的返回 |
cancel_return | 取消尚未退还的返回 |
receive_return | 每行记录收到的单位以及有多少个返回库存 |
refund_return | 记录退款回报 |
complete_return | 关闭未退款的已收回报 |
update_return_tracking | 设定返回包裹的载体和跟踪编号 |
create_shipment | 在命令中添加一个包裹( carrier, 跟踪号, 链接, 状态) |
update_shipment | 更改包裹状态或跟踪, 并附上其历史记录 |
set_order_pipeline_stage | 将命令移至管道阶段 |
record_order_invoice | 在订单中附上发票(号码、url、提供者) |
record_order_invoice_correction | 在发票定单上附上更正发票(信用证) |
list_carts | 列出购物车( admin视图、 可选状态过滤器) 及其销售通道 |
delete_carts | 永久删除 1-100 个推车, 全部或无 |
list_discounts | 列表折扣代码( 以启用/ 类型/ 代码过滤) |
get_discount | 由ID打折 |
create_discount | 创建折扣( E)percentage 编号 : fixed 编号 : free_shipping(中文(简体) ) |
update_discount | 部分更新( 代码/ 类型/ 货币锁定, 一旦使用代码) |
set_discount_enabled | 启用或禁用折扣 |
list_products | 有库存+变种信息的产品目录(通过一个数据模型) |
bulk_update_products | 成套散装/适当状态、库存或选定产品的价格 |
bulk_delete_products | 大量删除所选产品记录 |
set_product_tiers | 设定产品创纪录的售出价格 |
set_product_variants | 替换一个产品的全部变种集 |
set_product_currency_prices | 替换产品价格和以其他货币折价,变数的币种价格不触及库存 |
产品是自定义数据模型的记录;这些工具增加了产品意识
在通用记录工具上阅读和批量写作。 这个
散装工具针对明确 ids 列表 或者说 所有符合 filter
(单位:千美元)allMatching: true) (中文(简体) ). 没有零星的股票,也没有独立的
库存突变 -- -- 通过批量设置/调整库存 patch.setStock 编号 :
patch.adjustStock。 。 。 .
需要工作空间权限 ORDERS_VIEW 编号 : ORDERS_MANAGE (订单),
CARTS_VIEW (条款), DISCOUNTS_VIEW 编号 : DISCOUNTS_MANAGE (贴现),
MODELS_VIEW 编号 : MODELS_EDIT 编号 : MODELS_DELETE (产品).
客户工具
客户是签到现场的账户 - 一个模型的记录
启用账户, 而不是管理工作空间的团队
(单位:千美元)list_team) (中文(简体) ).
| 工具 | 说明 |
|---|---|
list_customers | 列出身份、核查、最后登录、公司和订单统计(贴出)的客户名单 |
get_customer | 一个客户的账户汇总 加上档案记录的数据 |
suspend_customer | 屏蔽登录并结束每次直播会话(订单和推车停留) |
unsuspend_customer | 让暂停的客户再次签名 |
send_customer_password_reset | 向活动客户发布重置令牌; 应用程序的 account.* webhook 发送邮件 |
resend_customer_verification | 向待办客户发布新验证符; 应用程序的 Webhook 发送邮件 |
unlock_customer | 清除失败的登录计数器并关闭 |
set_customer_company_role | 让客户在他们的公司中发挥作用(admin 看每个公司的命令, buyer 他们自己的) |
set_customer_price_list | (一) 向没有公司的客户分发价格清单; null 未指派 |
价格列表工具
价目表(金、银、经销商等级)对买方的定价比 每个产品或变体的目录加固定价格。 每个买方有一个清单: 一个公司的成员支付公司名单,一个没有公司的客户 他们自己的.
| 工具 | 说明 |
|---|---|
list_price_lists | 每个价格列表, 包含%Off, 固定价格计数, 任务计数和频道 |
get_price_list | 一份附有固定价格一页的清单(按产品过滤,光标涂页) |
create_price_list | 创建列表, 列出名称、 可选 % 及其公布的频道 |
update_price_list | 重命名一个列表, 更改其 %Off、 窗口或频道([] 无法读取) |
delete_price_list | 删除列表并取消在任何地方的指派 |
set_price_list_entry | 设置一个产品或变体的固定价格,可选的音量间隔 |
set_price_list_entries | 一次提升至1000个固定价格,全部或无 |
remove_price_list_entries | 按产品/变式计算,取消高达1 000个固定价格 |
set_company_price_list | 将价格清单分配给公司记录;每个成员支付; null 未指派 |
set_company_price_display_mode | 确定公司买主是净价还是总价; null = 默认(净额) |
set_company_tax_rounding | 设定公司的增值税四舍五入,每行或每行税率; 3; null = 工作空间设置 |
set_company_vat_id | 设置或清除公司的欧盟增值税标识;更改后的标识不再被验证 |
set_company_vat_verified | 测试或取出公司的增值税代号;驱动反向收费 |
set_company_tax_exemption | 以合法理由免除公司增值税的命令; null 清除 |
销售频道工具
销售渠道(零售道,horeca道,b2b道)是商店前期发送要定价的密钥
从向它公布的价目单中提取的:买方自己或公司的产品
列表获胜,然后是频道日期列表,然后是其基准列表,然后是
目录。 名单公布于 create_price_list 编号 : update_price_list
channels。 。 。 .
| 工具 | 说明 |
|---|---|
list_sales_channels | 每个带密钥、显示模式、价格存取、活动列表和开卡计数的频道 |
get_sales_channel | 一个频道及其公布的列表, 下一个 ChangeAt 和活跃的CartCount |
create_sales_channel | 创建一个频道( 键已建立后固定), 每个工作空间最多20个 |
update_sales_channel | 重命名频道或更改其显示模式或价格访问 |
delete_sales_channel | 删除一个频道, 取消其列表, 放弃打开的手推车 |
Webhook 工具
管理出局事件 Webhoks. create_webhook 财务报告和审定财务报表 rotate_webhook_secret
返回签名秘密 一次 - 无法再次取回.
| 工具 | 说明 |
|---|---|
list_webhooks | 列出 Webhook 端点( 密件从未返回) |
list_webhook_deliveries | 最近交付的尝试(待定/成功/失败) |
list_webhook_event_types | 可分类事件的权威授权列表 |
create_webhook | 创建终点; 返回终点 + 密( 一次) |
update_webhook | 部分更新; 通过 enabled 启用/残疾 |
rotate_webhook_secret | 旋转签名密钥( 返回一次新密钥) |
delete_webhook | 删除一个终点 |
需要工作空间权限 WEBHOOKS_VIEW (已读) / WEBHOOKS_MANAGE
(创建,更新,旋转,删除).
电子邮件工具
| 工具 | 说明 |
|---|---|
list_email_configurations | 电子邮件配置 id 写在表格上 emailConfigurationId没有证书或收件人地址 |
需要工作空间许可 EMAIL_CONFIG_VIEW。 。 。 .
资源
| URI 资源 | 说明 |
|---|---|
cmssy://sitemap | 作为 JSON 的完整页面树 |
cmssy://workspace | 工作空间信息+站点配置 |
示例工作流程
> List all pages in my workspace
> Search for pages matching "blog"
> Show me the available block types
> Which pages still use block types the site no longer registers?
> Create a new "Features" page with content in English and Polish
> Add a hero block to the Features page
> Publish the Features page
正在主机服务器( 图书馆)
createHostedServer 从没有符号和磁盘的主机提供相同的工具。 每个工具都需要一个 workspace (单位:千美元)<orgSlug>/<workspaceSlug>(三); list_workspaces 指定连接可能使用的名称。 包只检查形状 workspace - 下面的一切都是主持人的工作:
resolveWorkspace(workspace)是授权. 每通电话都检查一下,呼叫者是否仍然是该工作空间的成员,而且联系得到了批准. 为“不存在”和“不是您的”投出相同的信息,所以拒绝不会显示哪些工作空间存在.- 执行者是范围. 这个
CmssyApi它返回( e)createCmssyApi(execute, workspaceId))以该工作空间的用户身份运行每个文档;软件包不会发送任何内容. fetchUrl是 SSRF 边界 . 拒绝私有,回回回和链接本地地址,并重新检查每个方向. 包裹在读取时会以50MB为身体盖上.
发展
pnpm install
pnpm dev -- --token cs_xxx --workspace-id xxx --api-url http://localhost:4000