@agents-dev/cli

中文文档
0.9.3发布于 2026/11/03Apache-2.0TypeScriptES Module近 30 天下载 10.9万

One config to rule them all — sync MCP servers, skills and AGENTS.md across 18 AI coding tools, and package them as Agent Plugins.

原始使用文档
文档目录20 节
  1. The Problem
  2. Quick Start
  3. Supported Integrations
  4. Project Layout
  5. Command Overview
  6. Setup & Sync
  7. Diagnostics
  8. MCP Servers
  9. Profiles
  10. Plugins
  11. Skills & Integrations
  12. Global Mode
  13. Agent Plugins
  14. Context Budget
  15. MCP Server Examples
  16. Security
  17. Team Workflow
  18. FAQ
  19. Documentation
  20. License

agents

One config to rule them all.
Practical standard layer for multi-LLM development.

npm version downloads node version license

Quick Start · Integrations · Commands · Plugins · FAQ

agents start


The Problem

Instructions converged on AGENTS.md and skills converged on SKILL.md. MCP server configuration did not. Every tool keeps its own file, in its own format, in its own place:

FormatTools
TOML, mcp_servers tablesCodex (.codex/config.toml), Grok Build (.grok/config.toml)
JSON, mcpServers keyClaude Code and Copilot CLI (.mcp.json), Claude Desktop (global), Gemini CLI (.gemini/settings.json), Cursor (.cursor/mcp.json), Antigravity (.agents/mcp_config.json), Devin Desktop (global), Devin CLI (.devin/mcp_config.json), Junie (.junie/mcp/mcp.json), Factory Droid (.factory/mcp.json)
JSON, another keyCopilot VS Code (servers), OpenCode and Kilo (mcp), Amp (amp.mcpServers), Zed (context_servers)
YAMLGoose (extensions in ~/.config/goose/config.yaml)

Add a server by hand and you write it 18 times, then watch the copies drift apart.

agents keeps one source of truth in .agents/ and materializes it for every tool you enable.


Quick Start

# 1. Install
npm install -g @agents-dev/cli

# 2. Interactive setup — picks integrations, adds MCP servers, syncs everything
agents start

# 3. Re-sync whenever config changes
agents sync

.agents/agents.json is now the single source of truth. agents sync --check exits 2 when a tool config has drifted, so it works as a CI gate.


Supported Integrations

Eighteen tools. "Verified" means the tool's own CLI was run against the file this project writes; the rest follow vendor documentation and are worth reporting on if something is off.

Integration--llm idMCP config it writesSkillsVerified
Codexcodex.codex/config.toml (managed block, project trust handled)native✅
Claude Codeclaude.mcp.json project scope or CLI local/user scope, plus root CLAUDE.md wrapperbridge✅
Claude Desktopclaude_desktopglobal claude_desktop_config.json, stdio servers only—✅
Gemini CLIgemini.gemini/settings.jsonbridge✅
Cursorcursor.cursor/mcp.json + CLI enablebridge✅
Copilot VS Codecopilot_vscode.vscode/mcp.jsonnative✅
Copilot CLIcopilot_cli.mcp.json, or .github/mcp.jsonnative✅
Antigravityantigravity.agents/mcp_config.jsonflat copy✅
Devin Desktop (Windsurf)windsurf, devin_desktopglobal ~/.codeium/windsurf/mcp_config.jsonbridge✅
OpenCodeopencodeopencode.json (mcp)native✅
Juniejunie.junie/mcp/mcp.jsonbridge✅
Grok Buildgrok.grok/config.toml (managed block, folder trust handled)native✅
Ampamp.amp/settings.json (amp.mcpServers)native✅
Factory Droiddroid, factory.factory/mcp.jsonnative✅
Kilokilo, kilocode.kilo/kilo.jsonc (mcp)bridge—
Devin CLIdevin.devin/mcp_config.jsonnative✅
Zedzed.zed/settings.json (context_servers)native—
Goosegoose~/.config/goose/config.yaml (extensions)native✅

Skills column. bridge means a symlink from the tool's directory to .agents/skills (a copy where symlinks are unavailable). native means the tool reads .agents/skills itself, so nothing is created. — means the tool's project-level skill location is not implemented here.

Grok folder trust. Grok ignores a project's MCP servers and its skills until the folder is trusted, and says nothing about it: grok inspect simply lists none. Trust lives in ~/.grok/trusted_folders.toml, separate from config.toml. agents doctor reports an untrusted folder and agents doctor --fix records the trust.

Shared files. .mcp.json is read by both Claude Code and Copilot CLI, so agents writes it once for both. A server targeted at only one of them is still visible to the other; the sync says so rather than pretending targets isolate it.

Goose secrets. Goose reads credentials from the environment through env_keys, so values are never written into its config. The sync lists which variables have to exist in your shell.


Project Layout

your-project/
├── AGENTS.md                        ← Canonical instructions for all tools
├── CLAUDE.md                        ← Generated Claude wrapper (`@AGENTS.md`)
├── .agents/
│   ├── agents.json                  ← MCP servers, profiles, config (commit this)
│   ├── local.json                   ← Secrets & overrides (gitignored)
│   ├── mcp_config.json              ← Generated Antigravity workspace MCP
│   ├── skills/                      ← Reusable workflow definitions
│   │   └── my-skill/SKILL.md
│   └── generated/                   ← Auto-generated artifacts (gitignored)
│
│  ┌─── Generated by `agents sync` ───┐
├── .mcp.json                         │  Claude Code + Copilot CLI
├── .codex/config.toml                │  Codex
├── .grok/config.toml                 │  Grok Build
├── .gemini/settings.json             │  Gemini CLI
├── .cursor/mcp.json                  │  Cursor
├── .vscode/mcp.json                  │  Copilot VS Code
├── .amp/settings.json                │  Amp
├── .factory/mcp.json                 │  Factory Droid
├── .kilo/kilo.jsonc                  │  Kilo
├── .devin/mcp_config.json            │  Devin CLI
├── .zed/settings.json                │  Zed
├── opencode.json                     │  OpenCode
├── .junie/mcp/mcp.json               │  Junie
└── .claude/skills → .agents/skills   │  Skill bridges

Git strategy. In the default source-only mode, only .agents/agents.json, .agents/skills/ and AGENTS.md are committed: everything the sync generates is gitignored and rebuilt from them. In commit-generated mode the generated files stay out of .gitignore, so a clone gets working tool configs without installing this CLI. That is how you commit .mcp.json for the rest of the team.

Either way, files that hold a tool's own settings (.zed/settings.json, .amp/settings.json, .kilo/kilo.jsonc) and .github/mcp.json are never added to .gitignore: the sync merges its entries into them and leaves the rest of the file, including whether you track it, to you.


Command Overview

Setup & Sync

CommandDescription
agents startInteractive setup: integrations, MCP servers, skills, first sync
agents initScaffold .agents/ without the wizard
agents syncRegenerate and materialize all tool configs
agents sync --checkRead-only drift check, exits 2 when out of sync
agents sync --profile ciSync one profile without changing the active one
agents watchAuto-sync on .agents/ changes

Diagnostics

CommandDescription
agents statusIntegrations, MCP servers, file states, live probes
agents doctorValidate configs and report problems
agents doctor --fixApply the fixes it can make safely
agents updateCheck npm for a newer CLI

MCP Servers

CommandDescription
agents mcp add <name|url>Add a server interactively or from a URL
agents mcp import --file config.jsonBulk import from JSON/JSONC
agents mcp listList configured servers
agents mcp remove <name>Remove a server
agents mcp test [--runtime]Validate definitions, optionally through tool CLIs
agents mcp budgetConnect to each server and measure its context cost

Profiles

CommandDescription
agents profile set ci --server docs --server gitCreate or replace a profile
agents profile use ciActivate a profile and sync
agents profile useClear the profile, back to every server
agents profile listShow profiles and the active one
agents profile remove ciDelete a profile

Plugins

CommandDescription
agents plugin export --name my-stackBuild an Agent Plugins v1 package from .agents
agents plugin validate <dir>Check a package against the specification
agents plugin import <dir>Add a package's servers and skills to this project

Skills & Integrations

CommandDescription
agents skills listList skills found under .agents/skills/
agents connect --llm cursor,grokEnable integrations
agents disconnect --llm codexDisable integrations
agents resetRemove generated files, keep .agents/
agents reset --hardFull cleanup

Global Mode

Run any command with --global (or -g, or from $HOME) to manage MCP servers and skills machine-wide from ~/.agents/agents.json:

agents init -g
agents connect -g --llm opencode,codex,grok
agents sync -g

Tools that only have a user-level config (Claude Desktop, Devin Desktop, Goose) are written there in both modes.


Agent Plugins

Agent Plugins 1.0.0 is a vendor-neutral package format for skills and MCP servers, read by ChatGPT and Codex, Cursor, GitHub Copilot, Kiro and VS Code. A package is a directory with plugin.json, an mcp.json and a skills/ folder, which is close to what .agents/ already holds.

agents plugin export --name my-stack --plugin-version 1.0.0
dist/agent-plugin/
├── plugin.json      $schema, name, version, description
├── mcp.json         $schema, mcpServers
└── skills/          copied from .agents/skills

Export reads .agents/agents.json only, never local.json: what ships is the ${VAR} placeholder from the committed file, and the command prints which variables the package needs. ${PROJECT_ROOT} becomes the specification's ${PLUGIN_ROOT}.

Going the other way, agents plugin import ./some-plugin adds the package's servers under its plugin name (my-stack.docs) so nothing you already defined is replaced.


Context Budget

MCP servers cost context before an agent does any work: every tool definition is loaded up front.

agents mcp budget
MCP context budget:
  everything              13 tools  ~  1916 tokens
  filesystem              11 tools  ~  1240 tokens
  broken                 error: spawn broken-server ENOENT

Servers        3
Tools          24
Estimated      ~3156 tokens of context

The command speaks MCP 2026-07-28 directly over stdio and streamable HTTP, so the numbers come from the servers themselves. Servers built against the handshake revisions (2025-11-25 and earlier) are detected and handled the way the specification prescribes, so both eras work. Token counts are estimated from the size of the tool definitions, not measured by a model. Add --verbose for a per-tool breakdown, and --profile to measure what one profile would cost.

Servers whose config still contains an unresolved ${VAR} are skipped rather than started.


MCP Server Examples

# From a catalog URL
agents mcp add https://mcpservers.org/servers/context7-mcp

# stdio server
agents mcp add my-server --command npx --arg @my-org/mcp-server --arg /path/to/project

# HTTP server with a secret header
agents mcp add company-api --url "https://api.company.com/mcp" \
  --secret-header "Authorization=Bearer YOUR_API_TOKEN"

# Only for specific tools
agents mcp add ide-server --command ide-mcp --target cursor --target zed

A server definition supports timeout, connectTimeout, tools, disabledTools, oauth, headersHelper, bearerTokenEnvVar and envFile. Each is written only for the tools that document it, and the sync says when a field is dropped for a target that does not support it.

Values support ${VAR} and ${VAR:-default}, plus ${PROJECT_ROOT}.


Security

WhatWhere
🔓Server definitions, team config.agents/agents.json — committed
🔒API keys, tokens, secrets.agents/local.json — gitignored
  • Secret-looking values are moved to local.json and replaced with ${PLACEHOLDER} in agents.json when a server is added.
  • agents doctor warns about literal secrets in committed config.
  • Env keys and header names are validated before they reach a config file or a shell.
  • agents plugin export never reads local.json.
  • A config this CLI does not gitignore keeps the ${VAR} placeholder from agents.json, whether the value would have come from local.json or from your shell. Amp, Zed and Kilo share a file with the tool's own settings, and .github/mcp.json is a file teams review; the sync lists which variables to export so those tools can resolve them. commit-generated mode holds secrets back from every generated config for the same reason.
  • A config this CLI rewrites keeps the permissions it had, so a file you restricted to 0600 stays that way.

Team Workflow

Lead sets up the project:

agents start
agents mcp add https://mcpservers.org/servers/context7-mcp
git add .agents/agents.json .agents/skills/ AGENTS.md && git commit -m "Add agents config"

In source-only mode that is everything the team needs: each clone runs agents sync and gets the tool configs locally. Switch syncMode to commit-generated if you would rather commit .mcp.json and the rest for people who do not install the CLI.

New member onboards:

git clone <repo> && cd <repo>
agents start        # keeps the committed config, writes local tool files

CI:

agents sync --check  # exits 2 when a tool config drifted from .agents/

FAQ

Does this replace AGENTS.md?
No. AGENTS.md stays the instruction file every tool reads. This CLI handles the machine-readable side (MCP servers, skills, per-tool config) and generates the minimal root CLAUDE.md wrapper Claude Code needs, since Claude Code does not read AGENTS.md.
Why does Claude Code use .mcp.json now?
Project scope is the location Anthropic documents for teams: it lives in the repository, so everyone working on it gets the same servers, and in `commit-generated` mode it is reviewed like any other file. Before 0.9.0 the CLI registered servers in the machine-local ~/.claude.json, which nobody else could see. Set integrations.options.claudeScope to "local" for the old behaviour; projects upgrading from schema 3 keep it automatically. For servers available in every project, set it to "user" ("global" is an alias) and run agents sync -g. New home-directory installs (agents init -g or agents start -g) default to user scope; normal repositories default to project scope. Existing explicit choices are preserved. See [Claude MCP scopes](docs/agents-system.md#claude-mcp-scopes) for migration and cleanup.
Can I use this with only one tool?
Yes. Secret splitting, drift checks, plugin export and the context budget are useful with a single tool.
What happens during agents sync?
It reads .agents/, merges local.json, resolves placeholders, applies the active profile, renders each tool's format and writes files atomically. Files shared with a tool's own settings (Amp, Zed, Kilo, Gemini, OpenCode, Goose) are merged, so settings the CLI does not own survive. Runs are idempotent.
Can I target an MCP server to specific tools only?
Yes, with "targets" in the definition or --target on agents mcp add. The exception is .mcp.json, which Claude Code and Copilot CLI both read: a server in that file is visible to both, and the sync warns instead of implying otherwise.
What does agents doctor check?
Missing or invalid config, literal secrets in committed files, unresolved env vars, drift in generated files, Codex project trust, a global Codex config that cannot be parsed, deprecated sse transports, skill frontmatter against the Agent Skills specification, and the state of skill bridges.
How do I upgrade from 0.8.x?
Run any command. .agents/agents.json migrates from schema 3 to 4 automatically and the previous file is kept as agents.json.v3.bak. Nothing else is required.

Documentation

License

Apache 2.0. See LICENSE and NOTICE.

版本与发布记录

@agents-dev/cli 共发布 17 个版本,首次发布于 2026/02/08;过去 12 个月发布了 17 个版本。

版本发布日期距今
0.9.3latest2026/11/033 天前
0.9.22026/10/1324 天前
0.9.12026/09/131 个月前
0.9.02026/09/121 个月前
0.8.112026/09/071 个月前
0.8.102026/08/092 个月前

关于 @agents-dev/cli 的常见问题

@agents-dev/cli 是什么?

One config to rule them all — sync MCP servers, skills and AGENTS.md across 18 AI coding tools, and package them as Agent Plugins.

如何安装 @agents-dev/cli?

在项目目录运行 npm install @agents-dev/cli,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 agents,可以用 npx agents 直接运行。

@agents-dev/cli 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@agents-dev/cli 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@agents-dev/cli 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20.12.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@agents-dev/cli 可以商用吗?

@agents-dev/cli 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@agents-dev/cli 的下载量有多少?

根据 npm 官方下载统计,@agents-dev/cli 在 2026/10/05 – 2026/11/03 这 30 天内被下载 108,681 次,日均约 3,623 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@agents-dev/cli 还在维护吗?

最新版本 0.9.3 发布于 2026/11/03(3 天前);至今共发布 17 个版本,其中过去 12 个月发布了 17 个;首次发布于 2026/02/08。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。