SuperAPI AI 工具集

umb-cms-dev-cli

编程与开发

查看项目

更新于 10-16 06:06

技能介绍

用途

本资料是 Umbraco MCP Server 的 CLI 使用指南,用于指导如何通过命令行运行和调试该 MCP 服务器。该 MCP 服务器以 CLI 工具形式运行,CLI 负责认证与配置,并暴露一组直接与 Umbraco Management API 通信的工具。适合需要列出工具、调用工具、配置过滤、试运行或只读运行等场景。

检测 CLI 命令

通过一次检查确定 CLI 命令:

ls dist/index.js .env 2>/dev/null
  • 如果 dist/index.js 存在:使用 node dist/index.js
  • 否则:使用 npx @umbraco-cms/mcp-dev@latest

文档中所有示例用 <cli> 作为占位符,替换为正确的命令即可。

主要能力(命令)

快速参考:

# List all tools
<cli> --list-tools

# Describe a specific tool's schema
<cli> --describe-tool <tool-name>

# Call a tool directly (requires auth via .env)
<cli> --call <tool-name> --call-args '{"key":"value"}'

# Generate context documentation
<cli> --generate-context > CONTEXT.md

# Debug resolved configuration
<cli> --debug-config

内省命令会打印输出后立即退出,不会启动 MCP 服务器:

Flag 说明
--list-tools 打印所有工具的 ASCII 表格
--describe-tool <name> 打印某个工具的完整 JSON schema
--generate-context 输出记录所有工具的 CONTEXT.md
--debug-config 打印解析后的配置(密钥已遮蔽)
--call <name> 直接调用工具并打印 JSON 结果
--call-args <json> 为 --call 提供 JSON 参数(默认:{})

内省命令同样遵循所有过滤设置。使用 UMBRACO_READONLY=true 的 --list-tools 会显示 LLM 实际能看到的内容。

认证

永远不要把密钥作为 CLI 参数传入,应使用 .env 文件。

环境变量 必需 说明
UMBRACO_CLIENT_ID 是 来自 Umbraco API 用户的 OAuth 客户端 ID
UMBRACO_CLIENT_SECRET 是 OAuth 客户端密钥
UMBRACO_BASE_URL 是 Umbraco 实例 URL

创建 .env 文件示例:

UMBRACO_CLIENT_ID=your-client-id
UMBRACO_CLIENT_SECRET=your-secret
UMBRACO_BASE_URL=https://localhost:44391

内省命令(--list-tools、--describe-tool、--generate-context)不需要认证。

工具过滤

标志 环境变量 说明
--umbraco-tool-modes UMBRACO_TOOL_MODES 启用命名的集合分组
--umbraco-include-slices UMBRACO_INCLUDE_SLICES 仅暴露带有这些切片的工具
--umbraco-exclude-slices UMBRACO_EXCLUDE_SLICES 隐藏带有这些切片的工具
--umbraco-include-tool-collections UMBRACO_INCLUDE_TOOL_COLLECTIONS 仅暴露这些集合
--umbraco-exclude-tool-collections UMBRACO_EXCLUDE_TOOL_COLLECTIONS 隐藏这些集合
--umbraco-include-tools UMBRACO_INCLUDE_TOOLS 仅暴露这些具体工具
--umbraco-exclude-tools UMBRACO_EXCLUDE_TOOLS 隐藏这些具体工具

切片定义在 src/config/slice-registry.ts 中,是唯一的真实来源。应查看该文件获取当前列表,而不是信任此处副本,因为它会随工具增加而增长(示例:create、read、update、delete、search、publish)。未分配切片的工具回退为 other。

排除优先于包含。过滤条件可以组合。

运行模式

只读模式:

<cli> --umbraco-readonly

变更类工具会被完全移除——LLM 完全看不到它们。

试运行模式:

<cli> --umbraco-dry-run

读取类工具正常执行。变更类工具返回预览而不调用 API。

高效使用 CLI 的建议

每次 CLI 调用都消耗时间和 token。CLI 内置过滤,因此无需拉取所有内容后在本地 grep。原则如下:

  1. 在服务端过滤,而不是本地过滤。例如不要用 --list-tools | grep document,而应使用过滤标志:
# Good — server returns only what you need
<cli> --list-tools --umbraco-include-tool-collections document

可以组合过滤器进一步缩小范围:

<cli> --list-tools --umbraco-include-tool-collections document --umbraco-include-slices read,search
  1. 在遍历树之前使用搜索工具。按名称查找特定项时,优先使用 search-document,而不是用 get-document-root → get-document-by-id 遍历树。一次搜索调用即可完成,而不是两次。

  2. 批量执行相互独立的 shell 命令,合并不相互依赖的检查:

# Good — one call
ls dist/index.js .env 2>/dev/null
  1. 在猜测参数前使用 --describe-tool。如果不确定工具接受什么参数,先描述它,而不是发起可能失败的调用。

更多工作流示例可阅读 references/workflow-patterns.md。

输入净化

SDK 在工具处理器运行前校验所有字符串输入:

  • 拒绝控制字符、路径遍历(../)、内嵌查询参数、百分号编码字符串
  • 在预期位置校验 UUID 格式
  • 返回清晰的错误信息,便于智能体自我纠正

限制

资料未提供收费、价格、平台或效果方面的信息。