使用说明
MCP ACP服务器
模型上下文协议(MCP)服务器,用于通过公共api网关管理环境代码平台(ACP)会话。
目录
快速开始
# Install
git clone https://github.com/ambient-code/mcp
cd mcp
pip install . # installs the 'mcp-acp' command
# 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
然后添加到您的MCP客户端(克劳德桌面, 克劳德代码,或 uvx)并尝试:
List my ACP sessions
特性
会话管理
| 工具 | 说明 |
|---|---|
acp_list_sessions |
按状态、年龄、排序和限制列出/筛选会话 |
acp_get_session |
按ID获取详细的会话信息 |
acp_create_session |
使用自定义提示、存储库、模型选择和超时创建会话 |
acp_create_session_from_template |
从预定义的模板创建会话(分类/错误修复/功能/探索) |
acp_delete_session |
使用模拟运行预览删除会话 |
acp_restart_session |
重新启动已停止的会话 |
acp_clone_session |
将现有会话的配置克隆到新会话中 |
acp_update_session |
更新会话元数据(显示名称、超时) |
可观测性
| 工具 | 说明 |
|---|---|
acp_get_session_logs |
检索会话的容器日志 |
acp_get_session_transcript |
检索对话历史记录(JSON或Markdown) |
acp_get_session_metrics |
获取使用统计数据(令牌、持续时间、工具调用) |
标签
| 工具 | 说明 |
|---|---|
acp_label_resource |
为会话添加标签以进行组织和筛选 |
acp_unlabel_resource |
按键从会话中删除标签 |
acp_list_sessions_by_label |
列出与标签选择器匹配的会话 |
acp_bulk_label_resources |
为多个会话添加标签(最多3个) |
acp_bulk_unlabel_resources |
从多个会话中删除标签(最多3个) |
批量操作
| 工具 | 说明 |
|---|---|
acp_bulk_delete_sessions |
通过确认和模拟运行删除多个会话(最多3个) |
acp_bulk_stop_sessions |
停止多个正在运行的会话(最多3个) |
acp_bulk_restart_sessions |
重新启动多个已停止的会话(最多3个) |
acp_bulk_delete_sessions_by_label |
删除与标签选择器匹配的会话(最多3个匹配项) |
acp_bulk_stop_sessions_by_label |
停止与标签选择器匹配的会话(最多3个匹配项) |
acp_bulk_restart_sessions_by_label |
重新启动与标签选择器匹配的会话(最多3个匹配项) |
群集管理
| 工具 | 说明 |
|---|---|
acp_list_clusters |
列出已配置的群集别名 |
acp_whoami |
检查当前配置和身份验证状态 |
acp_switch_cluster |
在已配置的群集之间切换 |
acp_login |
使用Bearer令牌对集群进行身份验证 |
安全特性:
- 干运行模式 --所有变异操作支持
dry_run执行前进行安全预览 - 批量操作限制 --每次批量操作最多3个项目,需要确认
- 标签验证 --标签必须是1-63个字母数字字符、破折号、点或下划线
安装
来源(最终用户)
git clone https://github.com/ambient-code/mcp
cd mcp
pip install . # installs the 'mcp-acp' command
从车轮
需要 make 待安装。
# "make install" sets up the dev environment (.venv + dependencies),
# which "make build" then uses to produce the wheel in dist/
make install
make build
pip install dist/mcp_acp-*.whl
开发安装(贡献者)
git clone https://github.com/ambient-code/mcp
cd mcp
uv venv
uv pip install -e ".[dev]"
虚拟环境安装
在一些Linux发行版(Debian、Ubuntu、Fedora 38+)上, pep668
防止 pip install 进入Python系统。如果出现“外部管理环境”错误,
改为安装到虚拟环境中:
git clone https://github.com/ambient-code/mcp
cd mcp
python3 -m venv .venv
source .venv/bin/activate
pip install .
请注意 mcp-acp 命令仅在venv内部可用。使用它
从像Claude Code这样的MCP客户端引用完整路径:
claude mcp add mcp-acp -t stdio /full/path/to/mcp/.venv/bin/mcp-acp
要求:
- Python 3.12+
- ACP公共api网关的承载令牌
- 访问ACP集群
配置
群集配置
创建 ~/.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
然后保护文件:
chmod 600 ~/.config/acp/clusters.yaml
认证
将您的Bearer代币添加到以下每个集群条目中 token 字段,或设置 ACP_TOKEN 环境变量:
export ACP_TOKEN=your-bearer-token-here
从ACP平台管理员或网关的身份验证端点获取令牌。
克劳德桌面
编辑配置文件:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Linux:
~/.config/claude/claude_desktop_config.json - 视窗:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"acp": {
"command": "mcp-acp",
"args": [],
"env": {
"ACP_CLUSTER_CONFIG": "${HOME}/.config/acp/clusters.yaml"
}
}
}
}
编辑后, 完全退出并重新启动Claude Desktop (不仅仅是关上窗户)。
克劳德代码(CLI)
claude mcp add mcp-acp -t stdio mcp-acp
使用uvx
uvx 提供零安装执行——没有全局Python污染、自动缓存和快速启动。
# Install uv (if needed)
curl -LsSf https://astral.sh/uv/install.sh | sh
uvx的Claude桌面配置:
{
"mcpServers": {
"acp": {
"command": "uvx",
"args": ["mcp-acp"]
}
}
}
对于本地控制盘(在PyPI发布之前):
{
"mcpServers": {
"acp": {
"command": "uvx",
"args": ["--from", "/full/path/to/dist/mcp_acp-0.3.0-py3-none-any.whl", "mcp-acp"]
}
}
}
用法
例子
# 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
触发器关键字
包含以下关键字之一,以便您的MCP客户端将请求路由到ACP: 自动控制面板, 环境的, 代理会议或直接使用工具名称(例如。, acp_list_sessions, acp_whoami).如果没有关键字,像“列表会话”这样的通用短语可能不会触发服务器。
快速参考
| 任务 | 命令模式 |
|---|---|
| 检查身份验证 | Use acp_whoami |
| 列出全部 | List ACP sessions in PROJECT |
| 过滤器状态 | List running sessions in PROJECT |
| 过滤器年龄 | List sessions older than 7d in PROJECT |
| 获取详细信息 | Get details for ACP session SESSION |
| 创建 | Create ACP session with prompt "..." |
| 从模板创建 | Create ACP session from bugfix template |
| 重新启动 | Restart ACP session SESSION |
| 克隆 | Clone ACP session SESSION as "new-name" |
| 更新 | Update ACP session SESSION timeout to 1800 |
| 查看日志 | Show logs for ACP session SESSION |
| 查看成绩单 | Get transcript for ACP session SESSION |
| 查看指标 | Show metrics for ACP session SESSION |
| 添加标签 | Label ACP session SESSION with env=test |
| 删除标签 | Remove label env from ACP session SESSION |
| 按标签筛选 | List ACP sessions with label team=platform |
| 删除(干燥) | Delete SESSION in PROJECT (dry-run) |
| 删除(真实) | Delete SESSION in PROJECT |
| 批量删除 | Delete session-1, session-2 in PROJECT |
| 按标签散装 | Stop sessions with label env=test |
| 列出集群 | Use acp_list_clusters |
| 登录 | Login to ACP cluster CLUSTER |
工具参考
有关完整的API规范,包括输入模式、输出格式和行为详细信息,请参阅 API_REFERENCE.md.
| 类别 | 工具 | 描述 |
|---|---|---|
| 会话 | acp_list_sessions |
列出/筛选会话 |
acp_get_session |
获取会话详细信息 | |
acp_create_session |
使用提示创建会话 | |
acp_create_session_from_template |
从模板创建 | |
acp_delete_session |
使用模拟运行支持删除 | |
acp_restart_session |
重新启动已停止的会话 | |
acp_clone_session |
克隆会话配置 | |
acp_update_session |
更新显示名称或超时 | |
| 可观测性 | acp_get_session_logs |
检索容器日志 |
acp_get_session_transcript |
获取对话历史记录 | |
acp_get_session_metrics |
获取使用统计数据 | |
| 标签 | acp_label_resource |
向会话添加标签 |
acp_unlabel_resource |
按键删除标签 | |
acp_list_sessions_by_label |
按标签筛选会话 | |
acp_bulk_label_resources |
批量添加标签(最多3个) | |
acp_bulk_unlabel_resources |
批量移除标签(最多3个) | |
| 批量 | acp_bulk_delete_sessions |
删除多个会话(最多3个) |
acp_bulk_stop_sessions |
停止多个会话(最多3个) | |
acp_bulk_restart_sessions |
重新启动多个会话(最多3个) | |
acp_bulk_delete_sessions_by_label |
按标签删除(最多3个) | |
acp_bulk_stop_sessions_by_label |
按标签停车(最多3个) | |
acp_bulk_restart_sessions_by_label |
按标签重新启动(最多3个) | |
| 簇 | acp_list_clusters |
列出已配置的群集 |
acp_whoami |
检查身份验证状态 | |
acp_switch_cluster |
切换群集上下文 | |
acp_login |
使用Bearer令牌进行身份验证 |
故障排除
“没有可用的身份验证令牌”
您的令牌尚未配置。要么:
- 添加
token: your-token-here到您的集群~/.config/acp/clusters.yaml - 设置
ACP_TOKEN环境变量
“HTTP 401:未经授权”
您的令牌已过期或无效。从ACP平台管理员处获取新令牌。
“HTTP 403:禁止”
您没有此操作的权限。请联系您的ACP平台管理员。
“不支持直接Kubernetes API URL(端口6443)”
您使用的是直接的K8s API URL。请改用public-API网关URL:
- 错误:
https://api.cluster.example.com:6443 - 正确:
https://public-api-ambient.apps.cluster.example.com
“mcp-acp:找不到命令”
将Python用户bin添加到PATH:
- macOS:
export PATH="$HOME/Library/Python/3.*/bin:$PATH" - Linux:
export PATH="$HOME/.local/bin:$PATH"
然后重新启动shell。
MCP工具未在Claude中显示
- 检查克劳德桌面日志:帮助→ 查看日志
- 验证配置文件语法是否为有效的JSON
- 确保
mcp-acp在PATH中 - 完全重新启动Claude Desktop(退出,而不仅仅是关闭)
clusters.yaml上的“权限被拒绝”
chmod 600 ~/.config/acp/clusters.yaml
chmod 700 ~/.config/acp
建筑
- MCP-SDK --标准MCP协议实现(stdio传输)
- httpx --公共api网关的异步HTTP REST客户端
- 派丹蒂克 --设置管理和输入验证
- 三层设计 --服务器(工具调度)→ 客户端(HTTP+验证)→ 格式化程序(输出)
看 CLAUDE.md 完成系统设计。
安全
- 输入验证 --所有资源名称的DNS-1123格式验证
- 网关URL强制 -直接K8s API URL(端口6443)被拒绝
- 承载令牌安全 --从日志中过滤的令牌,来源于配置或环境
- 资源限制 --批量操作仅限于3个项目,需确认
看 安全.md 获取完整的安全文档,包括威胁模型和最佳实践。
发展
# 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
看 CLAUDE.md 为提供指导方针。
路线图
目前的实施提供了26个工具。仍计划使用3种工具:
贡献
- 分叉存储库
- 创建要素分支
- 添加新功能的测试
- 确保所有测试通过(
uv run pytest tests/) - 确保代码质量检查通过(
uv run ruff format . && uv run ruff check .) - 提交拉取请求
状态
代码:生产就绪| 测试:全部通过| 安全:输入验证、网关实施、令牌安全| 工具:26项已执行(另有3个计划)
文档
- API_REFERENCE.md -所有26种工具的完整API规范
- 安全.md --安全功能、威胁模型和最佳实践
- CLAUDE.md --系统架构和开发指南
许可证
MIT许可证——有关详细信息,请参阅许可证文件。
支持
对于问题和功能请求,请使用 GitHub问题跟踪器.
