关于 ArgoCD MCP Server
ArgoCD MCP Server 将 AI 助手连接到 ArgoCD API,可通过自然语言请求管理应用并查看服务端信息。它涵盖应用生命周期操作,以及会话、设置、插件和版本查询。
主要功能
- 01列出并筛选应用
- 02查看应用详情
- 03创建、更新和删除应用
- 04按选项同步应用
- 05获取会话、设置、插件和版本信息
适用场景
- 01查找项目或命名空间中的应用
- 02检查应用配置
- 03创建或更新 ArgoCD 应用
- 04触发应用同步
MCP 相关
向 MCP 客户端提供 ArgoCD 会话、设置、插件、版本和应用管理工具,并通过令牌连接 ArgoCD API。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
ArgoCD MCP 服务
一个 MCP(Model Context Protocol)服务,可与 ArgoCD API 集成,让 AI 助手和大模型通过自然语言交互来管理 ArgoCD 应用和资源。
功能
- 身份验证与会话管理:
- 从 ArgoCD API 获取用户信息
- 使用 ArgoCD 进行基于令牌的身份验证
- 访问服务设置和配置
- 获取插件信息
- 获取版本信息
- 应用管理:
- 按项目、名称和命名空间列出并筛选应用
- 获取详细的应用信息
- 创建、更新和删除应用
- 使用可配置选项同步应用
- 强大的 API 客户端:
- URL 规范化和智能端点处理
- 全面的错误处理和详细的错误消息
- 可配置的超时和 SSL 验证
- 令牌安全保护和屏蔽
- 开发者体验:
- 使用 mypy 进行完整的静态类型检查
- 详细的文档和示例
- 基于环境变量的配置
快速开始
设置
# Clone the repository
git clone https://github.com/severity1/argocd-mcp.git
cd argocd-mcp
# Create virtual environment and activate it
uv venv
source .venv/bin/activate
# Install dependencies
uv pip install -e .
启动服务
服务通过环境变量进行配置。以下是可用的配置选项:
| 环境变量 | 说明 | 默认值 |
|---|---|---|
ARGOCD_TOKEN | ArgoCD API 令牌 | None |
ARGOCD_API_URL | ArgoCD API 端点 | https://argocd.example.com/api/v1 |
ARGOCD_VERIFY_SSL | 验证 SSL 证书 | true |
你可以通过以下几种方式启动服务:
# Using MCP dev tools (provides debugging tools)
export ARGOCD_TOKEN=YOUR_ARGOCD_TOKEN
mcp dev server.py
# Using MCP run command
export ARGOCD_TOKEN=YOUR_ARGOCD_TOKEN
mcp run server.py
# Standard method
export ARGOCD_TOKEN=YOUR_ARGOCD_TOKEN
uv run server.py
# Setting multiple environment variables
export ARGOCD_TOKEN=YOUR_ARGOCD_TOKEN
export ARGOCD_API_URL=https://your-argocd-server.com:9000/api/v1
export ARGOCD_VERIFY_SSL=false # Disable SSL verification for self-signed certs
uv run server.py
# Using a .env file
echo "ARGOCD_TOKEN=YOUR_ARGOCD_TOKEN
ARGOCD_API_URL=https://your-argocd-server.com:9000/api/v1
ARGOCD_VERIFY_SSL=false" > .env
uv run server.py
# Run in background
export ARGOCD_TOKEN=YOUR_ARGOCD_TOKEN
uv run server.py > server.log 2>&1 & echo $! > server.pid
通过环境变量提供令牌后,Claude 无需你在每条命令中指定令牌即可使用它。
连接 Claude
使用 Claude Code CLI
# Add the MCP server
claude mcp add argocd-mcp "uv run $(pwd)/server.py"
# With token
claude mcp add argocd-mcp -e ARGOCD_TOKEN=YOUR_ARGOCD_TOKEN -- "uv run $(pwd)/server.py"
# Verify it was added
claude mcp list
# For debugging, you can use MCP Inspector with 'mcp dev' command
使用 Claude Desktop
创建一个 claude_desktop_config.json 配置文件:
{
"mcpServers": {
"argocd-mcp": {
"command": "/path/to/uv",
"args": [
"--directory",
"/path/to/argocd-mcp",
"run",
"server.py"
],
"env": {
"ARGOCD_TOKEN": "your_argocd_token",
"ARGOCD_API_URL": "https://your-argocd-server.com/api/v1",
"ARGOCD_VERIFY_SSL": "true"
}
}
}
}
将路径和配置值替换为实际值:
- 使用 uv 可执行文件的完整路径(在 macOS/Linux 上使用
which uv查找,在 Windows 上使用where uv) - 设置正确的 argocd-mcp 安装目录路径
- 添加 ArgoCD API 令牌
- 根据需要配置其他环境变量
此配置会告知 Claude Desktop 如何使用你的特定环境设置自动启动 MCP 服务。
可用工具
会话工具
get_user_info:通过 api/v1/session/userinfo 获取当前用户的信息
设置工具
get_settings:获取 ArgoCD 服务设置,包括 UI、OIDC 和其他配置get_plugins:获取已配置的 ArgoCD 插件信息
版本工具
get_version:获取 API 服务的版本信息
应用管理工具
list_applications:获取所有应用,并支持筛选选项get_application_details:获取特定应用的详细信息create_application:创建新应用update_application:更新现有应用delete_application:删除应用sync_application:触发应用的同步操作
对话示例
查看用户信息
User: What's my user information in ArgoCD?
Claude: Let me retrieve your user information.
⏺ argocd-mcp:get_user_info (MCP)
⎿ {"loggedIn": true, "username": "devops-user", "iss": "argocd"}
You are logged in as 'devops-user'.
获取 ArgoCD 版本
User: What version of ArgoCD is running on the server?
Claude: Let me check the ArgoCD version information.
⏺ argocd-mcp:get_version (MCP)
⎿ {
"Version": "v2.9.3+5eaf684",
"BuildDate": "2023-09-15T14:25:11Z",
"GitCommit": "5eaf68452",
"GitTreeState": "clean",
"GoVersion": "go1.20.7",
"Compiler": "gc",
"Platform": "linux/amd64",
"KustomizeVersion": "v5.1.1",
"HelmVersion": "v3.12.3",
"KubectlVersion": "v1.27.4",
"JsonnetVersion": "v0.20.0"
}
You're running ArgoCD v2.9.3, built on September 15, 2023. It's running on Linux (amd64) with Go 1.20.7, and includes Kustomize v5.1.1 and Helm v3.12.3.
获取 ArgoCD 设置
User: Show me the ArgoCD server settings
Claude: Let me retrieve the ArgoCD server settings for you.
⏺ argocd-mcp:get_settings (MCP)
⎿ {
"clusterSettings": {
"appLabelKey": "argocd.argoproj.io/instance",
"controllerNamespace": "argocd",
"execEnabled": true,
"statusBadgeEnabled": true,
"uiBannerContent": "This is a development instance of ArgoCD",
"url": "https://argocd.example.com"
}
}
Here are the key settings for your ArgoCD server:
- URL: https://argocd.example.com
- Controller namespace: argocd
- Exec enabled: Yes
- Status badge enabled: Yes
- UI Banner: "This is a development instance of ArgoCD"
管理应用
User: What applications do I have in the "production" project?
Claude: Let me list your applications in the production project.
⏺ argocd-mcp:list_applications (MCP)
⎿ {
"items": [
{
"metadata": {
"name": "frontend-app",
},
"status": {
"sync": {"status": "Synced"},
"health": {"status": "Healthy"},
}
},
{
"metadata": {
"name": "api-service",
},
"status": {
"sync": {"status": "OutOfSync"},
"health": {"status": "Healthy"},
}
},
{
"metadata": {
"name": "database",
},
"status": {
"sync": {"status": "Synced"},
"health": {"status": "Degraded"},
}
}
]
}
You have 3 applications in the production project:
- frontend-app (Synced, Healthy)
- api-service (OutOfSync, Healthy)
- database (Synced, Degraded)
User: Sync the api-service application
Claude: I'll sync the api-service application for you.
⏺ argocd-mcp:sync_application (MCP)
⎿ {
"resourcesResult": {
"updated": ["Deployment/api-service"],
"hooks": []
},
"status": "Syncing"
}
Application sync initiated successfully. The sync operation is now in progress.
开发
要求
- Python 3.12+
- MCP(包含 FastMCP 和开发工具)
- uv 包管理器(推荐)或 pip
- ArgoCD API 令牌
类型检查
本项目使用 mypy 进行静态类型检查,以提升代码质量并及早发现与类型相关的错误:
# Install mypy
uv pip install mypy
# Run type checking
uv run -m mypy .
类型检查配置位于 pyproject.toml 和 mypy.ini 中。配置强制执行严格的类型规则,包括:
- 禁止未标注类型的定义
- 对返回 Any 类型发出警告
- 检查函数定义是否完整
- 支持命名空间包
- 按模块配置
项目结构
代码采用模块化结构组织:
argocd-mcp/
├── api/ # API client and communication
│ ├── __init__.py
│ └── client.py # HTTP client for ArgoCD API
├── models/ # Data models
│ ├── __init__.py
│ └── applications.py # Application data structures
├── tools/ # MCP tools implementation
│ ├── __init__.py
│ ├── session.py # Session tools (user info)
│ ├── applications.py # Application management tools
│ ├── settings.py # Server settings tools
│ └── version.py # Version information tools
├── utils/ # Utility functions
│ ├── __init__.py
├── server.py # Main server entry point
├── pyproject.toml # Project configuration and dependencies
└── mypy.ini # Mypy type checking configuration
扩展服务
添加新功能的步骤:
- 在
tools目录中相应的模块里添加新工具 - 在
server.py中注册新工具 - 遵循现有的参数验证和错误处理模式
- 更新 README.md 中的文档
- 为新功能添加测试
故障排除
如果遇到问题:
- 检查服务日志(默认启用信息级别日志)
- 请注意,
Processing request of type CallToolRequest是提示信息,不是错误 - 如果使用
mcp dev server.py,MCP Inspector 会自动在 http://localhost:5173 打开,以便进行调试 - 使用服务日志调试 API 调用和响应
- 对于自签名证书导致的 SSL 证书问题:
# Disable SSL verification
export ARGOCD_VERIFY_SSL=false
uv run server.py
- 检查是否已正确设置所有必需的环境变量:
# Show all current ArgoCD environment variables
env | grep ARGOCD
贡献
欢迎贡献!如果您想为本项目做出贡献,请提交 issue 或 pull request。
贡献时,请遵循以下指南:
- 确保所有代码都包含适当的类型提示
- 提交 PR 前运行 mypy 类型检查
- 为新功能添加测试
- 为任何新功能或更改更新文档
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。