会话管理服务器

MCP ACP服务器是一个用于通过公共API网关管理Ambient Code Platform(ACP)会话的模型上下文协议服务器,提供会话管理、监控、标签操作和集群管理等功能。

  • by ambient-code
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 ambient-code/mcp

使用说明

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令牌进行身份验证

故障排除

“没有可用的身份验证令牌”

您的令牌尚未配置。要么:

  1. 添加 token: your-token-here 到您的集群 ~/.config/acp/clusters.yaml
  2. 设置 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中显示

  1. 检查克劳德桌面日志:帮助→ 查看日志
  2. 验证配置文件语法是否为有效的JSON
  3. 确保 mcp-acp 在PATH中
  4. 完全重新启动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种工具:


贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 添加新功能的测试
  4. 确保所有测试通过(uv run pytest tests/)
  5. 确保代码质量检查通过(uv run ruff format . && uv run ruff check .)
  6. 提交拉取请求

状态

代码:生产就绪| 测试:全部通过| 安全:输入验证、网关实施、令牌安全| 工具:26项已执行(另有3个计划)


文档

许可证

MIT许可证——有关详细信息,请参阅许可证文件。

支持

对于问题和功能请求,请使用 GitHub问题跟踪器.