Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者提供的说明(英文原文)
Unofficial MCP server for the Action1 RMM API: fleet queries, scripts, updates, guarded changes.
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
ACTION1_BASE_URL, ACTION1_ORG_ID, ACTION1_CLIENT_ID, ACTION1_CLIENT_SECRET, ACTION1_ALLOW_DESTRUCTIVE标为机密的值是你账户的钥匙。千万不要分享给别人,也不要粘贴到聊天里。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
链接指向作者自己的文件;我们不托管也不重新打包它。打开文件后,Claude Desktop 会进行安装。
在终端中运行这条命令
claude mcp add action1 --env ACTION1_BASE_URL=your-value --env ACTION1_ORG_ID=your-value --env ACTION1_CLIENT_ID=your-value --env ACTION1_CLIENT_SECRET=your-value --env ACTION1_ALLOW_DESTRUCTIVE=your-value -- npx -y action1-mcp-server运行前请先填写空着的值。
粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"action1": {
"command": "npx",
"args": [
"-y",
"action1-mcp-server"
],
"env": {
"ACTION1_BASE_URL": "your-value",
"ACTION1_ORG_ID": "your-value",
"ACTION1_CLIENT_ID": "your-value",
"ACTION1_CLIENT_SECRET": "your-value",
"ACTION1_ALLOW_DESTRUCTIVE": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"action1": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"action1-mcp-server"
],
"env": {
"ACTION1_BASE_URL": "your-value",
"ACTION1_ORG_ID": "your-value",
"ACTION1_CLIENT_ID": "your-value",
"ACTION1_CLIENT_SECRET": "your-value",
"ACTION1_ALLOW_DESTRUCTIVE": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
ACTION1_ALLOW_DESTRUCTIVE env这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月7日
注册名称已通过 GitHub 账户 mguttmann 验证,该账户拥有此仓库
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
你需要填写:ACTION1_BASE_URL, ACTION1_ORG_ID, ACTION1_CLIENT_ID, ACTION1_CLIENT_SECRET
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(0.6.2)于11天前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 MCPB, Node.js。
同一分类中有:Spec Driven Development, Remote Desktop Commander, EmbeddedCI BenchPod
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Drive a BenchPod hardware-in-the-loop bench: power, flash, UART, I2C, CAN, analog and logic.
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
An unofficial Model Context Protocol (MCP) server for the Action1 RMM REST API. It lets Claude (or any other MCP host) query your Action1 fleet, run PowerShell on Windows and Bash on macOS, deploy updates, reboot endpoints, search audit trails and build CVE remediation plans, with a guard that keeps state changes off unless you switch them on.
Unofficial project. This server is not affiliated with, endorsed by,
sponsored by or supported by Action1 Corporation. "Action1" is a
trademark of Action1 Corporation. See
NOTICE.
Every operation of the pinned Action1 OpenAPI snapshot is reachable through a tool (see What is covered). The server speaks stdio and Streamable HTTP and ships as an MCPB bundle for Claude Desktop and as the npm package action1-mcp-server. Releases and their changes: CHANGELOG.md.
Read this before you let an agent change anything in your fleet.
npm test) run against mocked Action1 responses: unit tests, MCP protocol round trips through the SDK client, the destructive-guard truth table, redaction and size limits. Every generated tool that changes state is driven through MCP to prove it is guarded. These tests run in CI on Node 22, 24 and 26.TESTING.md. They were made while versions 0.1 to 0.3 were developed and were not dated. They cover the read tools (organizations, endpoints, pagination, templates, missing updates), read-only script execution on Windows and macOS (action1_execute_and_wait, action1_run_script) and the guard's refusal paths.view_audit). Details in TESTING.md. Apart from this check, the changes in 0.6.0 are covered by the automated tests only; a live smoke run of the 0.6.0 tools is pending.action1_reboot_endpoint, action1_deploy_update, action1_deploy_package, action1_uninstall_program, action1_run_data_collection, removing an endpoint from a group, action1_run_script with target_type: "EndpointGroup", every generated tool that changes state, and every account operation (users, roles, organizations, enterprise). Their request bodies follow the Action1 OpenAPI spec and are checked by tests, but nobody has confirmed that Action1 accepts them. Try them on a test endpoint first and look at the dry-run preview before you execute.docs/CONTRIBUTING.md and the Code of Conduct.Action1 has a clean REST API, but a few quirks silently produce wrong results when an LLM calls it naively:
run_script payload; the API answers not applicable to Mac platform for any missing field.success_exit_codes.last_seen is YYYY-MM-DD_HH-MM-SS (UTC), not ISO-8601, so Date.parse returns NaN. The server parses it and renders it readable.self URL of a list item contains a /general segment that is not a real REST resource.Starting / Waiting / Completed lifecycle markers that need to be filtered.OS is upper-case and platform lower-case, and both can carry the platform string; one detector normalises them.The curated tools encode all of these. What the server does not cover is listed in docs/api-coverage-gaps.md.
action1-mcp- .mcpb from the project's GitHub Releases. The release workflow attaches it to every version tag.Claude Desktop runs the bundle with its built-in Node.js. Details and troubleshooting: docs/INSTALLATION.md.
The release workflow lists each stable release in the official MCP Registry as io.github.mguttmann/action1-mcp: the bundle (download URL and SHA-256 of the release asset) and, from 0.6.2 on, the npm package action1-mcp-server, both with the same environment variables. MCP hosts and directories that read the registry can install it from there. Only that name is this project; Action1 servers under other namespaces are different code.
glama.json names the maintainer of the Glama listing.
Requires Node.js 22.12 or newer (engines in package.json); CI tests Node 22, 24 and 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)
Attach it to Claude Code:
claude mcp add action1 -- node --env-file=$(pwd)/.env $(pwd)/dist/index.js
npm run inspector opens the MCP Inspector against the built server (needs Node 22.19 or newer). Other hosts (Claude Desktop with a JSON config, Claude.ai, Cursor, Continue.dev, Cody) are covered in docs/INSTALLATION.md.
The server is published on npm as action1-mcp-server (command action1-mcp). Only that exact name is this project. npx fetches and runs it, so no clone or build is needed; Node.js 22.12 or newer must be installed.
Attach it to Claude Code (the values land in Claude Code's own configuration; type them in your shell, never into a chat):
claude mcp add action1 \
-e ACTION1_BASE_URL=https://app.eu.action1.com/api/3.0 \ -e ACTION1_ORG_ID= \ -e ACTION1_CLIENT_ID= \ -e ACTION1_CLIENT_SECRET= \ -- npx -y action1-mcp-server
Any other stdio host takes the same command in its JSON configuration:
{
"mcpServers": { "action1": { "command": "npx", "args": ["-y", "action1-mcp-server"], "env": { "ACTION1_BASE_URL": "https://app.eu.action1.com/api/3.0", "ACTION1_ORG_ID": " ", "ACTION1_CLIENT_ID": " ", "ACTION1_CLIENT_SECRET": " " } } } }
A configuration file with these values holds the credential: keep it readable for your user only and out of version control. action1-mcp-server@ pins a version. For Claude Desktop the MCPB bundle stays the recommended path: its wizard keeps the client ID and secret in Claude Desktop's secure storage. More hosts and options: docs/INSTALLATION.md.
src/codegen/spec/SOURCE.md) becomes a verb-first tool such as action1_list_endpoint_groups, unless a curated tool covers it. Exceptions: POST /oauth2/token is used internally and not exposed, and the two package-upload operations return an explanatory error because they need a binary body. The full mapping is generated into docs/_coverage_table.md; docs/api-coverage.md explains it.action1://me, action1://orgs, action1://templates, action1://reports, action1://endpoints/{orgId}, action1://groups/{orgId}, action1://vulnerabilities/{orgId}) for hosts that pre-fetch context./patch-windows-fleet, /audit-vulnerabilities, /triage-offline-endpoints, /run-script-fleetwide, /software-inventory-sweep, /check-my-permissions).tests/unit/specSha.test.ts ties the generated tools to the pinned snapshot. It does not see changes at Action1; npm run spec:check and a weekly CI job compare the snapshot with the spec Action1 serves.
ACTION1_ALLOW_DESTRUCTIVE=true, default to a dry-run preview and need confirm: "YES" to execute. Account operations need a second switch. See Destructive guard.ACTION1_ALLOWED_ORG_IDS limits which organizations the tools may address; ACTION1_TOOLSETS=read registers only read-only tools.response_format (markdown default, json); every tool sets all four MCP annotations and declares an outputSchema. Paginated results carry count, has_more, next_cursor, and total on the final page. Results stay under the 1 MB host limit with visible truncation notes.Retry-After). Mutations are sent once and retried only on 429 or when the connection failed before the request was sent, so a retry never runs an action twice. Every Action1 call is bounded by ACTION1_REQUEST_TIMEOUT_MS.Host and Origin against DNS rebinding, limits bodies to 1 MB and rate-limits per client IP.tool_call line per call and audit lines for guarded operations. Stdout is reserved for MCP.+----------------------------------------------------------------------+
| Curated tools and workflow wrappers | | - script execution (Windows, macOS, OS-aware routing) | | - execute_and_wait (start + poll + filtered output) | | - get_endpoint (canonical path
只显示了开头部分;其余内容请在仓库中阅读