mcp开发工具包
Go上的本地MCP流媒体HTTP服务器,用于预PR和预发布质量、风险和发布准备检查。
什么是MCP服务器
服务器提升Endpoint http://localhost:8000/mcp 提供7个MCP Tools:
code_checkgen_release_notestest_coverage_analyzeraudit_dockertodo_debt_scandependency_guardrelease_readiness
什么样的痛苦决定
- 在PR/Release之前,检查通常分散在不同的命令和工具中。
- 没有一个快速的信号“可以/不可以”发布。
- 很难在变革中迅速找到优先问题。
mcp-devkit 将此集合到一个MCP Endpoint并返回结构化结果,包括聚合结果 go/no-go.
对谁有用
- Go开发团队(Backend/Platform)
- TL/EM和发布经理。
- 工程师谁需要快速的预飞质量之前合并/释放。
快速启动
下面是“从零开始”的步骤,没有隐藏的假设。
(0)要求
gitgo(推荐1.25+)docker(如果需要Docker脚本)node+npx(如果需要MCP Inspector)
检查:
git --version
go version
docker --version
node --version1)克隆并切换到项目
git clone https://github.com/FlynntDev/mcp-devkit.git
cd mcp-devkit2)启动 serve 本地(无Docker)
go run ./cmd/devkit serve服务器正在听 :8000.
3)构建Docker图像
docker build -t mcp-devkit .4)启动 serve 在Docker
Linux/macOS:
docker run --rm -p 8000:8000 -v "$(pwd):/repo" -w /repo mcp-devkit servePowerShell:
docker run --rm -p 8000:8000 -v "${PWD}:/repo" -w /repo mcp-devkit serve重要提示:如果payload使用tools path/repo_path,在容器中,它必须是容器内部的路径(例如, /repo 或 /repo/demo_project)而不是主机路径。
5)检查 /health
Linux/macOS:
curl http://localhost:8000/healthPowerShell:
curl.exe http://localhost:8000/health预期答复:
{"status":"ok","service":"mcp-devkit","time":"2026-02-28T12:00:00Z"}6)通过MCP Inspector/MCP客户端连接
启动Inspector:
npx @modelcontextprotocol/inspector在UI Inspector:
- 运输:
Streamable HTTP - 端点:
http://localhost:8000/mcp - 连接
每个MCP客户端都需要相同的设置:
- 运输:
Streamable HTTP - 端点:
http://localhost:8000/mcp
7)快速烟雾服务器测试(可选)
go run ./cmd/devkit smokeSmoke检查:
- 可用
/health - MCP Endpoint响应
- 全部7 tools注册
如何使用
通路模型
- 如果
path/repo_path空,使用当前进程工作目录(.). - 在Docker启动时,请使用容器内的路径(
/repo/...). - 在GIT范围内(
from/to)目标存储库中需要有效的refs。
1) code_check
用途:飞行前检查GO代码的质量。
输入参数:
path(字符串,默认值:".")checks(array\[string\],默认值:["gofmt","gotest","govet","gobuild"])timeout_seconds(int,默认值:120,范围5..1800)packages(字符串,默认值:"./...")
Payload示例:
{
"path": "./demo_project",
"checks": ["gofmt", "gotest", "govet", "gobuild"],
"timeout_seconds": 120,
"packages": "./..."
}预期成果:
ok(布尔)summary.requested/passed/failed/skippeddetails[]每个状态检查pass|fail|skip
2) gen_release_notes
用途:从Git历史记录生成Release Notes。
输入参数:
repo_path(字符串,默认值:".")from(string,optional;如果为空,则选择最后一个标记或第一个提交)to(字符串,默认值:"HEAD")format(字符串:markdown|json,默认值:markdown)write_changelog(bool,默认值:true)changelog_path(字符串,默认值:"./CHANGELOG.md")include_commits(bool,默认值:true)
Payload示例:
{
"repo_path": "./demo_project",
"from": "HEAD~10",
"to": "HEAD",
"format": "markdown",
"write_changelog": false,
"include_commits": true
}预期成果:
range.from/tosections(评论组)diff_stats(files_changed/insertions/deletions)top_areasrisk_highlightsmarkdownchangelog_updated
3) test_coverage_analyzer
目的:测试覆盖率分析和建议优先级。
输入参数:
path(字符串,默认值:".")packages(字符串,默认值:"./...")timeout_seconds(int,默认值:120,范围10..1800)min_coverage(数字,默认值:70.0,范围0..100)max_recommendations(int,默认值:10,范围1..50)from(字符串,可选)to(字符串,可选,默认值:HEADRange分析)
Payload示例:
{
"path": "./demo_project",
"min_coverage": 75,
"max_recommendations": 10,
"packages": "./..."
}预期成果:
ok(布尔)summary.total_coverage/min_coveragepackages[]具有地位ok|lowweak_functions[]recommendations[]сpriority/score/reason
4) audit_docker
用途:对DockerFile/Compose安全性和Reproducibility风险进行审计。
输入参数:
path(字符串,默认值:".")use_external_scanners(bool,默认值:true)
Payload示例:
{
"path": "./demo_project",
"use_external_scanners": false
}预期成果:
issues[](文件、rule_id、严重性、消息、建议、行)summary.critical/high/medium/lowengines(例如,builtin-rules,hadolint)warnings[](如果外部扫描仪不可用)
5) todo_debt_scan
用途:搜索和优先级todo/fixme/hack/techdebt。
输入参数:
path(字符串,默认值:".")patterns(array\[string\],可选;默认值:TODO,FIXME,HACK,XXX,TECHDEBT,DEBT)max_items(int,默认值:100,范围1..500)changed_only(bool,默认值:false)from(字符串,可选)to(字符串,可选)include_git_blame(bool,默认值:true在Git存储库中)
Payload示例:
{
"path": "./demo_project",
"max_items": 30,
"changed_only": true,
"from": "HEAD~5",
"to": "HEAD",
"include_git_blame": false
}预期成果:
items[](文件、行、类型、文本、优先级、分数、年龄/作者、责任)summary.total/high/medium/low/scanned_filessummary.kinds标记类型的数量
6) dependency_guard
目的:验证依赖关系和漏洞更新。
输入参数:
repo_path(字符串,默认值:".")packages(字符串,默认值:"./...")include_updates(bool,默认值:true)include_vulnerabilities(bool,默认值:true)
Payload示例:
{
"repo_path": "./demo_project",
"include_updates": true,
"include_vulnerabilities": true,
"packages": "./..."
}预期成果:
summary.status(ok|warn|fail)summary.outdated_modulessummary.vulnerabilitiesupdates[]vulnerabilities[]tooling和warnings[]
7) release_readiness
用途:在PR/Release之前聚合Readiness Gate。
输入参数:
repo_path(字符串,默认值:".")from(字符串,可选)to(字符串,可选)min_coverage(数字,默认值:70)max_high_debt(int,默认值:5)run_code_check(bool,默认值:true)code_checks(array\[string\],可选)
Payload示例:
{
"repo_path": "./demo_project",
"from": "HEAD~10",
"to": "HEAD",
"min_coverage": 75,
"max_high_debt": 2,
"run_code_check": true
}预期成果:
summary.verdict(go|no-go)summary.blocking_issuessummary.warningschecks[]有字段name/status/message/blocking
限制/假设
支持什么
- 本地目录(absolute/relative path)
- Go存储库和Go工具链验证。
- RANGE/COMMIT/BLAME分析的Git Aware功能。
- DockerfileиCompose(
compose.yaml|compose.yml|docker-compose.yml|docker-compose.yaml).
不支持的
- 远程
repo_pathURL(仅本地文件系统路径)。 - 非Go生态系统分析是代码质量的主要场景。
- 自动修复发现的问题(工具仅诊断)。
changed_only=true在Git存储库之外。
测试了哪些测试项目
- 内置测试项目:
demo_project/ - 对于MCP Endpoint基础设施验证:
go run ./cmd/devkit smoke
高级模式(可选)
1)外部扫描仪和Linter
可以扩大诊断范围,如果 PATH 可用:
golangci-lintstaticcheckgovulncheckhadolint
如何包括:
- 在
code_check添加checks:golangci,staticcheck,govuln - 在
audit_docker离开use_external_scanners=true - 在
dependency_guard离开include_vulnerabilities=true
如果二进制不可用,工具将返回 skip/warning 并继续工作。
2)设置Origin访问(CORS) /mcp)
可用变量:
ALLOWED_ORIGINS(CSV支持)*Prefix C*最后)ALLOWED_ORIGIN_REGEX(正则表达式)
PowerShell(PowerShell):
$env:ALLOWED_ORIGINS="http://localhost:5173,https://my-client.example"
go run ./cmd/devkit serve示例(bash):
ALLOWED_ORIGINS="http://localhost:5173,https://my-client.example" go run ./cmd/devkit serve自述中的秘密不会公开。在本地或通过平台秘密管理器使用环境变量。
