DevOps MCP服务器
](https://badge.fury.io/py/devops-mcps)  
A. FastMCP-基于MCP服务器,提供一套DevOps工具和集成。
此服务器以只读方式运行,在不修改系统的情况下检索数据进行分析和显示。它的设计考虑了DevOps环境的安全性。
认证 MCP审查
特性
DevOps MCP服务器与各种基本的DevOps平台集成:
GitHub集成
- 库管理:搜索和查看存储库详细信息。
- 文件访问:从存储库检索文件内容。
- 问题追踪:管理和跟踪问题。
- 代码搜索:执行有针对性的代码搜索。
- 提交历史记录:查看分支的提交历史记录。
- 公共和企业支持:自动检测并连接到公共GitHub和GitHub Enterprise实例(可通过以下方式配置
GITHUB_API_URL).
Jenkins集成
- 工作管理:列出并管理Jenkins作业。
- 生成日志:检索和分析构建日志。
- 视图管理:访问和管理Jenkins视图。
- 构建参数:检查用于构建的参数。
- 故障监测:识别并监控最近失败的构建。
人工集成
- 存储库浏览:列出Artifactory存储库中的项目(文件和目录)。
- 文物搜索:使用工件查询语言(AQL)在多个存储库中按名称或路径搜索工件。
- 物品详情:检索特定文件和目录的元数据和属性。
- 认证:支持基于令牌和用户名/密码的身份验证。
安装
使用pip安装软件包:
pip install devops-mcps用法
直接运行MCP服务器:
devops-mcps传输配置
服务器支持两种通信传输类型:
stdio(默认):标准输入/输出。stream_http:HTTP流传输。
本地使用:
# Default stdio transport
devops-mcps
# stream_http transport (runs HTTP server on 127.0.0.1:3721/mcp by default)
devops-mcps --transport stream_httpUVX使用:
如果使用 UVX,首先安装工具:
uvx install然后运行:
# Default stdio transport
uvx run devops-mcps
# stream_http transport
uvx run devops-mcps-stream-http使用Make
使用提供的 Makefile 简化常见任务:
# Discover available targets
make help
# Install dev dependencies (auto-detects uv, falls back to pip)
make install
# One-shot dev setup: install, format, and lint
make dev
# Run MCP server (stdio)
make run
# Run MCP server (stream_http) with optional mount path
make run-http MOUNT_PATH=/mcp
# Test and coverage
make test
make coverage
# Build and publish the package
make build
make publish
# Docker workflows
make docker-build
make docker-run
make docker-push REGISTRY=your.registry.example配置
使用环境变量配置服务器:
必修的:
# GitHub
export GITHUB_PERSONAL_ACCESS_TOKEN="your_github_token"
# Optional: For GitHub Enterprise, set your API endpoint
# export GITHUB_API_URL="https://github.mycompany.com"
# Jenkins
export JENKINS_URL="your_jenkins_url"
export JENKINS_USER="your_jenkins_username"
export JENKINS_TOKEN="your_jenkins_api_token_or_password"
# Artifactory
export ARTIFACTORY_URL="https://your-artifactory-instance.example.com"
# Choose ONE authentication method:
export ARTIFACTORY_IDENTITY_TOKEN="your_artifactory_identity_token"
# OR
export ARTIFACTORY_USERNAME="your_artifactory_username"
export ARTIFACTORY_PASSWORD="your_artifactory_password"可选:
# Jenkins Log Length (default: 5120 bytes)
export LOG_LENGTH=10240
# MCP Server Port for stream_http transport (default: 3721)
export MCP_PORT=3721
# Dynamic Prompts (optional)
export PROMPTS_FILE="example_prompts.json"备注: LOG_LENGTH 控制检索到的Jenkins日志数据量。根据需要进行调整。
替代方法:使用.env文件
您还可以创建 .env 将文件保存在项目根目录中,而不是手动设置环境变量:
# .env file
GITHUB_PERSONAL_ACCESS_TOKEN=your_github_token_here
PROMPTS_FILE=example_prompts.json
# Add other optional environment variables as needed服务器将自动从以下位置加载环境变量 .env 文件启动时。
动态提示
服务器支持从JSON文件加载自定义提示。设置 PROMPTS_FILE 将环境变量设置为提示配置文件的路径。
提示文件格式:
{
"prompts": [
{
"name": "github_repo_analysis",
"description": "Analyze a GitHub repository for DevOps insights",
"template": "Please analyze the GitHub repository {{owner}}/{{repo}} and provide insights on:\n\n1. Repository structure and organization\n2. CI/CD pipeline configuration\n3. Code quality indicators\n4. Security considerations\n5. Documentation quality\n\n{{#include_issues}}Also include analysis of recent issues and their resolution patterns.{{/include_issues}}",
"arguments": [
{
"name": "owner",
"description": "GitHub repository owner",
"required": true
},
{
"name": "repo",
"description": "GitHub repository name",
"required": true
},
{
"name": "include_issues",
"description": "Include analysis of repository issues",
"required": false
}
]
}
]
}使用提示
DevOps MCP服务器提供动态提示,帮助您执行常见的DevOps任务。以下是如何使用可用的提示:
可用提示
quick_repo_check-具有安全分析的全面存储库健康评估daily_check-通过Jenkins作业分析和基础设施状态完成DevOps监控build_troubleshoot-先进的构建故障调查和根本原因分析
使用 daily_check 提示
目的: 通过Jenkins作业分析进行全面的DevOps监控和基础设施状态报告。
参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
time_range | string | ❌ 否 | 分析时间范围(例如,“24小时”、“7天”、“1周”) |
include_infrastructure | boolean | ❌ 否 | 在报告中包括基础设施状态 |
focus_area | string | ❌ 否 | 要关注的具体领域(例如,“构建”、“部署”、“安全”) |
使用示例:
# Basic daily monitoring
Prompt: daily_check
# Weekly infrastructure review
Prompt: daily_check
Parameters:
- time_range: "7d"
- include_infrastructure: true
# Focus on build failures
Prompt: daily_check
Parameters:
- time_range: "24h"
- focus_area: "builds"它的作用:
- 🔍 Jenkins工作分析:全面审查工作状态和最近的失败
- 🔧 根本原因调查:深入了解故障模式和趋势
- 🏗️ 基础设施状态:关键基础设施组件的健康检查
- 📋 可采取行动的建议:有实施指导的优先行动项目
- 📊 执行摘要:关键指标和趋势的高层概述
使用 build_troubleshoot 提示
目的: 高级构建故障调查,包括全面的根本原因分析和可操作的建议。
参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
job_name | string | ✅ 是 | Jenkins作业名称 |
build_number | string | ❌ 否 | 要分析的内部版本号(最新版本使用-1) |
include_logs | boolean | ❌ 否 | 是否在分析中包含构建日志 |
使用示例:
# Basic usage (latest build)
Prompt: build_troubleshoot
Parameters:
- job_name: "my-application-build"
# Specific build number
Prompt: build_troubleshoot
Parameters:
- job_name: "my-application-build"
- build_number: "42"
# With build logs
Prompt: build_troubleshoot
Parameters:
- job_name: "my-application-build"
- build_number: "42"
- include_logs: true它的作用:
- 获取指定作业的生成状态和基本信息
- 检索并分析构建日志(如果
include_logs是真的) - 根据构建数据确定潜在的故障原因
- 提出故障排除步骤和可操作的建议
使用 quick_repo_check 提示
目的: 全面的存储库健康评估,包括安全分析和DevOps最佳实践评估。
参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
repo_name | string | ✅ 是 | 存储库名称格式为“所有者/仓库” |
include_security | boolean | ❌ 否 | 评估中包括安全分析 |
check_ci_cd | boolean | ❌ 否 | 分析CI/CD管道配置 |
使用示例:
# Basic repository check
Prompt: quick_repo_check
Parameters:
- repo_name: "facebook/react"
# Comprehensive security assessment
Prompt: quick_repo_check
Parameters:
- repo_name: "myorg/myproject"
- include_security: true
- check_ci_cd: true它的作用:
- 📊 存储库健康评估:全面评估存储库状态和指标
- 🔒 安全分析:安全配置审查和漏洞评估
- 🏗️ CI/CD管道评估:构建和部署配置分析
- 📋 可采取行动的建议:优先考虑改进建议并提供实施指导
- 📈 执行摘要:高级别概览,包括主要调查结果和战略建议
自然语言支持
DevOps MCP服务器同时支持这两种功能 结构化的 和 自然语言 调用提示的方法:
结构化格式(显式):
Use prompt: build_troubleshoot
Parameters:
- job_name: "creole-Automerge-main"
- build_number: 29
- include_logs: true自然语言格式(推荐):
"Perform daily DevOps monitoring check for the last 24 hours"
"Troubleshoot the Jenkins build failure for job 'creole-Automerge-main' build #29 with detailed logs"
"Check the GitHub repository facebook/react with security analysis"
"Analyze the failed build for my-app-build job number 42 including logs"
"Run weekly infrastructure review with comprehensive monitoring"
"Assess repository health for myorg/myproject including CI/CD pipeline analysis"自然语言处理是如何工作的:
- 意图识别:AI助手识别哪个提示与您的请求匹配
- 参数提取:从消息中提取特定值(作业名称、内部版本号、仓库名称)
- 自动映射:将您的自然语言映射到结构化提示格式
- 情境感知:使用对话历史记录和工作区上下文查找缺失的参数
更好的自然语言识别技巧:
- 使用关键字:包括“故障排除”、“分析”、“检查存储库”、“构建失败”等术语
- 具体:提及确切的作业名称、内部版本号、存储库名称
- 使用引号:为清楚起见,请在引号中注明具体值(例如“我的工作名称”)
- 包括上下文:指定所需的分析类型
自然语言模式示例:
| 意图 | 自然语言示例 |
|---|---|
| 日常监控 | “日常DevOps检查”、“运行日常监控”、“基础设施状态报告” |
| 存储库分析 | “使用安全性检查存储库所有者/名称”,“使用CI/CD分析GitHub存储库X” |
| 构建故障排除 | “调试构建失败”,“对作业X构建Y进行故障排除”,“调查构建问题” |
| 包含日志 | “包含日志”、“包含详细日志”、”显示构建日志“ |
| 最新版本 | “最新版本”、“最近版本”和“当前版本” |
| 时间范围 | “最近24小时”、“上周”、“7天”、“每周回顾” |
| 重点领域 | “关注构建”、“安全分析”、“基础设施审查” |
先决条件
使用Jenkins相关的提示,如 build_troubleshoot,确保您拥有:
# Required Jenkins environment variables
export JENKINS_URL="https://your-jenkins-server.com"
export JENKINS_USER="your-username"
export JENKINS_TOKEN="your-api-token"使用GitHub相关提示,如 quick_repo_check,确保您拥有:
# Required GitHub environment variable
export GITHUB_PERSONAL_ACCESS_TOKEN="your_github_token"模板变量:
- 使用
{{variable_name}}用于简单变量替换 - 使用
{{#variable_name}}...{{/variable_name}}对于条件块(如果变量有值则显示) - 使用
{{^variable_name}}...{{/variable_name}}对于负条件块(如果变量为空/null则显示)
可用的提示工具: 您的提示可以参考任何可用的MCP工具:
- GitHub工具:
search_repositories,get_file_contents,list_commits,list_issues等等。 - Jenkins工具:
get_jenkins_jobs,get_jenkins_build_log,get_recent_failed_jenkins_builds等等。 - Azure工具:
get_azure_subscriptions,list_azure_vms,list_aks_clusters等等。 - 人工工具:
list_artifactory_items,search_artifactory_items,get_artifactory_item_info等等。
码头工人
构建Docker镜像:
docker build -t devops-mcps .运行容器:
# Stdio transport (interactive)
docker run -i --rm \
-e GITHUB_PERSONAL_ACCESS_TOKEN="..." \
-e JENKINS_URL="..." \
-e JENKINS_USER="..." \
-e JENKINS_TOKEN="..." \
-e ARTIFACTORY_URL="..." \
-e ARTIFACTORY_IDENTITY_TOKEN="..." \
devops-mcps
# stream_http transport (background, HTTP server on 127.0.0.1:3721/mcp by default)
docker run -d -p 3721:3721 --rm \
-e TRANSPORT_TYPE=stream_http \
-e MCP_PORT=3721 \
-e GITHUB_PERSONAL_ACCESS_TOKEN="..." \
-e JENKINS_URL="..." \
-e JENKINS_USER="..." \
-e JENKINS_TOKEN="..." \
-e ARTIFACTORY_URL="..." \
-e ARTIFACTORY_IDENTITY_TOKEN="..." \
devops-mcps替换 ... 凭你的真实证件。
VSCode集成
在VSCode中配置MCP服务器 settings.json:
示例(带stdio的UVX):
"devops-mcps": {
"type": "stdio",
"command": "uvx",
"args": ["devops-mcps"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_...",
"GITHUB_API_URL": "https://github.mycompany.com", // Optional for GHE
"JENKINS_URL": "...",
"JENKINS_USER": "...",
"JENKINS_TOKEN": "...",
"ARTIFACTORY_URL": "...",
"ARTIFACTORY_IDENTITY_TOKEN": "cm..." // Or USERNAME/PASSWORD
}
}示例(带有stream_http的Docker):
确保Docker容器在启用stream_http的情况下运行(请参阅Docker部分)。
{
"type": "stream_http",
"url": "http://127.0.0.1:3721/mcp", // Adjust if Docker host is remote or if MCP_PORT is set differently
"env": {
// Environment variables are set in the container,
// but can be overridden here if needed.
"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_..."
}
}请参阅初始 README.md 其他传输/运行器组合的部分(UVX/stream_http、Docker/stdio)。
发展
设置您的开发环境:
# Install dependencies (using uv)
uv pip install -e ".[dev]"
# Or sync with lock file
# uv sync --all-extras --group dev装订和格式化(Ruff):
# Check code style
uvx ruff check .
# Format code
uvx ruff format .测试(Pytest):
# Run tests with coverage using the provided script
./test.sh
# Or run manually
pytest --cov=src/devops_mcps --cov-report=html:coverage/html --cov-report=xml --cov-fail-under=80 tests/测试脚本功能:
该项目包括一个全面的 test.sh 脚本:
- 自动检查
uv安装 - 同步开发依赖关系
- 使用pytest运行所有测试
- 生成HTML和XML覆盖率报告
- 在浏览器中自动打开HTML覆盖率报告(在CI中跳过)
- 要求最低80%的测试覆盖率(项目保持高覆盖率)
覆盖范围报告:
- HTML报告:
coverage/html/index.html(自动打开) - XML报告:
coverage.xml(用于CI/CD集成)
使用MCP检查器进行调试:
# Basic run
npx @modelcontextprotocol/inspector uvx run devops-mcps
# Run with specific environment variables
npx @modelcontextprotocol/inspector uvx run devops-mcps -e GITHUB_PERSONAL_ACCESS_TOKEN=... -e JENKINS_URL=... # Add other vars检查包依赖项是否已过时
uv pip list --outdated更新包依赖关系
uv lock --upgradeCI/CD
GitHub操作工作流(.github/workflows/ci.yml)手柄:
- 剥皮与测试:对推送和拉取请求运行Ruff和Pytest。
- 出版:构建Python包并将其发布到PyPI,将Docker镜像推送到Docker Hub
main支。
所需的存储库机密:
PYPI_API_TOKEN:用于包发布的PyPI令牌。DOCKER_HUB_USERNAME:Docker Hub用户名。DOCKER_HUB_TOKEN:Docker Hub访问令牌。
包装与出版(手册)
确保你有 build 和 twine 安装:
pip install -U build twine- 更新版本:增加版本号
pyproject.toml. - 构建:
python -m build - 上传:
twine upload dist/*(需要~/.pypirc配置或令牌输入)。
附录:GitHub搜索查询语法
利用GitHub在MCP工具中强大的搜索语法:
存储库搜索(gh_search_repositories):
in:name,description,readme:搜索特定字段。
*例子: fastapi in:name*
user:USERNAME或org:ORGNAME:搜索用户/组织的范围。
*例子: user:tiangolo fastapi*
language:LANGUAGE:按语言筛选。
*例子: http client language:python*
stars:>N,forks:YYYY-MM-DD:按指标和日期过滤。
*例子: language:javascript stars:>1000 pushed:>2024-01-01*
topic:TOPIC-NAME:按主题筛选。
*例子: topic:docker topic:python*
license:LICENSE-KEYWORD:按许可证过滤(例如。,mit,apache-2.0).
*例子: language:go license:mit*
代码搜索(gh_search_code):
in:file,path:搜索文件内容(默认)或路径。
*例子: "import requests" in:file*
repo:OWNER/REPO:搜索特定存储库的范围。
*例子: "JenkinsAPIException" repo:your-org/your-repo*
language:LANGUAGE:按文件语言筛选。
*例子: def main language:python*
path:PATH/TO/DIR,filename:FILENAME.EXT,extension:EXT:按路径、文件名或扩展名筛选。
*例子: "GithubException" path:src/devops_mcps extension:py*
参考文献
许可证
该项目根据MIT许可证获得许可。看 许可证 文件以获取详细信息。
