CodeAnalysis MCP Server

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 架构,包含以下组件:

  1. MCP 服务器:使用 MCP 协议的核心服务器实现
  2. 分析特点:模块化代码分析功能
  3. CLI :用于直接交互的命令行界面
  4. 传输层:通信机制(默认为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

核心组件

状态工具助手( statefulTool.ts

与 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);

工具机( toolMachine.ts

基于 XState 的状态机,定义工具的执行流程:

  • 状态转换(空闲、工具选择、参数设置、执行等)
  • 参数、结果和历史记录的上下文管理
  • 错误处理和恢复路径

该组件将会话管理委托给 statefulTool 实现。

工具服务( toolService.ts

协调工具状态转换的核心执行服务:

  • 管理工具选择、参数验证和执行
  • 跟踪执行历史
  • 处理执行结果和错误

类型( types.ts

共享类型定义可确保整个状态管理系统的一致性:

  • SessionData:用于存储工具状态的结构
  • SessionStore:会话存储实现的接口
  • ExecutionResult:工具的标准响应格式

与 MCP SDK 集成

该架构通过以下方式与 MCP SDK 集成:

  1. 使用状态管理扩展工具注册模式
  2. 保持与 MCP 响应格式的兼容性
  3. 为状态操作提供会话和上下文跟踪

使用示例

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 服务器支持两种传输模式:

  1. HTTP 传输(默认):默认在 3000 端口运行。最适合客户端-服务器架构。
  2. Stdio Transport :用于直接进程通信。设置STDIO_TRANSPORT=true环境变量即可启用。

会话存储架构

MCP 代码分析现在具有模块化会话存储架构,具有自动后端检测功能:

  • 灵活存储:自动在 Redis 和内存存储之间切换
  • 开发友好:开发过程中无需 Redis 即可运行
  • 生产就绪:在生产环境中使用 Redis 进行持久化
  • 自动回退:当 Redis 不可用时,优雅地回退到内存存储

有关更多详细信息,请参阅会话存储架构文档。

要求

  • Node.js 18+
  • npm 或 yarn
  • Redis(开发可选,生产推荐)
ID: 53hatn7080