使用说明
@普罗米修斯os/mcp
单个MCP服务器模块,带有可组合的纯工具。仅ESM,加速HTTP传输+stdio。
跑
配置加载
MCP系统使用复杂的配置加载器,支持多个来源并提供强大的验证。有关配置选项、模式验证和安全功能的完整文档,请参阅[[mcp-config-loader.md]]。
统一配置
@promethean-os/mcp 读取单个JSON清单,并在HTTP传输处于活动状态时可选地合并EDN代理目录。这
加载器按以下顺序解析配置(最高优先级优先):
--config/-cCLI标志(从解析的路径cwd).- 最近的
promethean.mcp.json从那里走上来发现cwd. - 遗产
MCP_CONFIG_JSON包含内联JSON的环境变量。
当 transport 设置为 "http",运行时绑定JSON清单中声明的每个端点 和 启动stdio代理
在可选项中进行了描述 stdioProxyConfig EDN文件。每个EDN条目都映射到在
宣布 :http-path (违约 /<name>/mcp).
示例 promethean.mcp.json
{
"transport": "http",
"tools": [
"github_request",
"github_graphql",
"github_rate_limit",
"files_list_directory",
"files_tree_directory",
"files_view_file",
"files_write_content",
"files_write_lines",
"files_search",
"discord_send_message",
"discord_list_messages"
],
"endpoints": {
"github": { "tools": ["github_request", "github_graphql"] }
},
"stdioProxyConfig": "./packages/mcp/examples/mcp_servers.edn"
}
使用此清单运行将暴露JSON中定义的GitHub端点和中声明的任何stdio服务器
packages/mcp/examples/mcp_servers.edn 在同一个禁食实例上。将示例复制到 config/mcp_servers.edn 和
根据需要调整机器的路径(配置路径被忽略)。编辑EDN文件并重新生成清单,而不是
感人的 promethean.mcp.json 手工:
bb -m mk.mcp-cli push-all --edn config/mcp_servers.edn
pnpm --filter @promethean-os/mcp dev -- --config ./promethean.mcp.json
每台服务器将在 http://<host>:<port>/<name>/mcp 除非你设置 :http-path 在EDN条目中。使用 --prefix 预先添加基础路径(例如。, /mcp).
开发用户界面
HTTP传输公开了一个使用编译的Web组件开发UI shadow-cljs.在运行服务器之前构建一次(或在迭代时使用监视模式):
pnpm --filter @promethean-os/mcp-dev-ui build
# or
pnpm --filter @promethean-os/mcp-dev-ui watch
该束被发射到 packages/mcp/static/dev-ui 并从 /ui/assets/main.js.
标准EDN表示法
编辑器和工具共享一个规范的EDN文档,该文档现在同时包含stdio
服务器定义和HTTP清单数据。新的 :http 地图镜像
字段在 promethean.mcp.json 以便所有传输都可以从一个目录进行编辑
文件:
{:mcp-servers {:github {:command "./bin/github.sh"}
:files {:command "./bin/files.sh" :args ["--stdio"]}}
:http {:transport :http
:tools ["files_view_file" "files_write_content"]
:include-help? true
:stdio-meta {:title "Default MCP Endpoint"
:workflow ["mcp_toolset" "mcp_validate_config"]
:expectations {:usage ["Call mcp_toolset before editing"]}}
:endpoints {:files {:tools ["files_view_file" "files_write_content"]
:include-help? true
:meta {:description "Filesystem utilities"
:expectations {:pitfalls ["Avoid binary writes"]}}}
:github/review {:tools ["github_pr_get" "github_review_push"]
:include-help? true}}
:proxy {:config "./config/mcp_servers.edn"}}
:outputs [{:schema :mcp.json :path "./promethean.mcp.json"}]}
:transport,:tools,以及:include-help?反映否时使用的默认值 请求显式HTTP端点。:stdio-meta描述回退/mcp端点元数据(标题, 工作流程、期望等)。:endpoints将HTTP路径映射到它们公开的工具集,包括每个端点 元数据。:proxy带有stdio代理发现选项;:config直接映射到 JSONstdioProxyConfig现场。
统一HTTP端点
Fastify传输现在绑定了中声明的两个注册表端点
promethean.mcp.json 从以下位置解析stdio代理
packages/mcp/examples/mcp_servers.edn 同一HTTP服务器。每个端点描述符
提供一个路径:注册表描述符挂载从创建的MCP服务器
配置工具,而代理描述符直接委托给底层
StdioHttpProxy。当传输启动时,它会启动之前的任何stdio代理
监听和关闭会在关闭前等待这些代理退出
禁食。
Exec命令分配列表
exec_run 只执行在满列表中声明的命令。装载机检查:
MCP_EXEC_CONFIG→ 显式JSON文件路径。MCP_EXEC_COMMANDS_JSON→ 内联JSON有效载荷。- 最近的
promethean.mcp.exec.json当从cwd.
每个配置文件看起来像:
{
"defaultCwd": ".",
"defaultTimeoutMs": 60000,
"commands": [
{
"id": "git.status",
"description": "Short git status from repo root",
"command": "git",
"args": ["status", "--short", "--branch"]
}
]
}
使用 exec_list 在运行时反思活动的allowlist。
安全与授权
MCP系统包括一个全面的基于角色的访问控制(RBAC)框架,用于解决安全漏洞。有关完整文档,请参阅[[authorization.md]]。
快速设置
-
通过环境变量设置用户角色:
export MCP_USER_ID=user123 export MCP_USER_ROLE=developer # guest | user | developer | admin -
配置授权设置:
export MCP_DEFAULT_ROLE=guest export MCP_STRICT_MODE=true export MCP_REQUIRE_AUTH_DANGEROUS=true -
角色层次结构:
- 宾客:安全操作的只读访问
- 用户:对非破坏性操作的读写访问
- 开发者:读+写+删除访问权限
- 管理员:完全访问权限,包括系统级操作
关键安全功能
- 纵深防御:角色层次结构、工具分类、危险操作标记
- 全面审计:所有工具调用都以完整上下文记录
- 故障安全默认值:默认情况下拒绝、访客限制、管理员隔离
有关详细的配置选项、测试过程和安全最佳实践,请参阅完整的[[authorization.md]]文档。
设计
- 功能齐全的纯工具工厂(
(ctx) => { spec, invoke }). - 没有突变。DI通过
ToolContext. - ESM仅适用于
.js在TS源中导入后缀。 - 加速HTTP传输和stdio传输。
- 工具在运行时通过配置文件、自动检测或
MCP_CONFIG_JSON.
状态
这是一个提取的脚手架,用于将多个MCP服务器整合到一个包中。GitHub工具位于 src/tools/github/*.
工具
- exec_list--枚举已分配的shell命令和元数据。
- exec_run--启用时运行一个带有可选参数的分配shell命令。
- file_search——类似grep的内容搜索返回路径/行/代码段三元组。
- kanban_get_board——将所有列/任务加载到已配置的看板中。
- kanban_get_column--从板中获取一列。
- kanban_find_task/kanban_find_tack_by_title--通过UUID或确切的标题定位任务。
- kanban_update_status/kanban_move_task--在列之间移动任务或对其进行重新排序。
- kanban_sync_board——将板顺序与任务标记文件进行协调。
- kanban_search——对棋盘任务运行模糊/精确搜索。
- GitHub公关*--高级拉取请求实用程序,包括元数据查找
(
github_pr_get),diff文件检查(github_pr_files),内联位置 决心github_pr_resolve_position),并查看生命周期帮助工具 待审查(github_pr_review_start/comment_inline/submit).这些 包装GitHub REST/GraphQL边缘案例,如差异映射和建议围栏。 - GitHub审查*--GitHub拉取请求管理助手(打开PR、获取评论、,
提交评论、检查检查并运行支持的git命令)。包含
github_review_request_changes_from_codex,发布问题级PR评论 始终标记@codex因此,当请求更改时,会通知代理。 - github_apply_patch——通过提交将统一的diff应用于github分支
GraphQL
createCommitOnBranch突变。当代理无法写信时有用 工作树,但可以制作补丁向上游推进。
拉取请求审核工作流
代理商可以将新工具组合在一起,运行完整的评论,而无需制作原始评论 有效载荷:
// 1) Create a pending review (optional body summarizing goals)
{ "tool": "github_pr_review_start", "pullRequestId": "PR_NODE_ID" }
// 2) Inline comment at new line 42 with an optional suggestion
{
"tool": "github_pr_review_comment_inline",
"owner": "octocat",
"repo": "hello-world",
"number": 123,
"path": "src/app.ts",
"line": 42,
"body": "Nit: consider extracting this constant.",
"suggestion": { "after": ["const value = computeValue();"] }
}
// 3) Submit the pending review as a request for changes
{
"tool": "github_pr_review_submit",
"reviewId": "PENDING_REVIEW_ID",
"event": "REQUEST_CHANGES",
"body": "See inline comments for details."
}
HTTP端点
默认值 promethean.mcp.json 定义了多个HTTP端点。新的
/github/review endpoint为GitHub代码审查自动化工具提供支持
GraphQL API:
{
"tools": [
"github_review_open_pull_request",
"github_review_get_comments",
"github_review_get_review_comments",
"github_pr_get",
"github_pr_files",
"github_pr_resolve_position",
"github_pr_review_start",
"github_pr_review_comment_inline",
"github_pr_review_submit",
"github_review_submit_comment",
"github_review_submit_review",
"github_review_get_action_status",
"github_review_commit",
"github_review_push",
"github_review_checkout_branch",
"github_review_create_branch",
"github_review_revert_commits"
]
}
所有GitHub审查工具都需要 GITHUB_TOKEN (可选
GITHUB_GRAPHQL_URL)通过GitHub的GraphQL API进行身份验证。
- confirm_send_message--使用配置的租户+空间URN向discord通道发送消息。
- confirm_list_messages--从discord频道获取分页消息。
- pnpm_install--运行
pnpm install可选--filter针对特定套餐。 - pnpm_add——添加依赖项,支持工作区或过滤包范围。
- pnpm_remove--从工作区或筛选包中删除依赖项。
- pnpm_run_script--执行
pnpm run <script>带有可选的额外参数和过滤器。
文档
- [[authority.md]] -完整的RBAC安全框架文档
- [[mcp-config-loader.md]] -配置加载、验证和安全功能
- [docs/authorization.md]] -安全实施细节和最佳实践
