DevOps工具API服务器

一个生产级的Model Context Protocol (MCP)服务器,提供160个跨20个服务的工具API,用于自动化DevOps端到端工作流程。

  • by MaripeddiSupraj
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 MaripeddiSupraj/devops-mcp-server

使用说明

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)    │
    └─────────────────────────────────────────────────────────────┘

请求生命周期:

  1. 代理发送 POST /tools/execute 和 tool_name 和 inputs
  2. ToolExecutor 根据工具的JSON模式验证输入
  3. 处理程序已从以下位置解析 ToolRegistry 并发出
  4. 处理程序调用集成(boto3、subprocess、httpx等)
  5. 结果包装在 {"status": "success"|"error", "data": ..., "error": ...}
  6. 执行记录到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"})

添加新工具

  1. 创建工具文件 在 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}
  1. 注册它 在 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连接被拒绝

kubectl cluster-info

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年。


许可证

麻省理工学院——见 许可证.