DevOps MCP服务器
MCP名称:io.github.maripeddispraj/deops-MCP-server
A. 生产级模型上下文协议(MCP)服务器 这暴露了 20项服务中的160个工具 --Terraform、GitHub、GitLab、AWS、Kubernetes、Helm、Azure、GCP、ArgoCD、HashiCorp Vault、PagerDuty、Datadog、Docker、Jenkins、Cloudflare、Ansible等——作为结构化JSON工具API,专为AI代理设计,实现端到端的DevOps工作流程自动化。
目录
这是什么?
此服务器实现 模型上下文协议 --一种允许AI代理通过HTTP或stdio发现和调用工具的标准。您无需将SDK调用硬编码到代理中,而是将其指向此服务器,它可以在20个平台上动态发现160个DevOps操作。
没有MCP:
Agent → custom boto3 code → AWS
Agent → custom subprocess → Terraform
Agent → custom SDK → Azure / GCP / K8s / Datadog / ...
使用MCP:
Agent → POST /tools/execute → MCP Server → any of 20 platforms
代理使用工具名称和JSON输入调用一个端点。服务器处理所有SDK复杂性、身份验证、验证、超时、审计日志记录和错误格式化。
建筑
┌────────────────────────────────────────────────────────────────────┐
│ AI Agent │
│ (Claude / LangGraph / AutoGen / custom) │
└────────────────────────┬───────────────────────────────────────────┘
│ POST /tools/execute OR stdio (MCP)
▼
┌────────────────────────────────────────────────────────────────────┐
│ FastAPI MCP Server │
│ │
│ GET /tools → ToolRegistry (list all 160 tools) │
│ POST /tools/execute → ToolExecutor (validate + run) │
│ GET /tools/{name} → ToolRegistry (describe one tool) │
│ GET /metrics → Prometheus metrics │
└──────────┬─────────────────────────────────────────────────────────┘
│
┌──────┴──────────────────────────────────────────────────────┐
│ Tool Handlers (20 services) │
│ terraform github gitlab aws kubernetes helm │
│ azure gcp argocd vault pagerduty datadog │
│ docker jenkins cloudflare ansible security finops │
└──────┬──────────────────────────────────────────────────────┘
│
┌──────┴──────────────────────────────────────────────────────┐
│ Integrations │
│ subprocess(tf/helm/docker/ansible/trivy/tfsec/infracost) │
│ boto3 PyGithub k8s-client azure-sdk google-cloud-sdk │
│ httpx(argocd/vault/pagerduty/datadog/gitlab/jenkins/cf) │
└─────────────────────────────────────────────────────────────┘
请求生命周期:
- 代理发送
POST /tools/execute 和 tool_name 和 inputs
ToolExecutor 根据工具的JSON模式验证输入
- 处理程序已从以下位置解析
ToolRegistry 并发出
- 处理程序调用集成(boto3、subprocess、httpx等)
- 结果包装在
{"status": "success"|"error", "data": ..., "error": ...}
- 执行记录到SQLite审计数据库+可选的Slack通知
项目结构
devops-mcp-server/
│
├── server/
│ ├── main.py # FastAPI app — all HTTP routes
│ ├── mcp_stdio.py # MCP stdio transport for Claude Desktop
│ ├── registry.py # Tool registration — build_registry()
│ ├── executor.py # ToolExecutor — validate + dispatch
│ └── schemas.py # Pydantic request/response models
│
├── core/
│ ├── config.py # pydantic-settings — all env vars
│ ├── auth.py # API key middleware + credential helpers
│ ├── logger.py # structlog structured logging
│ └── audit.py # SQLite audit trail (WAL mode)
│
├── tools/
│ ├── terraform/ # plan, apply, destroy, init, validate, output, state_list
│ ├── github/ # create_pr, get_repo, list_issues, trigger_workflow,
│ │ # create_release, create_issue, merge_pr, get_workflow_run
│ ├── gitlab/ # list_projects, list_mrs, create_mr, merge_mr,
│ │ # list_pipelines, trigger_pipeline, list_issues
│ ├── aws/ # ec2, s3, lambda, rds, ec2_lifecycle, s3_objects,
│ │ # cloudwatch, secrets, networking, iam, rds_crud,
│ │ # ecs, cost, ecr, alb, sqs, sns, dynamodb
│ ├── kubernetes/ # deploy, get_pods, get_logs, get_events, scale,
│ │ # rollout_restart, rollout_status, get_deployments,
│ │ # get_services, get_nodes, delete_pod,
│ │ # namespace, configmap, secret, jobs, ingress
│ ├── helm/ # list, install, upgrade, rollback, status
│ ├── azure/ # rg_list, vm_list, vm_start, vm_stop,
│ │ # aks_list, acr_list, kv_get, kv_set
│ ├── gcp/ # instances, buckets, gke, cloudrun, cloudsql,
│ │ # cloudbuild, secret_manager
│ ├── argocd/ # list, status, sync, rollback
│ ├── vault/ # read, write, list
│ ├── pagerduty/ # list_incidents, acknowledge, resolve, create
│ ├── datadog/ # monitors, metrics, events, dashboards, incidents, hosts
│ ├── docker/ # list_images, pull, build, push, inspect,
│ │ # list_containers, logs, tag
│ ├── jenkins/ # list_jobs, get_job, trigger_build, get_build,
│ │ # get_build_log, list_builds
│ ├── cloudflare/ # list_zones, dns_records, purge_cache, waf_rules
│ ├── ansible/ # run_playbook, list_hosts, ping, run_module
│ ├── security/ # trivy_scan_image, trivy_scan_filesystem, tfsec_scan
│ └── finops/ # azure_cost, gcp_billing, infracost_estimate
│
├── integrations/
│ ├── terraform_runner.py # Terraform subprocess wrapper
│ ├── helm_runner.py # Helm subprocess wrapper
│ ├── docker_runner.py # Docker CLI subprocess wrapper
│ ├── ansible_runner.py # Ansible CLI subprocess wrapper
│ ├── scanner_runner.py # Trivy + tfsec subprocess wrappers
│ ├── aws_client.py # boto3 client classes (15 services)
│ ├── github_client.py # PyGithub wrapper
│ ├── gitlab_client.py # GitLab REST API v4 (httpx)
│ ├── k8s_client.py # kubernetes-client/python wrapper
│ ├── azure_client.py # Azure SDK client classes + Cost Management
│ ├── gcp_client.py # GCP SDK client classes + Secret Manager + Billing
│ ├── argocd_client.py # ArgoCD REST API (httpx)
│ ├── vault_client.py # Vault KV v2 REST API (httpx)
│ ├── pagerduty_client.py # PagerDuty REST API v2 (httpx)
│ ├── datadog_client.py # Datadog REST API v1/v2 (httpx)
│ ├── jenkins_client.py # Jenkins REST API (httpx)
│ └── cloudflare_client.py # Cloudflare REST API v4 (httpx)
│
├── tests/
├── Dockerfile
├── docker-compose.yml
├── pyproject.toml # PyPI packaging (v4.0.0)
├── requirements.txt
└── .env.example
快速开始
1.克隆并安装
git clone https://github.com/MaripeddiSupraj/devops-mcp-server.git
cd devops-mcp-server
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
2.配置环境
cp .env.example .env
# Fill in credentials for the services you want to use
3.启动服务器
uvicorn server.main:app --reload
4.验证160个工具是否已注册
curl http://localhost:8000/tools | python -m json.tool | grep '"count"'
5.执行工具
curl -X POST http://localhost:8000/tools/execute \
-H "Content-Type: application/json" \
-d '{"tool_name": "aws_list_ec2_instances", "inputs": {}}'
配置
所有设置均从环境变量中读取(或 .env 文件)。只配置您使用的服务——未配置的服务在调用时将返回一个明确的错误。
核心服务器
| 变量 |
默认值 |
描述 |
SERVER_HOST |
0.0.0.0 |
绑定主机 |
SERVER_PORT |
8000 |
绑定端口 |
LOG_LEVEL |
INFO |
日志记录级别 |
DRY_RUN |
false |
阻止所有变异操作 |
MCP_API_KEY |
(无) |
请求身份验证的API密钥 |
ENVIRONMENT |
development |
运行时标签 |
CORS_ORIGINS |
* |
逗号分隔的允许CORS源 |
AUDIT_DB_PATH |
audit.db |
SQLite审核日志路径 |
TOOL_TIMEOUT_SECONDS |
120 |
默认每个工具超时 |
GitHub
| 变量 |
描述 |
GITHUB_TOKEN |
具有回购范围的个人访问令牌 |
GitLab公司
| 变量 |
默认值 |
描述 |
GITLAB_TOKEN |
(无) |
GitLab个人访问令牌 |
GITLAB_URL |
https://gitlab.com |
GitLab实例URL(支持自托管) |
亚马逊云服务
| 变量 |
默认值 |
描述 |
AWS_ACCESS_KEY_ID |
(无) |
AWS访问密钥 |
AWS_SECRET_ACCESS_KEY |
(无) |
AWS密钥 |
AWS_REGION |
us-east-1 |
默认区域 |
Kubernetes
| 变量 |
描述 |
KUBECONFIG |
kubeconfig文件的路径 |
地形
| 变量 |
默认值 |
描述 |
TERRAFORM_BINARY |
terraform |
地形二进制文件路径 |
TERRAFORM_ALLOWED_BASE_DIR |
/tmp/terraform |
所有Terraform路径的沙盒根 |
TERRAFORM_TIMEOUT_SECONDS |
600 |
每个命令的最大秒数 |
舵
| 变量 |
默认值 |
描述 |
HELM_BINARY |
helm |
掌舵二进制路径 |
HELM_TIMEOUT_SECONDS |
300 |
每个命令的最大秒数 |
Azure
| 变量 |
描述 |
AZURE_SUBSCRIPTION_ID |
Azure订阅ID |
AZURE_TENANT_ID |
Azure租户ID |
AZURE_CLIENT_ID |
服务主体客户端ID |
AZURE_CLIENT_SECRET |
服务主体-客户端机密 |
谷歌云平台
| 变量 |
描述 |
GCP_PROJECT_ID |
GCP项目ID |
GOOGLE_APPLICATION_CREDENTIALS |
服务帐户JSON密钥的路径 |
ArgoCD
| 变量 |
默认值 |
描述 |
ARGOCD_SERVER_URL |
(无) |
argocd服务器URL |
ARGOCD_AUTH_TOKEN |
(无) |
argocd API令牌 |
ARGOCD_INSECURE |
false |
跳过TLS验证 |
HashiCorp 保险库
| 变量 |
默认值 |
描述 |
VAULT_ADDR |
(无) |
保险库服务器地址 |
VAULT_TOKEN |
(无) |
保险库令牌 |
VAULT_NAMESPACE |
(无) |
Vault命名空间(企业) |
VAULT_MOUNT |
secret |
KV v2安装路径 |
PagerDuty
| 变量 |
描述 |
PAGERDUTY_API_KEY |
PagerDuty REST API v2密钥 |
PAGERDUTY_EMAIL |
通过电子邮件创建事件 |
PAGERDUTY_SERVICE_ID |
新事件的默认服务ID |
数据狗
| 变量 |
默认值 |
描述 |
DATADOG_API_KEY |
(无) |
datadog API密钥 |
DATADOG_APP_KEY |
(无) |
Datadog应用程序密钥 |
DATADOG_SITE |
datadoghq.com |
数据狗网站(datadoghq.eu 欧盟) |
码头工人
| 变量 |
默认值 |
描述 |
DOCKER_BINARY |
docker |
docker二进制文件的路径 |
DOCKER_TIMEOUT_SECONDS |
300 |
每个命令的最大秒数 |
詹金斯
| 变量 |
描述 |
JENKINS_URL |
Jenkins服务器URL |
JENKINS_USER |
Jenkins用户名 |
JENKINS_TOKEN |
Jenkins API令牌 |
云耀
| 变量 |
描述 |
CLOUDFLARE_API_TOKEN |
Cloudflare API代币 |
CLOUDFLARE_ACCOUNT_ID |
Cloudflare帐户ID |
安塞波
| 变量 |
默认值 |
描述 |
ANSIBLE_BINARY |
ansible |
可转换二进制文件的路径 |
ANSIBLE_PLAYBOOK_BINARY |
ansible-playbook |
可转换剧本二进制文件的路径 |
ANSIBLE_TIMEOUT_SECONDS |
600 |
每个命令的最大秒数 |
安全扫描仪
| 变量 |
默认值 |
描述 |
TRIVY_BINARY |
trivy |
通往trivy二进制文件的路径 |
TFSEC_BINARY |
tfsec |
tfsec二进制文件的路径 |
SCANNER_TIMEOUT_SECONDS |
120 |
每次扫描的最大秒数 |
基础设施成本
| 变量 |
描述 |
INFRACOST_API_KEY |
基础设施成本API关键 |
INFRACOST_BINARY |
基础设施成本二进制文件的路径(默认值: infracost) |
松弛(可选)
| 变量 |
描述 |
SLACK_WEBHOOK_URL |
用于工具通知的传入webhook |
运行服务器
HTTP模式
uvicorn server.main:app --host 0.0.0.0 --port 8000
stdio模式(克劳德桌面)
python -m server.mcp_stdio
# or after pip install:
devops-mcp-server
可用端点
| 方法 |
路径 |
描述 |
GET |
/tools |
列出所有160个工具 |
GET |
/tools?tag=aws |
按标签筛选工具 |
GET |
/tools/{name} |
描述一个工具 |
POST |
/tools/execute |
执行工具 |
POST |
/tools/batch |
执行多个工具 |
GET |
/health |
健康检查 |
GET |
/metrics |
普罗米修斯指标 |
Claude桌面集成
添加 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"devops": {
"command": "devops-mcp-server",
"env": {
"GITHUB_TOKEN": "ghp_...",
"GITLAB_TOKEN": "glpat-...",
"AWS_ACCESS_KEY_ID": "AKIA...",
"AWS_SECRET_ACCESS_KEY": "...",
"AWS_REGION": "us-east-1",
"KUBECONFIG": "/home/user/.kube/config",
"AZURE_SUBSCRIPTION_ID": "...",
"AZURE_TENANT_ID": "...",
"AZURE_CLIENT_ID": "...",
"AZURE_CLIENT_SECRET": "...",
"GCP_PROJECT_ID": "my-project",
"GOOGLE_APPLICATION_CREDENTIALS": "/home/user/gcp-key.json",
"DATADOG_API_KEY": "...",
"DATADOG_APP_KEY": "...",
"JENKINS_URL": "https://jenkins.example.com",
"JENKINS_USER": "admin",
"JENKINS_TOKEN": "...",
"CLOUDFLARE_API_TOKEN": "...",
"ARGOCD_SERVER_URL": "https://argocd.example.com",
"ARGOCD_AUTH_TOKEN": "...",
"VAULT_ADDR": "https://vault.example.com",
"VAULT_TOKEN": "...",
"PAGERDUTY_API_KEY": "..."
}
}
}
}
码头工人
docker build -t devops-mcp-server .
docker run --env-file .env -p 8000:8000 devops-mcp-server
# or
docker-compose up
工具参考
地形工具
| 工具 |
说明 |
terraform_plan |
快跑 terraform plan --返回计划输出 |
terraform_apply |
快跑 terraform apply -auto-approve |
terraform_destroy |
快跑 terraform destroy -auto-approve (破坏性) |
terraform_init |
快跑 terraform init 初始化提供程序 |
terraform_validate |
验证配置语法 |
terraform_output |
以JSON格式获取输出值 |
terraform_state_list |
列出所有托管资源 |
GitHub工具
| 工具 |
说明 |
github_create_pull_request |
创建pull请求 |
github_get_repo |
获取存储库元数据 |
github_list_issues |
列出未决问题 |
github_trigger_workflow |
触发工作流调度事件 |
github_create_release |
创建标记的发布 |
github_create_issue |
创建新问题 |
github_merge_pull_request |
合并打开的pull请求 |
github_get_workflow_run |
获取工作流运行状态 |
必需的环境变量: GITHUB_TOKEN
GitLab工具
| 工具 |
说明 |
gitlab_list_projects |
列出可访问的项目 |
gitlab_list_merge_requests |
按州列出MR(打开/合并/关闭) |
gitlab_create_merge_request |
创建合并请求 |
gitlab_merge_mr |
合并打开的MR |
gitlab_list_pipelines |
列出CI/CD管道 |
gitlab_trigger_pipeline |
在ref上触发管道 |
gitlab_list_issues |
列出项目问题 |
必需的环境变量: GITLAB_TOKEN, GITLAB_URL
AWS工具
EC2
| 工具 |
说明 |
aws_describe_ec2_instance |
描述EC2实例 |
aws_list_ec2_instances |
列出EC2实例 |
aws_stop_ec2_instance |
停止实例 |
aws_start_ec2_instance |
启动实例 |
aws_terminate_ec2_instance |
终止实例(破坏性) |
第3页
| 工具 |
说明 |
aws_list_s3_buckets |
列出所有S3存储桶 |
aws_create_s3_bucket |
创建一个bucket |
aws_list_s3_objects |
使用前缀过滤器列出对象 |
aws_upload_s3_object |
将文本内容上传到对象 |
拉姆达
| 工具 |
说明 |
aws_list_lambda_functions |
列出Lambda函数 |
aws_invoke_lambda |
同步调用Lambda |
关系型数据库服务
| 工具 |
说明 |
aws_list_rds_instances |
列出RDS实例 |
aws_rds_create_instance |
创建RDS实例 |
aws_rds_create_snapshot |
创建快照 |
aws_rds_restore_from_snapshot |
从快照还原 |
云监控
| 工具 |
说明 |
aws_cloudwatch_get_metrics |
获取度量统计数据 |
aws_cloudwatch_list_alarms |
列出警报 |
aws_cloudwatch_list_log_groups |
列出日志组 |
aws_cloudwatch_query_logs |
运行Logs Insights查询 |
保密经理和SSM
| 工具 |
说明 |
aws_secrets_get |
获取秘密值 |
aws_secrets_create |
创建一个秘密 |
aws_ssm_get_parameter |
获取SSM参数 |
aws_ssm_put_parameter |
输入SSM参数 |
网络
| 工具 |
说明 |
aws_list_vpcs |
列出VPC |
aws_list_security_groups |
列出安全组 |
aws_list_route53_zones |
列出53号公路托管区域 |
身份和访问管理
| 工具 |
说明 |
aws_iam_list_roles |
列出IAM角色 |
aws_iam_list_policies |
列出客户管理的政策 |
aws_iam_simulate_policy |
模拟政策评估 |
弹性计算服务
| 工具 |
说明 |
aws_ecs_list_clusters |
列出ECS集群 |
aws_ecs_list_services |
列出群集中的服务 |
aws_ecs_list_tasks |
列出正在运行的任务 |
aws_ecs_deploy_service |
强制进行新的部署 |
ECR
| 工具 |
说明 |
aws_ecr_list_repositories |
列出ECR存储库 |
aws_ecr_list_images |
在存储库中列出图像 |
应用负载均衡器
| 工具 |
说明 |
aws_alb_list |
列出负载平衡器 |
aws_alb_list_target_groups |
列出目标群体 |
简单队列服务
| 工具 |
说明 |
aws_sqs_list_queues |
列出SQS队列 |
aws_sqs_send_message |
向队列发送消息 |
aws_sqs_get_queue_attributes |
获取队列深度和属性 |
aws_sqs_purge_queue |
清除所有消息(破坏性) |
社交网络服务
| 工具 |
说明 |
aws_sns_list_topics |
列出社交网络话题 |
aws_sns_publish |
向主题发布消息 |
aws_sns_list_subscriptions |
列出订阅 |
DynamoDB
| 工具 |
说明 |
aws_dynamodb_list_tables |
列出DynamoDB表 |
aws_dynamodb_describe_table |
描述一张桌子 |
aws_dynamodb_get_item |
按主键获取项目 |
aws_dynamodb_put_item |
创建或替换项目 |
成本探索者
| 工具 |
说明 |
aws_cost_by_service |
按服务获取成本明细 |
aws_cost_monthly_total |
获取每月总支出 |
必需的环境变量: AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGION
Kubernetes工具
| 工具 |
说明 |
k8s_deploy |
部署或更新部署映像 |
k8s_get_pods |
在命名空间中列出Pod |
k8s_get_logs |
获取pod容器日志 |
k8s_get_events |
获取命名空间事件 |
k8s_scale |
扩展部署 |
k8s_rollout_restart |
滚动重新启动部署 |
k8s_rollout_status |
检查卷展状态 |
k8s_get_deployments |
列出部署 |
k8s_get_services |
列出服务 |
k8s_get_nodes |
列出群集节点 |
k8s_delete_pod |
删除pod |
kubernetes_list_namespaces |
列出命名空间 |
kubernetes_create_namespace |
创建命名空间 |
kubernetes_get_configmap |
获取配置映射 |
kubernetes_apply_configmap |
创建或更新ConfigMap |
kubernetes_list_secrets |
列出秘密名称(仅密钥) |
kubernetes_list_jobs |
列出工作 |
kubernetes_list_cronjobs |
列出CronJobs |
kubernetes_list_ingresses |
列出Ingress资源 |
必需的环境变量: KUBECONFIG
Helm工具
| 工具 |
说明 |
helm_list |
列出Helm版本 |
helm_install |
安装图表 |
helm_upgrade |
升级版本 |
helm_rollback |
回滚到以前的版本 |
helm_status |
获取发布状态 |
必需的环境变量: HELM_BINARY, KUBECONFIG
Azure工具
| 工具 |
说明 |
azure_list_resource_groups |
列出资源组 |
azure_list_vms |
列出资源组中的虚拟机 |
azure_start_vm |
启动虚拟机 |
azure_stop_vm |
取消分配虚拟机 |
azure_aks_list_clusters |
列出AKS集群 |
azure_list_acr_registries |
列出容器注册表 |
azure_keyvault_get_secret |
获取密钥库秘密 |
azure_keyvault_set_secret |
设置密钥库秘密 |
必需的环境变量: AZURE_SUBSCRIPTION_ID, AZURE_TENANT_ID, AZURE_CLIENT_ID, AZURE_CLIENT_SECRET
GCP工具
| 工具 |
说明 |
gcp_list_instances |
列出计算引擎实例 |
gcp_list_buckets |
列出云存储桶 |
gcp_list_gke_clusters |
列出GKE集群 |
gcp_cloudrun_list_services |
列出云运行服务 |
gcp_cloudsql_list_instances |
列出云SQL实例 |
gcp_cloudbuild_list_builds |
列出最近的Cloud Build版本 |
gcp_cloudbuild_trigger |
触发云构建 |
必需的环境变量: GCP_PROJECT_ID, GOOGLE_APPLICATION_CREDENTIALS
ArgoCD工具
| 工具 |
说明 |
argocd_list_apps |
列出具有同步状态的应用程序 |
argocd_get_app |
获取详细的应用程序状态 |
argocd_sync_app |
触发同步 |
argocd_rollback_app |
回滚到以前的版本 |
必需的环境变量: ARGOCD_SERVER_URL, ARGOCD_AUTH_TOKEN
HashiCorp保险库工具
| 工具 |
说明 |
vault_read_secret |
读取KV v2密钥 |
vault_write_secret |
写入KV v2 |
vault_list_secrets |
列出路径上的键 |
必需的环境变量: VAULT_ADDR, VAULT_TOKEN
PagerDuty工具
| 工具 |
说明 |
pagerduty_list_incidents |
按状态列出事件 |
pagerduty_acknowledge_incident |
承认事件 |
pagerduty_resolve_incident |
解决事件 |
pagerduty_create_incident |
创建新事件 |
必需的环境变量: PAGERDUTY_API_KEY, PAGERDUTY_EMAIL
Datadog工具
| 工具 |
说明 |
datadog_list_monitors |
列出当前状态的监视器 |
datadog_mute_monitor |
将显示器静音 |
datadog_unmute_monitor |
取消显示器静音 |
datadog_query_metrics |
查询时间序列指标 |
datadog_list_events |
从事件流中列出事件 |
datadog_create_event |
发布自定义事件(部署等) |
datadog_list_dashboards |
列出仪表板 |
datadog_list_incidents |
列出活动事件 |
datadog_list_hosts |
列出报告主机 |
必需的环境变量: DATADOG_API_KEY, DATADOG_APP_KEY
Docker工具
| 工具 |
说明 |
docker_list_images |
列出本地Docker镜像 |
docker_pull |
从注册表中提取图像 |
docker_build |
从Dockerfile构建映像 |
docker_push |
将图像推送到注册表 |
docker_inspect |
检查图像元数据 |
docker_list_containers |
列出正在运行(或所有)的容器 |
docker_logs |
获取容器日志输出 |
docker_tag |
用新名称标记图像 |
必修的: docker PATH上的二进制文件
Jenkins工具
| 工具 |
说明 |
jenkins_list_jobs |
列出所有具有状态的作业 |
jenkins_get_job |
获取作业详细信息并建立历史记录 |
jenkins_trigger_build |
触发构建(带可选参数) |
jenkins_get_build |
获取构建结果和持续时间 |
jenkins_get_build_log |
获取构建的控制台输出 |
jenkins_list_builds |
列出作业的最新版本 |
必需的环境变量: JENKINS_URL, JENKINS_USER, JENKINS_TOKEN
Cloudflare工具
| 工具 |
说明 |
cloudflare_list_zones |
列出区域(域) |
cloudflare_list_dns_records |
列出区域中的DNS记录 |
cloudflare_create_dns_record |
创建DNS记录 |
cloudflare_delete_dns_record |
删除DNS记录 |
cloudflare_purge_cache |
清除区域缓存(所有或特定URL) |
cloudflare_list_waf_rules |
列出WAF防火墙规则 |
必需的环境变量: CLOUDFLARE_API_TOKEN
Ansible工具
| 工具 |
说明 |
ansible_run_playbook |
运行Ansible剧本 |
ansible_list_hosts |
列出与模式匹配的主机 |
ansible_ping |
Ping主机以验证连接 |
ansible_run_module |
运行一个特殊的Ansible模块 |
必修的: ansible 和 ansible-playbook PATH上的二进制文件
安全扫描工具
| 工具 |
说明 |
trivy_scan_image |
扫描Docker镜像以查找CVE |
trivy_scan_filesystem |
扫描目录以查找依赖漏洞 |
tfsec_scan |
扫描Terraform代码以查找配置错误 |
必修的: trivy 和 tfsec PATH上的二进制文件
GCP密钥管理器工具
| 工具 |
说明 |
gcp_secret_manager_list |
列出秘密(仅限姓名) |
gcp_secret_manager_get |
通过ID获取秘密值 |
gcp_secret_manager_create |
创建新秘密 |
必需的环境变量: GCP_PROJECT_ID, GOOGLE_APPLICATION_CREDENTIALS
多云FinOps工具
| 工具 |
说明 |
azure_cost_by_service |
按服务划分的Azure支出明细 |
gcp_billing_monthly_spend |
通过BigQuery账单导出GCP每月支出 |
infracost_estimate |
使用基础设施成本估算地形规划成本 |
工具摘要
| 服务 |
工具 |
标签 |
| 地形 |
7 |
terraform, iac |
| GitHub |
8 |
github, scm |
| GitLab |
7 |
gitlab, scm, ci |
| AWS EC2 |
5 |
aws, ec2, compute |
| AWS S3 |
4 |
aws, s3, storage |
| AWS Lambda |
2 |
aws, lambda, serverless |
| AWS RDS |
4 |
aws, rds, database |
| AWS云观察 |
4 |
aws, cloudwatch, observability |
| AWS机密/SSM |
4 |
aws, secrets, ssm |
| AWS网络 |
3 |
aws, networking |
| AWS IAM |
3 |
aws, iam, security |
| AWS ECS |
4 |
aws, ecs, compute |
| AWS ECR |
2 |
aws, ecr, containers |
| AWS ALB |
2 |
aws, networking, alb |
| AWS SQS |
4 |
aws, sqs, messaging |
| AWS社交网络 |
3 |
aws, sns, messaging |
| AWS DynamoDB |
4 |
aws, dynamodb, database |
| AWS成本资源管理器 |
2 |
aws, cost, finops |
| 库贝内特斯 |
19 |
kubernetes, k8s |
| 赫尔姆 |
5 |
helm, kubernetes |
| Azure |
8 |
azure, multicloud |
| GCP |
7 |
gcp, multicloud |
| GCP密钥管理器 |
3 |
gcp, secrets |
| ArgoCD |
4 |
argocd, gitops |
| HashiCorp保险库 |
3 |
vault, secrets |
| 页码 |
4 |
pagerduty, incident |
| 数据狗 |
9 |
datadog, observability |
| Docker |
8 |
docker, containers |
| 詹金斯 |
6 |
jenkins, ci |
| Cloudflare |
6 |
cloudflare, dns |
| 合理 |
4 |
ansible, automation |
| 安全扫描 |
3 |
security, trivy, tfsec |
| 多云金融运营 |
3 |
finops, cost |
| 总计 |
160 |
|
示例工作流程
事件响应(完整的端到端)
# 1. Get alerted
incidents = execute_tool("pagerduty_list_incidents", {"status": "triggered"})
execute_tool("pagerduty_acknowledge_incident", {"incident_id": "P1234AB"})
# 2. Check Datadog — what's firing?
execute_tool("datadog_list_monitors", {"status": "Alert"})
execute_tool("datadog_query_metrics", {"query": "avg:system.cpu.user{env:prod}", "minutes": 30})
# 3. Pull CloudWatch logs
execute_tool("aws_cloudwatch_query_logs", {
"log_group": "/aws/ecs/api",
"query": "fields @message | filter @message like /ERROR/ | limit 20",
"minutes": 15
})
# 4. Check K8s pods
execute_tool("k8s_get_pods", {"namespace": "production"})
# 5. Rolling restart to clear bad state
execute_tool("k8s_rollout_restart", {"deployment": "api", "namespace": "production"})
# 6. Mark deployment event in Datadog
execute_tool("datadog_create_event", {
"title": "Rollout restart — api", "text": "Auto-restarted by AI agent",
"tags": ["env:prod", "service:api"]
})
# 7. Resolve
execute_tool("pagerduty_resolve_incident", {"incident_id": "P1234AB"})
完整的CI/CD发布管道
# 1. Trigger Jenkins build
execute_tool("jenkins_trigger_build", {"job_name": "api-build", "params": {"VERSION": "v2.1.0"}})
# 2. Watch build log
execute_tool("jenkins_get_build_log", {"job_name": "api-build", "build_number": 42})
# 3. Scan image for CVEs before shipping
execute_tool("trivy_scan_image", {"image": "myrepo/api:v2.1.0", "severity": "HIGH,CRITICAL"})
# 4. Push to ECR
execute_tool("docker_push", {"image": "123456789.dkr.ecr.us-east-1.amazonaws.com/api:v2.1.0"})
# 5. Scan Terraform before apply
execute_tool("tfsec_scan", {"path": "/infra/prod"})
execute_tool("infracost_estimate", {"path": "/infra/prod"})
execute_tool("terraform_apply", {"working_dir": "/infra/prod"})
# 6. Deploy via Helm
execute_tool("helm_upgrade", {
"release": "api", "chart": "myrepo/api",
"namespace": "production", "values": {"image.tag": "v2.1.0"}
})
# 7. Sync ArgoCD
execute_tool("argocd_sync_app", {"app_name": "api-production"})
# 8. Create GitHub release
execute_tool("github_create_release", {
"owner": "my-org", "repo": "api", "tag": "v2.1.0", "name": "v2.1.0"
})
# 9. Purge Cloudflare cache
execute_tool("cloudflare_purge_cache", {"zone_id": "abc123"})
多云成本审查
# AWS
execute_tool("aws_cost_by_service", {"start_date": "2026-04-01", "end_date": "2026-04-22"})
# Azure
execute_tool("azure_cost_by_service", {"start_date": "2026-04-01", "end_date": "2026-04-22"})
# GCP
execute_tool("gcp_billing_monthly_spend", {"dataset": "billing", "table": "gcp_billing_export_v1_XXXX"})
# Estimate next Terraform change
execute_tool("infracost_estimate", {"path": "/infra/aws"})
添加新工具
- 创建工具文件 在
tools/<service>/my_tool.py:
TOOL_NAME = "my_service_my_action"
TOOL_DESCRIPTION = "One-line description for AI agents."
TOOL_INPUT_SCHEMA = {
"type": "object",
"properties": {
"param": {"type": "string", "description": "..."},
},
"required": ["param"],
"additionalProperties": False,
}
def handler(param: str):
return {"result": param}
- 注册它 在
server/registry.py:
from tools.my_service import my_tool
registry.register(ToolEntry(
name=my_tool.TOOL_NAME,
description=my_tool.TOOL_DESCRIPTION,
input_schema=my_tool.TOOL_INPUT_SCHEMA,
handler=my_tool.handler,
tags=["my_service"],
))
无需更改其他文件。
运行测试
pip install pytest pytest-asyncio pytest-mock
pytest tests/ -v
# 152 tests, all pass
安全模型
- API密钥验证:设置
MCP_API_KEY --所有请求都需要 Authorization: Bearer <key> 或 X-API-Key: <key>.
- 地形沙盒:所有路径均已验证
TERRAFORM_ALLOWED_BASE_DIR。路径遍历被阻止。
- 无外壳=真:所有子进程调用(Terraform、Helm、Docker、Ansible、Trivy、tfsec、Infrascost)都使用参数列表。
- K8s的秘密:
kubernetes_list_secrets 仅返回键名——从未返回过值。
- 审核日志:每个工具执行都会记录到SQLite中(名称、输入哈希、状态、持续时间)。
- DRY_RUN模式:设置
DRY_RUN=true 阻止所有变异操作。
- 破坏性标签:工具已标记
destructive 如果需要,可以在代理中添加确认逻辑。
- 跨域资源共享:设置
CORS_ORIGINS 明确生产起源。
故障排除
检查已注册的工具数量
curl http://localhost:8000/tools | python -m json.tool | grep '"count"'
# Should be 160
AWS身份验证错误
aws sts get-caller-identity
Kubernetes连接被拒绝
Azure身份验证错误
验证所有四个环境变量: AZURE_SUBSCRIPTION_ID, AZURE_TENANT_ID, AZURE_CLIENT_ID, AZURE_CLIENT_SECRET.
Datadog 403错误
确认两者 DATADOG_API_KEY 和 DATADOG_APP_KEY 已设置-读取操作需要应用程序密钥。
Jenkins 401错误
使用API令牌,而不是您的密码。生成一个 <jenkins-url>/user/<username>/configure.
Cloudflare API错误
确保您的API令牌具有该区域的正确权限(DNS编辑、缓存清除、防火墙规则读取)。
找不到Docker/Ansible/Trivy/tfsec
这些使用CLI子流程调用。确保二进制文件已安装并在您的 PATH:
which docker ansible trivy tfsec infracost helm terraform
地形超时
增加 TERRAFORM_TIMEOUT_SECONDS (默认值为600)。大型州档案可能需要900-1800年。
许可证
麻省理工学院——见 许可证.