MCP代码分析
强大的代码库分析工具包,利用模型上下文协议 (MCP) 进行 AI 辅助代码理解和转换。
特征
- 代码分析:使用抽象语法树解析和分析代码库
- 上下文生成:为人工智能模型创建丰富的上下文信息
- 工具集成:基于 MCP SDK 构建,实现无缝 AI 工具集成
- 可扩展架构:基于插件的自定义分析器系统
要求
- Node.js 18+
- NPM 9+
- Redis(可选,仅生产环境需要)
安装
# Clone the repository
git clone https://github.com/yourusername/mcp-codeanalysis.git
cd mcp-codeanalysis
# Install dependencies
npm install
# Build the project
npm run build
Redis 配置(可选)
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 (using WSL is recommended)
# For native Windows, download from https://redis.io/download
默认情况下,应用程序会尝试通过redis://localhost:6379
连接到 Redis。您可以使用环境变量配置 Redis 连接:
# Set custom Redis URL
export REDIS_URL=redis://custom-host:6379
# Force memory session store even if Redis is available
export FORCE_MEMORY_SESSION=true
发展
# Run in development mode
npm run dev
# Run tests
npm test
# Run linting
npm run lint
用法
# Start the MCP server
npm start
# Run CLI tool
node ./tools/mcp-stdio-client.js --task "Analyze dependencies" --files "src/*.ts"
文档
执照
麻省理工学院
CodeAnalysis MCP 服务器
用于高级代码分析的综合模型上下文协议 (MCP) 服务器,通过可扩展的架构提供工具和见解。
🚀 功能
- 基本代码分析:语法和结构分析
- 代码指标:复杂度、行数和代码质量指标
- 依赖关系分析:包和导入关系可视化
- 知识图谱:代码关系可视化和查询
- 记忆系统:存储和检索有关代码库的见解
- 可视化:生成多种格式的图表(Mermaid、DOT、ASCII)
- 社会技术分析:了解团队和代码关系
- 多存储库分析:跨存储库关系分析
- 演进规划:代码改进建议
- 实时监控:实时监控代码变化
- IDE 集成:编辑器集成工具
- 开发者工具:增强的AI辅助开发工作流程支持
📋 先决条件
- Node.js 18+
- npm 或 yarn
- Redis(开发可选,生产推荐)
🛠️ 安装
# Clone the repository
git clone https://github.com/your-username/codeanalysis-mcp.git
cd codeanalysis-mcp
# Install dependencies
pnpm install
# Build the project
pnpm build
🖥️ 使用方法
CodeAnalysis MCP 服务器可以通过两种方式使用:
1. 作为 MCP 服务器
# Start the MCP server
pnpm start
这将启动 MCP 服务器,任何 MCP 客户端(如 Claude Desktop、Cursor 或其他客户端)都可以连接到该服务器。
2. 使用 CLI
该项目包括一个用于直接交互的综合 CLI:
# Get help
pnpm run cli --help
# Analyze a repository or directory
pnpm run cli analyze repo ./src
# Check code quality
pnpm run cli quality analyze ./src
3. 使用开发者工具进行AI辅助开发
该项目包括旨在增强人工智能辅助开发的特殊工具:
# Generate code context for AI assistants
node tools/ai-dev-helper.js --task="Implement new feature" --search="related functionality"
# Run example client
node examples/dev-tools-client.js
有关详细信息,请参阅开发人员工具指南。
📊 示例命令
基本分析
# Analyze a local directory
pnpm run cli analyze repo ./src
# Analyze a specific file
pnpm run cli analyze file ./src/server.ts
代码指标
# Get code metrics with function details
pnpm run cli metrics analyze ./src --functions
# Save metrics to a file
pnpm run cli metrics analyze ./src -o metrics-report.json
依赖关系分析
# Analyze dependencies in Mermaid format
pnpm run cli dependencies analyze ./src -f mermaid -o deps.mmd
# Visualize dependencies
pnpm run cli visualize dependencies -p ./src --format mermaid
代码质量
# Run quality analysis
pnpm run cli quality analyze ./src
# Generate HTML report
pnpm run cli quality analyze ./src --html -o quality-report.html
知识图谱
# Build knowledge graph
pnpm run cli knowledge build ./src
# Query the knowledge graph
pnpm run cli knowledge query ./src "type:function AND complexity>5"
# Export as diagram
pnpm run cli knowledge export ./src -f mermaid
洞察力与记忆
# Store an insight
pnpm run cli insights store -r ./src -t code-pattern -c "Refactoring opportunity"
# Retrieve insights
pnpm run cli insights retrieve -r ./src
开发人员工具
# Prepare context for AI interactions
node tools/ai-dev-helper.js --task="Fix authentication bug" --files="src/auth/*.ts" --search="login"
# Use with AI prompts
# Copy content from the generated ai-context.json file into your AI assistant prompt
# or use the template in templates/ai-prompt-template.md
🏗️ 建筑
该项目遵循 MCP 架构,包含以下组件:
- MCP 服务器:使用 MCP 协议的核心服务器实现
- 分析特点:模块化代码分析功能
- CLI :用于直接交互的命令行界面
- 传输层:通信机制(默认为stdio)
🔌 与 MCP 客户端集成
该服务器与任何符合 MCP 的客户端兼容,包括:
- 克劳德桌面应用程序
- 光标编辑器
- 继续
- 其他 MCP 兼容工具
📝 路径规范
命令接受各种格式的路径:
- 本地目录:
./src
或/absolute/path/to/dir
- 本地文件:
./src/file.ts
或/path/to/file.ts
- 存储库 URL:
https://github.com/username/repo
🤝 贡献
欢迎贡献代码!欢迎提交 Pull 请求。
📄 许可证
该项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅 LICENSE 文件。
MCP SDK 状态管理架构
该项目为模型上下文协议 (MCP) SDK 实现了有状态工具,为构建在调用之间维护上下文的工具提供了框架。
架构概述
状态管理架构分为几个模块化组件:
src/state/
├── helpers/
│ └── statefulTool.ts # Main entry point for stateful tool creation
├── machines/
│ └── toolMachine.ts # XState machine for tool execution flow
├── services/
│ ├── toolService.ts # Core execution service for tools
│ ├── redisToolExecutionService.ts # Distributed execution service
│ ├── redisSessionStore.ts # Redis-based session persistence
│ └── types.ts # Shared type definitions
核心组件
与 MCP SDK 的中央集成点,提供:
- 带有会话管理的工具注册
- 符合 MCP 标准的响应格式
- 内存会话管理
- 用于会话访问和操作的辅助函数
// Creating a stateful tool with state persistence
createStatefulTool(server, "my-tool", schema, handler);
// With description
createStatefulTool(server, "my-tool", "My stateful tool", schema, handler);
基于 XState 的状态机,定义工具的执行流程:
- 状态转换(空闲、工具选择、参数设置、执行等)
- 参数、结果和历史记录的上下文管理
- 错误处理和恢复路径
该组件将会话管理委托给 statefulTool 实现。
协调工具状态转换的核心执行服务:
- 管理工具选择、参数验证和执行
- 跟踪执行历史
- 处理执行结果和错误
类型( types.ts
)
共享类型定义可确保整个状态管理系统的一致性:
- SessionData:用于存储工具状态的结构
- SessionStore:会话存储实现的接口
- ExecutionResult:工具的标准响应格式
与 MCP SDK 集成
该架构通过以下方式与 MCP SDK 集成:
- 使用状态管理扩展工具注册模式
- 保持与 MCP 响应格式的兼容性
- 为状态操作提供会话和上下文跟踪
使用示例
import { createServer } from "@modelcontextprotocol/sdk";
import { createStatefulTool } from "./state/helpers/statefulTool";
import { z } from "zod";
const server = createServer();
// Register a stateful tool
createStatefulTool(
server,
"counter",
"A tool that maintains a count between invocations",
{
action: z.enum(["increment", "decrement", "reset"]),
},
async (params) => {
// Get session ID from params (or a new one will be created)
const sessionId = params.sessionId;
// Process the action
let count = 0;
// Tool logic with state manipulation...
return { count };
}
);
server.listen(3000);
分布式状态管理
对于分布式环境,基于 Redis 的实现提供:
- 服务器重启后会话仍然保持
- 用于并发访问的分布式锁定
- 基于TTL的会话清理
- 网络/连接问题的错误处理
测试
这些组件包括全面的测试套件,用于验证:
- 工具状态转换
- 会话管理
- 错误处理和恢复
- 响应格式
- 分布式操作(使用Redis)
人工智能开发工具
CodeAnalysis MCP 服务器提供用于 AI 辅助开发的专用工具。这些工具有助于收集代码上下文,并将其提供给 AI 系统,从而提供更有效的辅助。
客户端脚本
该存储库在tools/
目录中包含几个客户端脚本:
- HTTP 客户端(
tools/http-client.js
):通过 HTTP 传输连接到 MCP 服务器(默认)。node tools/http-client.js --task "Your task description" --files "src/features/*.ts" --search "session"
- 原始客户端(
tools/mcp-raw-client.js
):一个更简单的客户端,仅捕获服务器信息。node tools/mcp-raw-client.js --task "Your task description"
- 简单客户端(
tools/simple-client.js
):通过 stdio 与服务器通信。node tools/simple-client.js --task "Your task description" --files "src/features/*.ts"
所有客户端脚本都会在项目根目录中生成一个ai-context.json
文件。该文件包含有关您的代码库的宝贵上下文信息,可以与 AI 助手共享,以提供更明智的响应。
提示模板
templates/ai-prompt-template.md
提供了 AI 助手的提示模板。此模板可帮助您根据 MCP 工具中的适当上下文,构建对 AI 助手的请求。
服务器传输模式
MCP 服务器支持两种传输模式:
- HTTP 传输(默认):默认在 3000 端口运行。最适合客户端-服务器架构。
- Stdio Transport :用于直接进程通信。设置
STDIO_TRANSPORT=true
环境变量即可启用。
会话存储架构
MCP 代码分析现在具有模块化会话存储架构,具有自动后端检测功能:
- 灵活存储:自动在 Redis 和内存存储之间切换
- 开发友好:开发过程中无需 Redis 即可运行
- 生产就绪:在生产环境中使用 Redis 进行持久化
- 自动回退:当 Redis 不可用时,优雅地回退到内存存储
有关更多详细信息,请参阅会话存储架构文档。
要求
- Node.js 18+
- npm 或 yarn
- Redis(开发可选,生产推荐)