关于 Action1 RMM (unofficial)
这是一款非官方 MCP 服务,可将 Claude 等 MCP 主机连接到 Action1 RMM REST API。它整合设备群查询、审计和脚本及更新工作流,并通过防护机制控制状态变更。
主要功能
- 01查询终端、组、漏洞和软件
- 02运行 PowerShell 与 Bash 脚本
- 03搜索审计日志并规划 CVE 修复
- 04提供生成工具和精选工作流工具
- 05通过预览和明确确认保护变更
- 06支持 stdio 和 Streamable HTTP
适用场景
- 01检查终端状态和缺失更新
- 02在 Windows 或 macOS 终端运行脚本
- 03规划漏洞修复并检查审计记录
- 04通过试运行预览安排设备群变更
MCP 相关
将 Action1 REST API 操作作为 MCP 工具和资源提供,并包含多步骤任务提示词。支持 stdio 和无状态 Streamable HTTP 传输。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
167收录的工具列表 · 更新于 2 天前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| admin | boolean | 否 | 如果为 true,则仅限 API 密钥具有管理员权限的组织。 |
| limit | integer | 否 | 要返回的最大项目数。 |
| response_format | enum | 否 | 输出格式。默认值为 markdown。markdown | json |
详细介绍
action1-mcp-server
一个非官方的 Model Context Protocol (MCP) 服务,用于访问 Action1 RMM REST API。它允许 Claude(或任何其他 MCP 宿主)查询你的 Action1 设备群,在 Windows 上运行 PowerShell、 在 macOS 上运行 Bash、部署更新、重启端点、搜索审计记录并制定 CVE 修复计划;默认情况下会阻止状态变更,除非你主动启用。
非官方项目。 本服务与 Action1 Corporation 无关,也未获其认可、 赞助或支持。“Action1” 是 Action1 Corporation 的 商标。请参阅
NOTICE。
状态
固定版本的 Action1 OpenAPI 规范快照中的每项操作都可通过工具访问
(参见覆盖范围)。本服务支持 stdio 和 Streamable HTTP,并提供 MCPB
捆绑包,可用于 Claude Desktop;同时也作为 npm 包 action1-mcp-server 发布。版本及其变更记录:CHANGELOG.md。
验证状态
在允许 Agent 更改设备群中的任何内容之前,请先阅读本节。
- 自动化测试(
npm test)使用模拟的 Action1 响应运行: 单元测试、通过 SDK 客户端进行的 MCP 协议往返测试、 破坏性操作防护真值表、脱敏和大小限制。每个会更改状态的 生成工具都会通过 MCP 执行,以验证其受到防护。这些测试在 CI 中使用 Node 22、24 和 26 运行。 - 对真实 Action1 租户进行的在线运行记录在
TESTING.md中。这些测试是在开发 0.1 到 0.3 版本期间进行的, 未注明日期。测试覆盖了读取工具(组织、 端点、分页、模板、缺失的更新)、在 Windows 和 macOS 上以只读方式执行脚本(action1_execute_and_wait、action1_run_script)以及防护机制的拒绝路径。 - **只读在线结构检查(2026-10-26)**针对 0.6.0:对真实租户发出 GET 请求,
并将返回的记录结构与随附的规范进行比较。端点、漏洞、已安装软件、
自动化实例和计划、缺失的更新、端点组以及两种列表封装均符合规范;审计事件仍未
验证(该密钥缺少
view_audit权限)。详情请参阅TESTING.md。除这项 检查外,0.6.0 中的变更仅通过自动化测试验证;0.6.0 工具的在线冒烟测试仍待进行。 - 切勿在真实租户上运行:
action1_reboot_endpoint、action1_deploy_update、action1_deploy_package、action1_uninstall_program、action1_run_data_collection、将端点从组中移除、target_type: "EndpointGroup"的action1_run_script、所有会更改状态的生成工具, 以及所有账户操作(用户、角色、组织、企业)。 这些操作的请求正文遵循 Action1 OpenAPI 规范,并经过测试检查,但尚无人确认 Action1 会接受这些请求。请先在 测试端点上尝试,并在执行前查看试运行预览。
维护状态
- 由一位维护者(@mguttmann)利用业余时间 尽力维护。作者在生产环境中使用本项目。本项目没有支持合同,也不保证响应时间。
- 安全修复优先于功能开发。请私下报告漏洞 (参见安全)。
- 依赖更新由 Dependabot 提供;当运行时 依赖存在已知的高危或严重安全公告时,CI 会失败。每周任务会报告 Action1 提供的 API 规范是否与固定快照不同。
- 仅为最新的次版本提供修复。
- 欢迎提交问题和拉取请求;请参阅
docs/CONTRIBUTING.md和 行为准则。
为什么要做这个项目
Action1 提供了简洁的 REST API,但有一些细节容易让 LLM 在直接调用时悄悄产生错误结果:
- macOS Bash 操作需要包含 10 个字段的
run_script载荷;缺少任何字段时,API 都会返回not applicable to Mac platform。 - Windows PowerShell 操作需要非空的
success_exit_codes。 last_seen的格式为YYYY-MM-DD_HH-MM-SS(UTC),而非 ISO-8601,因此Date.parse会返回NaN。服务端会解析并将其转换为易读格式。- 列表项的
selfURL 中包含/general片段,但它并非真实的 REST 资源。 - 脚本输出中穿插着
Starting/Waiting/Completed生命周期标记,需要将它们过滤掉。 OS为大写,platform为小写,二者都可能包含平台字符串;其中一个检测器会对其进行标准化。
这些精心设计的工具涵盖了上述情况。服务端尚未覆盖的内容列于 docs/api-coverage-gaps.md。
安装
Claude Desktop:MCPB 程序包(推荐)
- 从项目的 GitHub Releases 下载
action1-mcp-<version>.mcpb。发布工作流会将其附加到每个版本标签。 - 双击该文件(或将其拖到 Claude Desktop 上,或使用“Settings > Extensions > Install from file”)。
- 按照向导填写:所在区域的 API 基础 URL、组织 ID、客户端 ID 和客户端密钥,以及是否允许破坏性操作(建议一开始保持关闭)。
Claude Desktop 使用内置的 Node.js 运行此程序包。详情和故障排除请参阅 docs/INSTALLATION.md。
MCP Registry
发布工作流会将每个稳定版本列入官方 MCP Registry,名称为 io.github.mguttmann/action1-mcp:其中包含程序包(发布资源的下载 URL 和 SHA-256),以及从 0.6.2 起提供的 npm 程序包 action1-mcp-server,二者使用相同的环境变量。可读取该 Registry 的 MCP 宿主和目录可以从中安装。只有该名称对应本项目;其他命名空间下的 Action1 服务使用的是不同代码。
glama.json 中列出了 Glama 条目的维护者。
从源代码安装(适用于任何 MCP 宿主)
需要 Node.js 22.12 或更高版本(见 package.json 中的 engines);CI 会测试 Node 22、24 和 26。
git clone https://github.com/mguttmann/action1-mcp.git
cd action1-mcp
npm ci
cp .env.example .env # fill in your Action1 credentials
npm run build # compiles to dist/ (tsc only)
将其添加到 Claude Code:
claude mcp add action1 -- node --env-file=$(pwd)/.env $(pwd)/dist/index.js
npm run inspector 会使用构建好的服务打开 MCP Inspector(需要 Node 22.19 或更高版本)。其他宿主(使用 JSON 配置的 Claude Desktop、Claude.ai、Cursor、Continue.dev、Cody)请参阅 docs/INSTALLATION.md。
npm(npx,适用于任何 stdio MCP 宿主)
该服务以 action1-mcp-server 的名称发布在 npm 上(命令为 action1-mcp)。只有这个确切名称对应本项目。npx 会获取并运行它,因此无需克隆或构建;必须安装 Node.js 22.12 或更高版本。
将其添加到 Claude Code(这些值会写入 Claude Code 自身的配置;请在 shell 中输入,切勿输入聊天窗口):
claude mcp add action1 \
-e ACTION1_BASE_URL=https://app.eu.action1.com/api/3.0 \
-e ACTION1_ORG_ID=<your-org-uuid> \
-e ACTION1_CLIENT_ID=<client-id> \
-e ACTION1_CLIENT_SECRET=<client-secret> \
-- npx -y action1-mcp-server
其他任何 stdio 宿主都可以在其 JSON 配置中使用相同的命令:
{
"mcpServers": {
"action1": {
"command": "npx",
"args": ["-y", "action1-mcp-server"],
"env": {
"ACTION1_BASE_URL": "https://app.eu.action1.com/api/3.0",
"ACTION1_ORG_ID": "<your-org-uuid>",
"ACTION1_CLIENT_ID": "<client-id>",
"ACTION1_CLIENT_SECRET": "<client-secret>"
}
}
}
}
包含这些值的配置文件会保存凭据:请确保只有你的用户可以读取该文件,并将其排除在版本控制之外。action1-mcp-server@<version> 用于固定版本。对于 Claude Desktop,仍推荐使用 MCPB 程序包:其向导会将客户端 ID 和密钥保存在 Claude Desktop 的安全存储中。更多宿主和选项请参阅 docs/INSTALLATION.md。
涵盖范围
- 生成的工具: 固定版本的 Action1 OpenAPI 快照中的每个操作(日期见
src/codegen/spec/SOURCE.md)都会生成一个动词开头的工具,例如action1_list_endpoint_groups,除非已有精选工具覆盖该操作。例外:POST /oauth2/token供内部使用,不会公开;两个软件包上传操作会返回说明性错误,因为它们需要二进制请求体。完整映射会生成到docs/_coverage_table.md;docs/api-coverage.md对此作了解释。 - 精选工具,用于常见工作流,包括高级封装工具(CVE 修复计划、审计日志搜索、软件清单、定期计划、报告导出、组解析器)。
- 资源(
action1://me、action1://orgs、action1://templates、action1://reports、action1://endpoints/{orgId}、action1://groups/{orgId}、action1://vulnerabilities/{orgId}),供预先获取上下文的宿主使用。 - 斜杠提示词,用于多步骤任务(
/patch-windows-fleet、/audit-vulnerabilities、/triage-offline-endpoints、/run-script-fleetwide、/software-inventory-sweep、/check-my-permissions)。
tests/unit/specSha.test.ts 会将生成的工具与固定快照关联起来。它无法检测 Action1 端的变更;npm run spec:check 和每周运行的 CI 任务会将该快照与 Action1 提供的规范进行比较。
亮点
- 有防护的状态更改。 更改状态的工具需要设置
ACTION1_ALLOW_DESTRUCTIVE=true,默认显示试运行预览,并且需要confirm: "YES"才会执行。账户操作还需要启用另一个开关。参见破坏性操作防护。 - 作用范围。
ACTION1_ALLOWED_ORG_IDS用于限制工具可操作的组织;ACTION1_TOOLSETS=read只会注册只读工具。 - 面向 Agent 的输出。 每个只读工具都接受
response_format(默认为markdown,也可为json);每个工具都会设置全部四个 MCP 注解并声明outputSchema。分页结果会在最后一页包含count、has_more、next_cursor和total。结果大小保持在宿主的 1 MB 限制以内,并显示截断说明。 - 严格的输入校验。 未知或拼写错误的参数会被拒绝并返回校验错误,而不会被忽略。
- 身份验证。 使用 OAuth2 客户端凭据,支持主动刷新、并发令牌请求去重以及刷新令牌回退。
- 传输安全。 读取请求(GET/HEAD)在发生网络错误、HTTP 5xx 和 429 时会重试(遵循
Retry-After)。变更请求只发送一次;只有在收到 429 或连接在请求发送前失败时才会重试,因此重试绝不会重复执行操作。每次 Action1 调用都受ACTION1_REQUEST_TIMEOUT_MS限制。 - 两种传输方式。 stdio(默认)和无状态 Streamable HTTP,二者均支持 MCP 2026-07-28 以及 2025 年的修订版本(ADR 0001)。HTTP 需要 bearer 令牌,会检查
Host和Origin以防 DNS 重绑定,将请求体限制为 1 MB,并按客户端 IP 限流。 - 日志。 在 stderr 上输出结构化 JSON 行,并对凭据进行脱敏;每次调用输出一条
tool_call日志,受防护的操作则会输出审计日志。Stdout 专用于 MCP。
架构
+----------------------------------------------------------------------+
| Curated tools and workflow wrappers |
| - script execution (Windows, macOS, OS-aware routing) |
| - execute_and_wait (start + poll + filtered output) |
| - get_endpoint (canonical path + list fallback) |
| - CVE remediation plan, audit log search, software inventory, ... |
+----------------------------------------------------------------------+
| Generated tools |
| - one tool per remaining spec operation, verb-first snake_case |
| - shared runtime: pagination, destructive guard, error mapping |
| - Action1 OpenAPI 3.1 snapshot, SHA-pinned (spec/openapi.sha256) |
+----------------------------------------------------------------------+
| Shared infrastructure |
| - Action1Client (auth, retry, timeouts, path safety, error mapping) |
| - TokenProvider (refresh_token fallback, proactive refresh) |
| - destructive guard, org allowlist, toolset filter |
| - structured stderr logger with redaction |
| - Markdown table renderer, response size budgets |
+----------------------------------------------------------------------+
如果生成的工具与精选工具同名,代码生成器(src/codegen/generate.ts)会舍弃生成的工具;SKIP_OPERATION_IDS(src/codegen/curated-overrides.ts)中列出的操作也会跳过。设计决策记录在 docs/adr/ 中。
配置
所有配置均通过环境变量完成。将 .env.example 复制为 .env 并填写;空值表示“使用默认值”。node dist/index.js --help 会列出相同的变量。
| 变量 | 默认值 | 说明 |
|---|---|---|
ACTION1_BASE_URL | 必填 | 所在区域的 API 基础 URL,见下文。 |
ACTION1_CLIENT_ID | 必填 | Action1 > Settings > API Credentials 中的 OAuth2 客户端 ID。 |
ACTION1_CLIENT_SECRET | 必填 | OAuth2 客户端密钥,在创建凭据时仅显示一次。 |
ACTION1_ORG_ID | 未设置 | 默认组织 UUID;工具可通过 org_id 覆盖。建议设置。 |
ACTION1_ALLOWED_ORG_IDS | 任意 | 以逗号分隔的组织 UUID,工具可操作这些组织;其他组织将被拒绝。HTTP 和共享配置中建议设置。 |
ACTION1_ALLOW_ENTERPRISE_OPS | false | 设置了 ACTION1_ALLOWED_ORG_IDS 时,也允许不绑定到某个允许组织的变更操作(企业设置、脚本库、角色、用户、企业级范围)。 |
ACTION1_ALLOW_DESTRUCTIVE | false | 设置为 true / 1 / yes 时,允许执行会更改状态的工具。 |
ACTION1_ALLOW_ACCOUNT_OPS | false | 还允许账户操作:对用户、角色、/me、企业账户、组织和订阅的更改,以及所有非 GET 的 action1_raw_request。 |
ACTION1_DESTRUCTIVE_AUTO_CONFIRM | false | 仅适用于隔离的单操作员配置:省略每次调用中的 confirm: "YES"。dry_run 仍默认为 true。 |
ACTION1_TOOLSETS | all | all、read(只读工具)或 curated(不含生成的工具);多个逗号分隔的值取交集。 |
ACTION1_REDACT_PII | false | 在工具输出(包括 User Name 等报告列和 CSV 导出列)、资源读取结果及上游错误正文中,隐藏用户名、IP 和 MAC 地址、其他地址、序列号、电子邮件地址、Active Directory 字段和个人姓名。规则与限制见:SECURITY.md。 |
ACTION1_DEFAULT_TIMEOUT_MINUTES | 10 | 默认脚本超时时间,范围为 0 到 10080。 |
ACTION1_DEFAULT_RETRY_MINUTES | 1440 | Action1 针对离线端点重试操作的时长,范围为 0 到 10080。 |
ACTION1_LAST_SEEN_STALE_MINUTES | 10 | 端点的 last_seen 超过多少分钟后视为离线,范围为 1 到 1440:操作前的离线检查、action1_get_endpoint 的 connectivity.online,以及 action1_endpoints_summary 的新鲜 / 过期计数。 |
ACTION1_REQUEST_TIMEOUT_MS | 60000 | 单次 Action1 API 调用(包括重试)的时间预算,范围为 1000 到 600000。 |
ACTION1_TOKEN_TIMEOUT_MS | 15000 | 单次 OAuth 令牌尝试的超时时间,范围为 1000 到 600000。 |
ACTION1_LOG_LEVEL | info | debug、info、notice、warn、error、critical、alert 或 emergency(不区分大小写)。 |
PORT | 3000 | HTTP 模式:监听端口。 |
HOST | 127.0.0.1 | HTTP 模式:绑定地址。 |
MCP_HTTP_TOKEN | --http 模式下必填 | 客户端必须发送的 Bearer 令牌,至少 16 个字符(openssl rand -hex 32)。 |
MCP_HTTP_ALLOW_NO_AUTH | false | HTTP 模式下不使用令牌;仅绑定 loopback 地址,用于本地开发。 |
MCP_HTTP_ALLOWED_HOSTS | loopback 和绑定地址 | 要接受的额外 Host 名称,例如反向代理后的公网名称。绑定到 0.0.0.0 / :: 时必填。 |
MCP_HTTP_ALLOWED_ORIGINS | loopback origins | 要接受的浏览器 Origin 值。 |
TRUST_PROXY | false | Express trust proxy:false、true、loopback、跳数或 CIDR 列表。在本地反向代理后方应设置为 loopback,使速率限制能够识别真实客户端 IP。 |
Action1 区域(ACTION1_BASE_URL):
| 区域 | 基础 URL |
|---|---|
| 欧洲 | https://app.eu.action1.com/api/3.0 |
| 北美 | https://app.action1.com/api/3.0 |
| 北美 2 | https://app.na-2.action1.com/api/3.0 |
| 英国 | https://app.uk.action1.com/api/3.0 |
| 澳大利亚 | https://app.au.action1.com/api/3.0 |
连接到 MCP 主机
| 主机 | 传输方式 | 文档 |
|---|---|---|
| Claude Code (CLI) | stdio | 安装:Claude Code |
| Claude Desktop (macOS / Windows) | MCPB bundle 或 stdio | 安装:Claude Desktop |
| Claude.ai (web) | Streamable HTTP | 安装:Claude.ai |
| Cursor | stdio | 安装:Cursor |
| Continue.dev / Cody | stdio | 安装:通用 |
工具
docs/USAGE.md 是工具参考文档,
docs/EXAMPLES.md 提供端到端示例。精心整理的工具层
简述如下:
发现(只读)
action1_list_organizations、action1_list_endpoints、
action1_endpoints_summary(服务端计数器,无论设备群规模大小,输出都很精简)、
action1_get_endpoint(规范路径,列表查询作为后备,
另附派生的 platform 和 connectivity.online)、
action1_search_endpoints(按主机名、用户、操作系统、
状态进行子串筛选)、action1_list_action_templates、action1_get_action_template、
action1_list_missing_updates、action1_list_vulnerabilities、
action1_list_recent_automations、action1_automations_summary。
执行(有破坏性,受保护)
action1_run_powershell(Windows;填充 success_exit_codes)、
action1_run_bash_macos(macOS;填充 run_script 的十个字段)、
action1_run_script(按操作系统路由)、action1_reboot_endpoint、
action1_deploy_update、action1_deploy_package、
action1_uninstall_program、action1_run_data_collection。它们都接受
target_type: "Endpoint"(默认值)或 "EndpointGroup";
此时 action1_run_script 还需要 os("windows" 或 "macos"),
因为无法检测群组的单一操作系统。
轮询和结果(只读)
action1_get_automation_status、action1_get_automation_results、
action1_get_automation_output(筛除生命周期标记)、
action1_wait_for_automation。
工作流(有破坏性,受保护)
action1_execute_and_wait:启动操作、轮询直至结束,并返回筛选后的输出。
在 mode: "script" 下按操作系统路由,或在 mode: "template" 下运行指定
模板。
高级封装
action1_endpoint_groups_resolve(将模糊的群组名称解析为 UUID)、
action1_software_inventory_for_endpoint、action1_recurring_schedules、
action1_audit_log_search、action1_report_export、
action1_cve_remediation_plan。
自动生成
其余所有 Action1 API 操作均生成为动词优先的 snake_case 工具;
输入参数名称会规范化为 snake_case。参见
docs/api-coverage.md。
破坏性操作防护
标记为 destructiveHint: true 的工具只有在满足以下所有条件时才会执行:
ACTION1_ALLOW_DESTRUCTIVE=true server env, restart required
ACTION1_ALLOW_ACCOUNT_OPS=true server env, only for account operations
confirm: "YES" per call, exact (waived by auto-confirm)
dry_run: false per call, the default is true (preview)
// Preview only (default)
{ "tool": "action1_run_powershell",
"arguments": { "endpoint_id": "<uuid>", "script_text": "Get-Date" } }
// -> { "dry_run": true, "would_send": { method, path, body } }
// Execute (server env: ACTION1_ALLOW_DESTRUCTIVE=true)
{ "tool": "action1_run_powershell",
"arguments": { "endpoint_id": "<uuid>", "script_text": "Get-Date",
"dry_run": false, "confirm": "YES" } }
confirm 和 dry_run 是由模型自行设置的参数。它们可以防止意外操作,
但无法防范模型遵循隐藏在 Action1 数据中的指令(主机名、脚本输出、
审计文本)。真正能抵御这类风险的控制措施,是模型无法更改的部分:环境开关、
ACTION1_ALLOWED_ORG_IDS、ACTION1_TOOLSETS=read、API 凭据的角色,
以及 MCP 主机针对每个工具的审批设置。请勿在主机中对有破坏性的工具选择“始终允许”。
有关威胁模型,请参阅 docs/SECURITY.md。
示例
更多内容见 docs/EXAMPLES.md:
# 1. Fleet health check
> "How many endpoints are online and how many need a reboot?"
agent -> action1_endpoints_summary
# 2. Read-only PowerShell on one Windows host
> "What's the OS build of <hostname>? Run Get-ComputerInfo OsBuildNumber."
agent -> action1_search_endpoints { query: "<hostname>", fields: ["hostname"] }
agent -> action1_run_powershell { endpoint_id: <uuid>,
script_text: "Get-ComputerInfo OsBuildNumber",
dry_run: false, confirm: "YES" }
agent -> action1_wait_for_automation { instance_id: <id>, endpoint_id: <uuid> }
# 3. CVE remediation plan
> "What's needed to remediate CVE-2024-XXXX?"
agent -> action1_cve_remediation_plan { cve_id: "CVE-2024-XXXX" }
agent -> action1_deploy_update { ... } (after operator confirmation)
速率限制
Action1 未公布速率限制。在开发期间,EU 实例每秒约 10 个请求未触发 HTTP 429;这只是观察结果,并非保证。如果 Action1 返回 429:
- 对于读取和修改操作,客户端都会遵循
Retry-After(上限为 60 s),因为 429 表示请求未被处理。 - 对于批量操作,优先使用
target_type: "EndpointGroup",而不是对每个端点分别调用;Action1 会在服务器端分发操作。
服务端没有出站限流,也不会缓存列表响应。
重试策略位于 src/client/action1Client.ts。
Action1 所需权限
工具只能执行 API 凭据对应角色所允许的操作。
docs/permissions.md 列出了每项操作所需的权限,这些权限根据固定版本规范中的权限标签生成。仅授予所用工具所需的权限。在 Agent 尝试执行破坏性操作之前,读取 action1://me 或运行
/check-my-permissions 提示词,查看配置的凭据可以执行哪些操作。
文档
| 文件 | 内容 |
|---|---|
docs/INSTALLATION.md | 所有受支持 MCP 主机的分步设置指南。 |
docs/USAGE.md | 精选层和包装层的工具参考、资源、提示词、输出格式、取消和日志记录。 |
docs/EXAMPLES.md | 端到端操作指南(修补、分诊、CVE 修复)。 |
docs/DEPLOYMENT.md | stdio、反向代理后的 HTTP、systemd、MCPB 和生产环境检查清单。 |
docs/SECURITY.md | 威胁模型、破坏性操作防护、流向大模型的数据以及漏洞报告方式。 |
docs/permissions.md | 每项操作和工具所需的 Action1 权限(自动生成)。 |
docs/TROUBLESHOOTING.md | 常见故障及解决方法。 |
docs/FAQ.md | 涵盖各类主题的问题。 |
docs/CONTRIBUTING.md | 开发环境设置、代码生成工作流、测试和拉取请求。 |
docs/api-coverage.md | 规范中的操作如何映射到工具;完整表格见 docs/_coverage_table.md。 |
docs/api-coverage-gaps.md | 服务未覆盖或仅在附带限制条件的情况下覆盖的内容。 |
docs/GOTCHAS.md | Action1 API 的特殊行为,以及精选工具使用的未公开端点。 |
docs/adr/ | 架构决策记录。 |
docs/403-investigation.md | 为什么 /general 并非真实路径。 |
evals/ | 面向 LLM 驱动的测试框架的评估问题。 |
TESTING.md | 测试层级和实时运行记录。 |
CHANGELOG.md | 发行说明。 |
开发
npm run dev # tsx watch (stdio)
npm run typecheck # source
npm run typecheck:tests # tests (tsconfig.test.json)
npm run lint
npm test # all test categories
npm run test:unit
npm run test:integration # MCP protocol round trips
npm run test:security # destructive-guard truth table, redaction
npm run test:performance # size limits and rendering at scale
npm run test:coverage # tests with the coverage thresholds from vitest.config.ts
npm run test:e2e # builds the MCPB bundle, starts the built servers over stdio
npm run check # lint, both typechecks, format check, tests (what CI gates on)
npm run codegen # regenerate src/tools/generated/index.ts from the spec
npm run spec:check # compare the pinned spec with the one Action1 serves
npm run inspector # MCP Inspector against the built stdio server
macOS 载荷构建器测试采用了严格的规则:它们用于保护逆向工程得到的字段集合。如果更改载荷,请同步更新测试。
路线图
待考虑的候选事项(另见
docs/api-coverage-gaps.md):
- 通过发行工作流发布带来源证明的 npm 版本(已配置可信发布者;首次工作流发布尚待完成)。
- 在测试端点上,对验证状态下列出的破坏性工具进行实时验证。
- 使用 Cloudflare Workers 部署 HTTP 传输层。
安全
请参阅 docs/SECURITY.md。请通过
https://github.com/mguttmann/action1-mcp/security/advisories/new 私下报告漏洞,不要在公开议题中披露。
许可证
MIT © 2026 mguttmann,但有一项例外:src/codegen/spec/openapi.json 中随附的 Action1
API 规范归 Action1
Corporation 所有,不受 MIT 许可证涵盖。请参阅 NOTICE。
致谢
- https://modelcontextprotocol.io 上的 MCP 社区。
- Anthropic 的
mcp-builder指南,它影响了工具设计和评估格式。 - 我在规划本项目时阅读过代码的其他开源 Action1 集成,尤其是
dimer47/action1-cli、pts211/action1-mcp-server和ghively/Action1MCP。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。