mcp-acp

mcp-acp

Enables management of Ambient Code Platform (ACP) sessions, including creating, viewing, and deleting sessions, with support for labels and bulk operations.

Category
访问服务器

README

Add to Cursor Add to VS Code Add to Claude Add to ChatGPT Add to Codex Add to Gemini

MCP ACP Server

A Model Context Protocol (MCP) server for managing Ambient Code Platform (ACP) sessions via the public-api gateway.


Table of Contents


Quick Start

# Install
git clone https://github.com/ambient-code/mcp
pip install dist/mcp_acp-*.whl

# Configure
mkdir -p ~/.config/acp
cat > ~/.config/acp/clusters.yaml <<EOF
clusters:
  my-cluster:
    server: https://public-api-ambient.apps.your-cluster.example.com
    token: your-bearer-token-here
    default_project: my-workspace
default_cluster: my-cluster
EOF
chmod 600 ~/.config/acp/clusters.yaml

Then add to your MCP client (Claude Desktop, Claude Code, or uvx) and try:

List my ACP sessions

Features

Session Management

Tool Description
acp_list_sessions List/filter sessions by status, age, with sorting and limits
acp_get_session Get detailed session information by ID
acp_create_session Create sessions with custom prompts, repos, model selection, and timeout
acp_create_session_from_template Create sessions from predefined templates (triage/bugfix/feature/exploration)
acp_delete_session Delete sessions with dry-run preview
acp_restart_session Restart a stopped session
acp_clone_session Clone an existing session's configuration into a new session
acp_update_session Update session metadata (display name, timeout)

Observability

Tool Description
acp_get_session_logs Retrieve container logs for a session
acp_get_session_transcript Retrieve conversation history (JSON or Markdown)
acp_get_session_metrics Get usage statistics (tokens, duration, tool calls)

Labels

Tool Description
acp_label_resource Add labels to a session for organizing and filtering
acp_unlabel_resource Remove labels from a session by key
acp_list_sessions_by_label List sessions matching label selectors
acp_bulk_label_resources Add labels to multiple sessions (max 3)
acp_bulk_unlabel_resources Remove labels from multiple sessions (max 3)

Bulk Operations

Tool Description
acp_bulk_delete_sessions Delete multiple sessions (max 3) with confirmation and dry-run
acp_bulk_stop_sessions Stop multiple running sessions (max 3)
acp_bulk_restart_sessions Restart multiple stopped sessions (max 3)
acp_bulk_delete_sessions_by_label Delete sessions matching label selectors (max 3 matches)
acp_bulk_stop_sessions_by_label Stop sessions matching label selectors (max 3 matches)
acp_bulk_restart_sessions_by_label Restart sessions matching label selectors (max 3 matches)

Cluster Management

Tool Description
acp_list_clusters List configured cluster aliases
acp_whoami Check current configuration and authentication status
acp_switch_cluster Switch between configured clusters
acp_login Authenticate to a cluster with a Bearer token

Safety Features:

  • Dry-Run Mode — All mutating operations support dry_run for safe preview before executing
  • Bulk Operation Limits — Maximum 3 items per bulk operation with confirmation requirement
  • Label Validation — Labels must be 1-63 alphanumeric characters, dashes, dots, or underscores

Installation

From Wheel

pip install dist/mcp_acp-*.whl

From Source

git clone https://github.com/ambient-code/mcp
cd mcp
uv pip install -e ".[dev]"

Requirements:

  • Python 3.10+
  • Bearer token for the ACP public-api gateway
  • Access to an ACP cluster

Configuration

Cluster Config

Create ~/.config/acp/clusters.yaml:

clusters:
  vteam-stage:
    server: https://public-api-ambient.apps.vteam-stage.example.com
    token: your-bearer-token-here
    description: "V-Team Staging Environment"
    default_project: my-workspace

  vteam-prod:
    server: https://public-api-ambient.apps.vteam-prod.example.com
    token: your-bearer-token-here
    description: "V-Team Production"
    default_project: my-workspace

default_cluster: vteam-stage

Then secure the file:

chmod 600 ~/.config/acp/clusters.yaml

Authentication

Add your Bearer token to each cluster entry under the token field, or set the ACP_TOKEN environment variable:

export ACP_TOKEN=your-bearer-token-here

Get your token from the ACP platform administrator or the gateway's authentication endpoint.

Claude Desktop

Edit your configuration file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Linux: ~/.config/claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "acp": {
      "command": "mcp-acp",
      "args": [],
      "env": {
        "ACP_CLUSTER_CONFIG": "${HOME}/.config/acp/clusters.yaml"
      }
    }
  }
}

After editing, completely quit and restart Claude Desktop (not just close the window).

Claude Code (CLI)

claude mcp add mcp-acp -t stdio mcp-acp

Using uvx

uvx provides zero-install execution — no global Python pollution, auto-caching, and fast startup.

# Install uv (if needed)
curl -LsSf https://astral.sh/uv/install.sh | sh

Claude Desktop config for uvx:

{
  "mcpServers": {
    "acp": {
      "command": "uvx",
      "args": ["mcp-acp"]
    }
  }
}

For a local wheel (before PyPI publish):

{
  "mcpServers": {
    "acp": {
      "command": "uvx",
      "args": ["--from", "/full/path/to/dist/mcp_acp-0.1.0-py3-none-any.whl", "mcp-acp"]
    }
  }
}

Usage

Examples

# List sessions
List my ACP sessions
Show running sessions in my-workspace
List sessions older than 7 days in my-workspace
List sessions sorted by creation date, limit 20

# Session details
Get details for ACP session session-name
Show AgenticSession session-name in my-workspace

# Create a session
Create a new ACP session with prompt "Run all unit tests and report results"

# Create from template
Create an ACP session from the bugfix template called "fix-auth-issue"

# Restart / clone
Restart ACP session my-stopped-session
Clone ACP session my-session as "my-session-v2"

# Update session metadata
Update ACP session my-session display name to "Production Test Runner"

# Observability
Show logs for ACP session my-session
Get transcript for ACP session my-session in markdown format
Show metrics for ACP session my-session

# Labels
Label ACP session my-session with env=staging and team=platform
Remove label env from ACP session my-session
List ACP sessions with label team=platform

# Delete with dry-run (safe!)
Delete test-session from my-workspace in dry-run mode

# Actually delete
Delete test-session from my-workspace

# Bulk operations (dry-run first)
Delete these sessions: session-1, session-2, session-3 from my-workspace (dry-run first)
Stop all sessions with label env=test
Restart sessions with label team=platform

# Cluster operations
Check my ACP authentication
List my ACP clusters
Switch to ACP cluster vteam-prod
Login to ACP cluster vteam-stage with token

Trigger Keywords

Include one of these keywords so your MCP client routes the request to ACP: ACP, ambient, AgenticSession, or use tool names directly (e.g., acp_list_sessions, acp_whoami). Without a keyword, generic phrases like "list sessions" may not trigger the server.

Quick Reference

Task Command Pattern
Check auth Use acp_whoami
List all List ACP sessions in PROJECT
Filter status List running sessions in PROJECT
Filter age List sessions older than 7d in PROJECT
Get details Get details for ACP session SESSION
Create Create ACP session with prompt "..."
Create from template Create ACP session from bugfix template
Restart Restart ACP session SESSION
Clone Clone ACP session SESSION as "new-name"
Update Update ACP session SESSION timeout to 1800
View logs Show logs for ACP session SESSION
View transcript Get transcript for ACP session SESSION
View metrics Show metrics for ACP session SESSION
Add labels Label ACP session SESSION with env=test
Remove labels Remove label env from ACP session SESSION
Filter by label List ACP sessions with label team=platform
Delete (dry) Delete SESSION in PROJECT (dry-run)
Delete (real) Delete SESSION in PROJECT
Bulk delete Delete session-1, session-2 in PROJECT
Bulk by label Stop sessions with label env=test
List clusters Use acp_list_clusters
Login Login to ACP cluster CLUSTER

Tool Reference

For complete API specifications including input schemas, output formats, and behavior details, see API_REFERENCE.md.

Category Tool Description
Session acp_list_sessions List/filter sessions
acp_get_session Get session details
acp_create_session Create session with prompt
acp_create_session_from_template Create from template
acp_delete_session Delete with dry-run support
acp_restart_session Restart stopped session
acp_clone_session Clone session configuration
acp_update_session Update display name or timeout
Observability acp_get_session_logs Retrieve container logs
acp_get_session_transcript Get conversation history
acp_get_session_metrics Get usage statistics
Labels acp_label_resource Add labels to session
acp_unlabel_resource Remove labels by key
acp_list_sessions_by_label Filter sessions by labels
acp_bulk_label_resources Bulk add labels (max 3)
acp_bulk_unlabel_resources Bulk remove labels (max 3)
Bulk acp_bulk_delete_sessions Delete multiple sessions (max 3)
acp_bulk_stop_sessions Stop multiple sessions (max 3)
acp_bulk_restart_sessions Restart multiple sessions (max 3)
acp_bulk_delete_sessions_by_label Delete by label (max 3)
acp_bulk_stop_sessions_by_label Stop by label (max 3)
acp_bulk_restart_sessions_by_label Restart by label (max 3)
Cluster acp_list_clusters List configured clusters
acp_whoami Check authentication status
acp_switch_cluster Switch cluster context
acp_login Authenticate with Bearer token

Troubleshooting

"No authentication token available"

Your token is not configured. Either:

  1. Add token: your-token-here to your cluster in ~/.config/acp/clusters.yaml
  2. Set the ACP_TOKEN environment variable

"HTTP 401: Unauthorized"

Your token is expired or invalid. Get a new token from the ACP platform administrator.

"HTTP 403: Forbidden"

You don't have permission for this operation. Contact your ACP platform administrator.

"Direct Kubernetes API URLs (port 6443) are not supported"

You're using a direct K8s API URL. Use the public-api gateway URL instead:

  • Wrong: https://api.cluster.example.com:6443
  • Correct: https://public-api-ambient.apps.cluster.example.com

"mcp-acp: command not found"

Add Python user bin to PATH:

  • macOS: export PATH="$HOME/Library/Python/3.*/bin:$PATH"
  • Linux: export PATH="$HOME/.local/bin:$PATH"

Then restart your shell.

MCP Tools Not Showing in Claude

  1. Check Claude Desktop logs: Help → View Logs
  2. Verify config file syntax is valid JSON
  3. Make sure mcp-acp is in PATH
  4. Restart Claude Desktop completely (quit, not just close)

"Permission denied" on clusters.yaml

chmod 600 ~/.config/acp/clusters.yaml
chmod 700 ~/.config/acp

Architecture

  • MCP SDK — Standard MCP protocol implementation (stdio transport)
  • httpx — Async HTTP REST client for the public-api gateway
  • Pydantic — Settings management and input validation
  • Three-layer design — Server (tool dispatch) → Client (HTTP + validation) → Formatters (output)

See CLAUDE.md for complete system design.


Security

  • Input Validation — DNS-1123 format validation for all resource names
  • Gateway URL Enforcement — Direct K8s API URLs (port 6443) rejected
  • Bearer Token Security — Tokens filtered from logs, sourced from config or environment
  • Resource Limits — Bulk operations limited to 3 items with confirmation

See SECURITY.md for complete security documentation including threat model and best practices.


Development

# One-time setup
uv venv && uv pip install -e ".[dev]"

# Pre-commit workflow
uv run ruff format . && uv run ruff check . && uv run pytest tests/

# Run with coverage
uv run pytest tests/ --cov=src/mcp_acp --cov-report=html

# Build wheel
uvx --from build pyproject-build --installer uv

See CLAUDE.md for contributing guidelines.


Roadmap

Current implementation provides 26 tools. 3 tools remain planned:


Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Add tests for new functionality
  4. Ensure all tests pass (uv run pytest tests/)
  5. Ensure code quality checks pass (uv run ruff format . && uv run ruff check .)
  6. Submit a pull request

Status

Code: Production-Ready | Tests: All Passing | Security: Input validation, gateway enforcement, token security | Tools: 26 implemented (3 more planned)


Documentation

  • API_REFERENCE.md — Full API specifications for all 26 tools
  • SECURITY.md — Security features, threat model, and best practices
  • CLAUDE.md — System architecture and development guide

License

MIT License — See LICENSE file for details.

Support

For issues and feature requests, use the GitHub issue tracker.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选