MCP server for Apollo configuration export and diff workflows
Project description
Apollo Diff 工具
这是一个命令行工具,用于检查 Apollo 配置中心中指定应用 ID 下的配置项在不同环境和 cluster 中的差异。
Python MCP Server
仓库中已开始迁移一个 Python 版 MCP server,目录为 mcp_server/。当前已覆盖以下能力:
- 列出应用可用的
env/cluster - 对指定 key 做跨环境对比
- 导出指定
env/cluster的全部配置到.properties文件
推荐使用 uv 管理依赖和运行:
uv sync
uv run python -m mcp_server
安装后也可以直接使用发布包暴露的命令:
apollo-tool-mcp
也可以使用 MCP Inspector 调试:
uv run mcp dev mcp_server/server.py
认证信息可通过 tool 参数传入,或通过环境变量提供:
export APOLLO_ADMIN_URL=http://apollo-admin-service-url:8080
export APOLLO_USERNAME=your-username
export APOLLO_PASSWORD=your-password
开发和测试流程:
# 1. 安装运行时和测试依赖
uv sync --extra dev
# 2. 跑单元测试
uv run python -m unittest discover -s tests -v
# 3. 生成覆盖率报告,要求 >= 80%
uv run coverage run -m unittest discover -s tests
uv run coverage report -m
# 4. 本地启动 MCP server
uv run python -m mcp_server
发布流程:
# 1. 构建分发包
uv build
# 2. 检查产物
ls dist/
# 3. 发布到 PyPI
uv publish
如果先发测试仓库:
uv publish --publish-url https://test.pypi.org/legacy/
功能
- 动态获取所有环境(env)和 cluster 列表
- 遍历所有环境和 cluster,获取指定 key 的配置值
- 按值分组美化输出,展示每个值对应的环境/cluster 列表
- 支持命令行参数传递 Apollo 管理服务地址、应用 ID、认证 Token(Cookie)
- 支持并发请求,提升对比效率
构建
gradle clean build
使用方法
# 使脚本可执行
chmod +x apollodiff
# 运行程序(需传递认证信息)
./apollodiff -admin http://apollo-admin-service-url:8080 -appid your-app-id -u your-username -p your-password
参数说明
-admin或--admin-service: Apollo 管理服务地址(必填)-appid或--app-id: 应用 ID(必填)-token或--auth-token: 认证 Token(必填,作为 Cookie 头传递)
运行流程
- 程序会自动获取所有环境(env)列表。
- 对每个环境,自动获取所有 cluster 列表(过滤部分特殊 cluster)。
- 提示用户输入要检查的 key。
- 遍历所有环境和 cluster,获取该 key 的配置值。
- 按值分组输出结果,每组展示对应的环境/cluster。
输出示例
$ ./apollodiff -admin http://10.11.2.40:8080 -appid sample-appid -u bob -p bob-secret
enter the key you wanna check
[stdin sample] a.b
fetch env list : [DEV, FAT, UAT, PROD]
环境 DEV 下的clusters: [default, cluster1]
环境 FAT 下的clusters: [default, cluster2]
...
值: sampleValue1
- DEV/cluster1
- UAT/default
值: sampleValue2
- FAT/cluster2
如未找到指定 key,会输出:
在所有环境和cluster中未找到指定的key: a.b
依赖环境
- Java 17 或更高版本
- Gradle 8.0(使用包含的Gradle Wrapper即可,无需单独安装)
- 需具备访问 Apollo 管理服务的网络权限
注意事项
- 若环境或 cluster 获取失败,请检查服务地址和 Token 是否正确。
- 默认过滤部分特殊 cluster(如 default、test-xh 等)。
常见问题
- 若提示参数解析错误,请检查命令行参数是否齐全。
- 若提示无法获取环境/cluster,请确认网络和权限。
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file apollo_tool_mcp-0.1.0.tar.gz.
File metadata
- Download URL: apollo_tool_mcp-0.1.0.tar.gz
- Upload date:
- Size: 9.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
06c0ff1655130dfaa87e50890ea1e28881b892c4306d3252a997ca854a09e954
|
|
| MD5 |
03131d01c6d82c09f11296dab8b2ed0a
|
|
| BLAKE2b-256 |
ff14a557dd85e807c4a5803768ded3e745ef4493824720678b4ccbf40613a9df
|
File details
Details for the file apollo_tool_mcp-0.1.0-py3-none-any.whl.
File metadata
- Download URL: apollo_tool_mcp-0.1.0-py3-none-any.whl
- Upload date:
- Size: 8.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f6971df22306f31f6df978cb8160a32e5ce0e6744b47e8f8063a151c7699cf2a
|
|
| MD5 |
e5fa97f9db5f3c035e3397567a0a24bf
|
|
| BLAKE2b-256 |
39fb4a80256b648223cd9d083a50f835e22d07d3bb1d2b59c83e77c6fdb95bce
|