Code Analysis MCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Code Analysis MCPAnalyze server05 for code errors and logic issues."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Code Analysis MCP
一个面向 kb_system 的多项目代码分析 MCP。MCP层不理解项目业务,也不解析项目的 MODULE.md、Agent或SKILL内容;它只在已注册项目根目录中启动一次独立的 claude -p,并将项目SKILL产生的完整Markdown报告直接返回给MCP客户端。
kb_system 接入方请阅读 kb_system接入Code Analysis MCP指南。
当前边界
一个MCP服务支持多个项目。
项目通过服务端配置的精确绝对根目录选择。
Agent和SKILL由项目提供,客户端不能自行指定。
每次分析使用独立的无持久化Claude Code进程。
MCP只透传Markdown报告,不解析报告正文。
第一阶段只允许代码和日志分析;可按项目在每次分析前执行一次
svn update,但不负责修改源码、构建、启动、部署、热更新或提交项目。
Related MCP server: cc-agent
环境要求
Node.js 22或更高版本。
Claude Code已安装并完成认证。
每个项目至少提供:
.claude/agents/<agent>.md.claude/skills/<skill>/SKILL.md
MODULE.md由项目决定是否使用;MCP只在检查结果中报告它是否存在。
当前依赖MCP TypeScript SDK v2,对应2026-07-28协议,同时保留对2025-era客户端的无状态兼容处理。
安装与构建
npm install
npm run build
npm test复用脚本:更新指定SVN目录
三个配置项目无需重复输入URL、根目录和更新路径:
# 首次建立sparse checkout;只下载update_paths及必要父目录
npm run svn:checkout -- --all
# 后续按各项目配置的update_paths更新
npm run svn:update:projects -- --all也可以只处理一个项目:
npm run svn:checkout -- --project qt_01_trunk
npm run svn:update:projects -- --project qt_05_trunk批量脚本默认串行,可用 --jobs 2 控制并发。checkout先以 --depth empty 建立工作副本,再用 --parents 只展开 update_paths;重复执行会核对URL并补齐缺失路径。
脚本不会默认更新整个工作副本,必须显式传入一个或多个 --path:
npm run svn:update -- --root D:/server05/trunk2 --path src --path config/app --username svn-readerLinux示例:
npm run svn:update -- --root /data/server05/trunk2 --path src --path include目录必须是相对 --root 的路径,不能使用 ../ 跳出工作副本。脚本默认使用 --ignore-externals,更新后检查SVN冲突;密码只使用当前服务账号的SVN认证缓存。需要服务器版本强制覆盖指定路径时增加 --server-wins,该参数会永久清除指定路径内的所有本地改动和未版本化/忽略项。完整参数可运行 npm run svn:update -- --help 查看。
多项目配置
编辑 config/projects.yaml:
server:
host: 127.0.0.1
port: 3100
mcp_path: /mcp
health_path: /healthz
defaults:
timeout_ms: 300000
hard_timeout_ms: 900000
max_concurrency: 4
max_output_bytes: 2097152
max_question_chars: 16000
claude:
executable: auto
projects:
server05_trunk2:
name: server05 Erlang game server
code: server05
root: D:/server05/trunk2
agent: code-error-logic-agent
skill: code-error-logic-consultant
allowed_dirs:
- .claude/agents
- src
- config/app
- logs
allowed_files:
- AGENTS.md
- CLAUDE.md
- proto/game_proto.txt
exclude_dirs:
- .svn
- _build
- node_modules
- bak
- config/excel
svn:
update_before_analysis: true
executable: svn
username: svn-reader
expected_url: https://svn.example.internal/project/trunk
update_paths:
- .claude/agents
- .claude/skills/code-error-logic-consultant
- src
- config/app
- AGENTS.md
conflict_policy: server_wins
ignore_externals: true
timeout_ms: 120000
timeout_ms: 600000
max_concurrency: 2新增项目只需要登记项目代码、根目录、Agent、SKILL、SVN账号和过滤目录,不需要修改MCP代码。repo_path必须与注册表中的根目录精确匹配;项目子目录、未注册目录和相对路径都会被拒绝。
SVN更新与目录过滤
root是本地SVN工作副本绝对路径;svn.expected_url可选,用于在更新前核对工作副本对应的仓库地址。svn.update_before_analysis: true时必须配置svn.update_paths。每次analyze_codebase只更新这些相对路径,成功后才启动Claude Code;服务不会默认执行svn update .。svn.username是可选账号名;省略时使用MCP服务账号已有的SVN认证缓存。密码不得写入YAML、日志或启动参数。svn.ignore_externals: true会给更新命令增加--ignore-externals。SVN更新与同一项目的分析共用项目并发锁,不会并行更新同一个工作副本。
update_paths不能位于exclude_dirs内。svn.conflict_policy: fail会保留本地状态并在冲突时失败。svn.conflict_policy: server_wins会在每次更新前,对update_paths执行递归revert --remove-added和cleanup --remove-unversioned --remove-ignored,永久清除这些路径中的本地修改、添加项、未版本化项和忽略项,然后以服务器版本更新。该策略不会清理update_paths之外的内容。更新、清理、认证或冲突检查失败时,本次分析直接失败。
allowed_dirs和allowed_files是分析白名单;只要其中任意一个非空,Claude就只能读取、搜索和引用这些路径。二者都为空时允许分析整个项目。exclude_dirs是最高优先级排除列表,即使路径同时位于白名单内也不得分析。三类路径都必须是相对项目根目录的路径。白名单和排除列表只约束分析提示,不会删除目录,也不会改变SVN sparse depth。
Claude Code可执行文件
executable: auto 在Windows优先解析npm全局安装中的原生 claude.exe,避免通过CMD或PowerShell拼接命令。也可以配置固定路径:
claude:
executable: C:/tools/claude/claude.exeLinux也可以配置Claude包装脚本,例如 claude-glm-cli.sh:
claude:
executable: /opt/claude/claude-glm-cli.sh
prefix_args: []当 executable 以 .sh 结尾且运行在Linux/macOS时,MCP会使用 /bin/bash <脚本> ... 执行,脚本通过stdin接收完整问题,后续参数仍保持原有Claude Code参数。脚本应最终转发这些参数并返回Markdown到stdout;stderr不会返回给客户端。
服务端使用参数数组启动进程,并通过stdin传递用户问题;不会把问题拼进Shell命令。
Claude Code显式加载 user,project,local 设置来源:user 提供服务账号的模型和认证配置,project/local 提供目标项目的Agent、SKILL及项目规则。生产环境应使用专用服务账号,并审查该账号的Claude用户级配置。
启动
Streamable HTTP
npm run build
npm run start:http默认地址:
MCP:
http://127.0.0.1:3100/mcp健康检查:
http://127.0.0.1:3100/healthz
指定其他配置:
node dist/src/http.js --config config/projects.local.yamlstdio
npm run build
npm run start:stdiostdio模式所有运行日志都写入stderr,不会污染MCP JSON-RPC标准输出。
分析耗时日志
analyze_codebase 的结构化日志使用同一个 request_id 串联请求,并按阶段输出:
analysis_queue_acquired:project_queue_ms、global_queue_ms。svn_started、svn_phase_completed、svn_update_completed:分别记录info、revert、cleanup、update、status和svn_total_ms对应耗时。claude_spawned:Claude子进程PID和启动耗时。claude_first_output:从启动到首次标准输出的耗时。process_tree_terminated:取消、超时或结果过大时的进程组终止耗时与是否升级到强制终止。analysis_completed:校验、排队、SVN、Claude首输出、Claude总耗时和工具处理总耗时。analysis_failed:工具处理总耗时、稳定错误码和错误类型。
analysis_completed.duration_ms 从工具处理入口计到分析结果生成完成,不包含客户端网络接收完成时间。日志不记录问题正文、Claude报告、SVN密码或Token值。
MCP工具
list_projects
列出已启用项目的精确 repo_path、Agent和SKILL。项目不明确时先调用。
inspect_repository
输入:
{
"repo_path": "D:/server05/trunk2"
}只检查项目目录、MODULE.md、Agent和SKILL是否可用,不启动Claude Code。
analyze_codebase
输入:
{
"repo_path": "D:/server05/trunk2",
"question": "分析错误码11050的定义、触发位置和调用链",
"mode": "analyze"
}等价的内部调用逻辑:
cwd = D:/server05/trunk2
claude -p --agent code-error-logic-agent --permission-mode dontAsk --no-session-persistence --output-format text
stdin = /code-error-logic-consultant <用户问题> + MCP只读约束成功结果是MCP文本内容,正文为Claude Code生成的Markdown报告。MCP不会让Agent在项目目录中落盘报告。
错误码
工具错误使用MCP isError: true 返回,文本包含稳定错误码和下一步建议:
错误码 | 含义 |
| 参数或绝对路径格式错误 |
| 已注册项目当前不存在或不可访问 |
| 项目未注册、未启用或不是精确根目录 |
| 项目配置的Agent文件不存在 |
| 项目配置的SKILL文件不存在 |
| SVN客户端无法启动 |
| SVN更新失败、超时、认证失败或工作副本异常 |
| Claude Code可执行文件无法启动 |
| Claude上游模型返回HTTP 529容量过载,可稍后重试 |
| 排队或分析超过项目超时 |
| Markdown报告超过响应上限 |
| 客户端取消请求 |
| Claude Code失败、无输出或其他分析错误 |
Claude Code的stderr仅在服务端有界读取并用于识别已知错误;客户端只收到安全的分类结果,不返回原始stderr,避免泄露服务器路径、认证状态或其他无关诊断。
超时、取消与并发
默认超时5分钟,项目可覆盖,硬上限15分钟。
MCP客户端超时建议比项目超时多30到60秒。
客户端取消后,服务端终止对应Claude Code进程树。
同时应用全局并发上限和项目并发上限。
项目排队不会占用全局执行槽,避免单个项目饿死其他项目。
不复用Claude会话,不在请求之间共享当前项目或问题上下文。
HTTP安全
默认只监听
127.0.0.1。校验Host和Origin,防止本地服务DNS重绑定攻击。
限制HTTP请求体大小、问题长度和Claude输出大小。
监听非回环地址时必须配置
server.auth_token_env,Token仅从环境变量读取。远程访问还必须在反向代理或网关启用HTTPS;本服务不直接管理TLS证书。
不要在配置文件、日志或接入文档中保存Token值。
远程配置示例:
server:
host: 0.0.0.0
port: 3100
auth_token_env: CODE_MCP_BEARER_TOKEN
allowed_origins:
- https://kb.example.internalkb_system接入信息
交付时提供:
服务地址或stdio启动命令。
Streamable HTTP或stdio传输方式。
必需环境变量名称,不提供Token值。
config/projects.yaml的项目登记方式。tools/list的实际输出。inspect_repository与analyze_codebase调用样例。超时和错误调用样例。
项目Agent、SKILL缺失时的处理方式。
当前只读边界和已知限制。
Windows首版部署
首版使用当前Windows用户的登录触发计划任务,因为Claude Code认证和用户级配置属于该账号。它不是“开机但尚未登录”就启动的系统服务;当前用户登录后自动启动。默认仅监听回环地址,不需要开放Windows防火墙。若安装终端没有UAC提升权限,安装器会自动退回当前用户的“启动”目录快捷方式,登录启动行为相同;以后从提升权限的PowerShell重跑安装器即可切换为计划任务。
安装并立即启动:
powershell -ExecutionPolicy Bypass -File .\scripts\windows\install-code-mcp-task.ps1查看任务状态和健康检查:
powershell -ExecutionPolicy Bypass -File .\scripts\windows\status-code-mcp.ps1重启服务:
Stop-ScheduledTask -TaskName CodeAnalysisMCP
Start-ScheduledTask -TaskName CodeAnalysisMCP卸载计划任务(保留项目和日志):
powershell -ExecutionPolicy Bypass -File .\scripts\windows\uninstall-code-mcp-task.ps1运行日志位于 logs/。运行包装器在进程失败后每分钟重试,最多3次;计划任务模式还会拒绝重复实例。
kb_system调用示例
同一台Windows机器上的地址为 http://127.0.0.1:3100/mcp。可运行示例会依次调用 list_projects、inspect_repository 和 analyze_codebase:
node .\examples\kb-system-client.mjs "D:/server05/trunk2" "分析错误码11050的定义、触发位置和调用链"脚本将完整Markdown报告单独写到stdout,项目检查等诊断写到stderr,kb_system可直接接收stdout入库。当前项目服务端超时为600秒,示例客户端超时为660秒;可通过 CODE_MCP_CLIENT_TIMEOUT_MS 覆盖。
如果 kb_system 不在同一台机器,不要直接暴露当前回环端点。第二阶段应改为非回环监听,配置 server.auth_token_env,并通过带HTTPS的反向代理或网关访问。
已知限制
Markdown中的证据准确性由项目Agent和SKILL负责,MCP不解析或二次验证报告行号。
Agent工具权限由项目Claude配置决定;MCP会追加只读提示,但提示本身不等价于操作系统沙箱。
allowed_dirs、allowed_files和exclude_dirs都是提示级过滤,不是操作系统级文件访问控制;需要硬隔离时应使用独立的过滤工作副本和受限服务账号。非法Agent名称可能被Claude Code退回默认会话,因此MCP在启动前强制检查Agent文件存在。
当前不提供项目写操作、构建、运行、部署、热更新、Git或SVN提交能力。
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server orchestrating local CLI agents (Claude Code, OpenAI Codex, Google Gemini) for cross-validation, second opinions, and persona-driven prompting.18MIT
- AlicenseAqualityBmaintenanceMCP server that spawns autonomous Claude Code agents in GitHub repos, enabling task delegation with persistent state, multi-step workflows, and job monitoring.471632Apache 2.0
- Flicense-qualityDmaintenanceAn MCP server for coordinating multiple Claude Code sessions across related projects.
- Alicense-qualityCmaintenanceEnables safe repository inspection and Docker-sandboxed command execution via MCP, with optional Codex handoff for implementation tasks.1Apache 2.0
Related MCP Connectors
Paid remote MCP for Claude Code skill update gate MCP, structured receipts, audit logs, and reviewer
Generate AGENTS.md, AP2 compliance docs, checkout rules, debug playbook & MCP configs from any repo.
A paid remote MCP for OpenAI Codex agent coordination MCP, built to return verdicts, receipts, usage
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/lveniu/cc-code-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server