一个强大的代码库分析工具包,利用模型上下文协议(MCP)进行AI辅助的代码理解和转换。
# 克隆仓库
git clone https://github.com/yourusername/mcp-codeanalysis.git
cd mcp-codeanalysis
# 安装依赖
npm install
# 构建项目
npm run build
在生产环境中,Redis用于会话存储。在开发和测试中,如果Redis不可用,系统将自动回退到内存中的会话存储。
注意:已知存在Redis连接问题,即使Redis正在运行,操作也可能失败。详情见
plan.md文件中的“技术债务”部分。目前,你可以使用./use-memory-session.sh脚本以内存会话存储运行服务器。更多信息,请参阅Redis故障排除指南。
安装Redis:
# Ubuntu/Debian
sudo apt-get install redis-server
# macOS
brew install redis
# Windows(推荐使用WSL)
# 对于原生Windows,从https://redis.io/download下载
默认情况下,应用程序尝试连接到redis://localhost:6379的Redis。你可以通过环境变量配置Redis连接:
# 设置自定义Redis URL
export REDIS_URL=redis://custom-host:6379
# 即使有Redis可用也强制使用内存会话存储
export FORCE_MEMORY_SESSION=true
# 在开发模式下运行
npm run dev
# 运行测试
npm test
# 运行代码检查
npm run lint
# 启动MCP服务器
npm start
# 运行CLI工具
node ./tools/mcp-stdio-client.js --task "分析依赖关系" --files "src/*.ts"
MIT
一个全面的模型上下文协议(MCP)服务器,用于高级代码分析,提供通过可扩展架构的工具和见解。
# 克隆仓库
git clone https://github.com/your-username/codeanalysis-mcp.git
cd codeanalysis-mcp
# 安装依赖
pnpm install
# 构建项目
pnpm build
CodeAnalysis MCP服务器有两种使用方式:
# 启动MCP服务器
pnpm start
这将启动可以被任何MCP客户端(如Claude Desktop、Cursor等)连接的MCP服务器。
项目包含一个全面的CLI供直接交互:
# 获取帮助
pnpm run cli --help
# 分析仓库或目录
pnpm run cli analyze repo ./src
# 检查代码质量
pnpm run cli quality analyze ./src
项目包含专门设计来增强AI辅助开发的特殊工具:
# 为AI助手生成代码上下文
node tools/ai-dev-helper.js --task="实现新功能" --search="相关功能"
# 运行示例客户端
node examples/dev-tools-client.js
详细信息请参阅开发者工具指南。
# 分析本地目录
pnpm run cli analyze repo ./src
# 分析特定文件
pnpm run cli analyze file ./src/server.ts
# 获取带有函数细节的代码度量
pnpm run cli metrics analyze ./src --functions
# 将度量保存到文件
pnpm run cli metrics analyze ./src -o metrics-report.json
# 以Mermaid格式分析依赖关系
pnpm run cli dependencies analyze ./src -f mermaid -o deps.mmd
# 可视化依赖关系
pnpm run cli visualize dependencies -p ./src --format mermaid
# 运行质量分析
pnpm run cli quality analyze ./src
# 生成HTML报告
pnpm run cli quality analyze ./src --html -o quality-report.html
# 构建知识图谱
pnpm run cli knowledge build ./src
# 查询知识图谱
pnpm run cli knowledge query ./src "type:function AND complexity>5"
# 导出为图表
pnpm run cli knowledge export ./src -f mermaid
# 存储见解
pnpm run cli insights store -r ./src -t code-pattern -c "重构机会"
# 检索见解
pnpm run cli insights retrieve -r ./src
# 准备AI交互上下文
node tools/ai-dev-helper.js --task="修复身份验证错误" --files="src/auth/*.ts" --search="登录"
# 与AI提示一起使用
# 将生成的ai-context.json文件内容复制到你的AI助手提示中
# 或使用模板/templates/ai-prompt-template.md
项目遵循MCP架构,包括以下组件:
此服务器兼容任何符合MCP规范的客户端,包括:
命令接受各种格式的路径:
./src 或 /absolute/path/to/dir./src/file.ts 或 /path/to/file.tshttps://github.com/username/repo欢迎贡献!请随意提交Pull Request。
该项目采用MIT许可证——详见LICENSE文件。
此项目实现了MCP SDK的状态工具,提供了一个框架,用于构建在调用之间维护上下文的工具。
状态管理架构组织成几个模块化组件:
src/state/
├── helpers/
│ └── statefulTool.ts # 创建状态工具的主要入口点
├── machines/
│ └── toolMachine.ts # 工具执行流程的XState机器
├── services/
│ ├── toolService.ts # 工具核心执行服务
│ ├── redisToolExecutionService.ts # 分布式执行服务
│ ├── redisSessionStore.ts # 基于Redis的会话持久化
│ └── types.ts # 共享类型定义
statefulTool.ts)与MCP SDK的中央集成点,提供:
// 创建具有状态持久性的状态工具
createStatefulTool(server, "my-tool", schema, handler);
// 带描述
createStatefulTool(server, "my-tool", "我的状态工具", schema, handler);
toolMachine.ts)基于XState的状态机,定义了工具的执行流程:
此组件委托会话管理给状态工具实现。
toolService.ts)协调工具状态转换的核心执行服务:
types.ts)确保整个状态管理系统一致性的共享类型定义:
架构通过以下方式与MCP SDK集成:
import { createServer } from "@modelcontextprotocol/sdk";
import { createStatefulTool } from "./state/helpers/statefulTool";
import { z } from "zod";
const server = createServer();
// 注册一个状态工具
createStatefulTool(
server,
"counter",
"一个在调用间维持计数的工具",
{
action: z.enum(["increment", "decrement", "reset"]),
},
async (params) => {
// 从参数中获取会话ID(或创建一个新的)
const sessionId = params.sessionId;
// 处理动作
let count = 0;
// 工具逻辑与状态操作...
return { count };
}
);
server.listen(3000);
对于分布式环境,基于Redis的实现提供了:
组件包括全面的测试套件,验证:
CodeAnalysis MCP服务器提供了专用于AI辅助开发的工具。这些工具有助于收集可以提供给AI系统的代码上下文,以便更有效的协助。
仓库在tools/目录中包含几个客户端脚本:
HTTP客户端(tools/http-client.js):通过HTTP传输连接到MCP服务器(默认)。
node tools/http-client.js --task "您的任务描述" --files "src/features/*.ts" --search "会话"
原始客户端(tools/mcp-raw-client.js):仅捕获服务器信息的简单客户端。
node tools/mcp-raw-client.js --task "您的任务描述"
简易客户端(tools/simple-client.js):通过stdio与服务器通信。
node tools/simple-client.js --task "您的任务描述" --files "src/features/*.ts"
所有客户端脚本都会在项目根目录生成一个ai-context.json文件。此文件包含了有关您代码库的有价值上下文,可以与AI助手分享,以提供更有根据的响应。
AI助手的提示模板位于templates/ai-prompt-template.md。此模板有助于使用来自MCP工具的适当上下文结构化对AI助手的请求。
MCP服务器支持两种传输模式:
STDIO_TRANSPORT=true环境变量启用。MCP代码分析现在具备一个模块化的会话存储架构,自动检测后端:
更多详情,请参阅会话存储架构文档。