Title: feat: mcp subcommand for managing MCP servers independently · Issue #346 · EntityProcess/allagents · GitHub
Open Graph Title: feat: mcp subcommand for managing MCP servers independently · Issue #346 · EntityProcess/allagents
X Title: feat: mcp subcommand for managing MCP servers independently · Issue #346 · EntityProcess/allagents
Description: Summary Add an `allagents mcp` subcommand surface for managing MCP servers independently of full plugin installs, mirroring the `claude mcp` command surface. Motivation Currently, MCP servers are synced as part of plugin install/update. ...
Open Graph Description: Summary Add an `allagents mcp` subcommand surface for managing MCP servers independently of full plugin installs, mirroring the `claude mcp` command surface. Motivation Currently, MCP servers are s...
X Description: Summary Add an `allagents mcp` subcommand surface for managing MCP servers independently of full plugin installs, mirroring the `claude mcp` command surface. Motivation Currently, MCP servers are s...
Opengraph URL: https://github.com/EntityProcess/allagents/issues/346
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"feat: mcp subcommand for managing MCP servers independently","articleBody":"## Summary\n\nAdd an \\`allagents mcp\\` subcommand surface for managing MCP servers independently of full plugin installs, mirroring the \\`claude mcp\\` command surface.\n\n## Motivation\n\nCurrently, MCP servers are synced as part of plugin install/update. Users may want to:\n- Install only MCP servers from a plugin without syncing skills/agents/hooks\n- List which MCP servers AllAgents has synced across clients\n- Remove specific MCP servers\n- Update MCP configs without running a full workspace update\n\nAllAgents already syncs MCP servers during \\`plugin install\\` — this issue adds a dedicated subcommand for MCP-only workflows.\n\n## Proposed Commands\n\n| Command | Description |\n|---------|-------------|\n| \\`allagents mcp add \u003cname\u003e \u003ccommandOrUrl\u003e [args...]\\` | Add an MCP server across configured clients |\n| \\`allagents mcp list\\` | List MCP servers managed by AllAgents (with per-client status) |\n| \\`allagents mcp remove \u003cname\u003e\\` | Remove a synced MCP server from all clients |\n| \\`allagents mcp update\\` | Sync MCP servers from plugins without syncing other artifacts |\n| \\`allagents mcp get \u003cname\u003e\\` | Show details of a specific MCP server (config, which clients have it) |\n\n### Consistency Notes\n\n- \\`mcp update\\` is consistent with \\`workspace update\\` (which supersedes the old sync command)\n- Command surface mirrors \\`claude mcp\\` (\\`add\\`, \\`list\\`, \\`remove\\`, \\`get\\`) for familiarity\n- Respects existing ownership tracking — only manages servers AllAgents added, never touches user-managed servers\n\n## Implementation Notes\n\n### Key source files\n\n- **MCP sync per client:**\n - \\`src/core/claude-mcp.ts\\` — syncs to \\`.mcp.json\\`, tracks owned servers via \\`trackedServers\\`\n - \\`src/core/vscode-mcp.ts\\` — syncs to \\`.vscode/settings.json\\` MCP section\n - \\`src/core/codex-mcp.ts\\` — project-scoped MCP config\n- **Sync state:** \\`src/core/sync-state.ts\\` — \\`getPreviouslySyncedMcpServers()\\` returns what AllAgents owns\n- **CLI commands:** \\`src/cli/commands/\\` — add new \\`mcp.ts\\` command file\n- **Sync output formatting:** \\`src/cli/format-sync.ts\\` — reuse for \\`mcp list\\` display\n\n### Ownership model\n\nAllAgents tracks which MCP servers it installed via \\`trackedServers\\` in sync state. This is critical:\n- \\`mcp add\\` must add the server to \\`trackedServers\\` so AllAgents owns it\n- \\`mcp remove\\` must only remove servers in \\`trackedServers\\`, never user-managed ones\n- \\`mcp list\\` should show ownership status (AllAgents-managed vs user-managed)\n- See CLAUDE.md \"MCP Server Sync\" section for the ownership rule\n\n### \\`mcp add\\` behavior\n\nShould mirror \\`claude mcp add\\` flags where applicable:\n- \\`--transport http|stdio\\` (default: infer from URL vs command)\n- \\`-e KEY=VALUE\\` for environment variables\n- \\`--client claude,copilot\\` to target specific clients (default: all configured)\n- Writes to each client's MCP config file using existing per-client sync logic\n\n### \\`mcp update\\` behavior\n\nRuns only the MCP portion of the sync pipeline:\n1. Collect \\`.mcp.json\\` configs from all plugins in workspace\n2. Sync to each client's MCP config (using existing \\`claude-mcp.ts\\`, \\`vscode-mcp.ts\\`, etc.)\n3. Purge servers no longer provided by plugins\n4. Skip skill/agent/hook/command sync entirely\n\n## Acceptance Criteria\n\n- [ ] \\`allagents mcp add \u003cname\u003e \u003ccommandOrUrl\u003e\\` adds an MCP server to all configured clients\n- [ ] \\`allagents mcp add --client claude,copilot\\` targets specific clients\n- [ ] \\`allagents mcp list\\` shows all AllAgents-managed MCP servers with per-client sync status\n- [ ] \\`allagents mcp remove \u003cname\u003e\\` removes server from all clients and sync state\n- [ ] \\`allagents mcp update\\` syncs MCP servers from plugins without touching other artifacts\n- [ ] \\`allagents mcp get \u003cname\u003e\\` shows server config and which clients have it\n- [ ] Respects ownership model — never modifies user-managed servers\n- [ ] New servers added via \\`mcp add\\` are tracked in sync state\n\n## Context\n\nFrom analysis of enterprise adoption — some teams primarily need MCP server distribution (e.g., connecting AI assistants to internal APIs) and don't need full plugin artifact sync. An MCP-focused entry point lowers the barrier.","author":{"url":"https://github.com/christso","@type":"Person","name":"christso"},"datePublished":"2026-03-27T09:39:43.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":1},"url":"https://github.com/346/allagents/issues/346"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:c7fe1c59-f6ad-e36d-2889-b46e1a80d852 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | E8BC:FC07A:54488B:77D7C6:6A4D229A |
| html-safe-nonce | 0c4752ee9542bb087dfa7fc2900fdada45e77b0f929ae2a78cc2b4f9c2a9a50d |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJFOEJDOkZDMDdBOjU0NDg4Qjo3N0Q3QzY6NkE0RDIyOUEiLCJ2aXNpdG9yX2lkIjoiODk1OTM3MTE1Nzg0NjE3MjMxNCIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | 166445018e163b0c4e0add79e5b7bd36cc1c65ce6dead7e80bddf9be97d77ff3 |
| hovercard-subject-tag | issue:4151051065 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/EntityProcess/allagents/346/issue_layout |
| twitter:image | https://opengraph.githubassets.com/c0e53cc8a81287fce8cae07872ebdaabb4f6a7663908e9beb7a28efba7954596/EntityProcess/allagents/issues/346 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/c0e53cc8a81287fce8cae07872ebdaabb4f6a7663908e9beb7a28efba7954596/EntityProcess/allagents/issues/346 |
| og:image:alt | Summary Add an `allagents mcp` subcommand surface for managing MCP servers independently of full plugin installs, mirroring the `claude mcp` command surface. Motivation Currently, MCP servers are s... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | christso |
| hostname | github.com |
| expected-hostname | github.com |
| None | 92571a8944142227b7e19cd10918b1ddd06e5066c1ad5bc7e4769cf6140a87e6 |
| turbo-cache-control | no-preview |
| go-import | github.com/EntityProcess/allagents git https://github.com/EntityProcess/allagents.git |
| octolytics-dimension-user_id | 8837957 |
| octolytics-dimension-user_login | EntityProcess |
| octolytics-dimension-repository_id | 1139437609 |
| octolytics-dimension-repository_nwo | EntityProcess/allagents |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 1139437609 |
| octolytics-dimension-repository_network_root_nwo | EntityProcess/allagents |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 93f17a978ee60bc4668e1d7b90e6bd2d622261fd |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width