返回市场
代码分析器

代码分析器

作者:0xjcf5 星标更新:2025-11-20

项目介绍

MCP代码分析

一个强大的代码库分析工具包,利用模型上下文协议(MCP)进行AI辅助的代码理解和转换。

特性

  • 代码分析:使用抽象语法树解析和分析代码库
  • 上下文生成:为AI模型创建丰富的上下文信息
  • 工具集成:基于MCP SDK构建,实现无缝的AI工具集成
  • 可扩展架构:插件系统支持自定义分析器

要求

  • Node.js 18+
  • NPM 9+
  • Redis(可选,仅生产环境需要)

安装

# 克隆仓库
git clone https://github.com/yourusername/mcp-codeanalysis.git
cd mcp-codeanalysis

# 安装依赖
npm install

# 构建项目
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(推荐使用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

CodeAnalysis MCP服务器

一个全面的模型上下文协议(MCP)服务器,用于高级代码分析,提供通过可扩展架构的工具和见解。

🚀 特性

  • 基本代码分析:语法和结构分析
  • 代码度量:复杂度、行数和代码质量度量
  • 依赖分析:包和导入关系可视化
  • 知识图谱:代码关系可视化和查询
  • 记忆系统:存储和检索关于代码库的见解
  • 可视化:生成多种格式的图表(Mermaid、DOT、ASCII)
  • 社会技术分析:理解团队和代码的关系
  • 多仓库分析:跨仓库关系分析
  • 进化规划:代码改进建议
  • 实时监控:实时监控代码更改
  • IDE集成:编辑器集成工具
  • 开发者工具:增强AI辅助开发工作流程的支持

📋 前提条件

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

🛠️ 安装

# 克隆仓库
git clone https://github.com/your-username/codeanalysis-mcp.git
cd codeanalysis-mcp

# 安装依赖
pnpm install

# 构建项目
pnpm build

🖥️ 使用

CodeAnalysis MCP服务器有两种使用方式:

1. 作为MCP服务器

# 启动MCP服务器
pnpm start

这将启动可以被任何MCP客户端(如Claude Desktop、Cursor等)连接的MCP服务器。

2. 使用CLI

项目包含一个全面的CLI供直接交互:

# 获取帮助
pnpm run cli --help

# 分析仓库或目录
pnpm run cli analyze repo ./src

# 检查代码质量
pnpm run cli quality analyze ./src

3. 使用开发者工具进行AI辅助开发

项目包含专门设计来增强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架构,包括以下组件:

  1. MCP服务器:使用MCP协议的核心服务器实现
  2. 分析特性:模块化的代码分析能力
  3. CLI:直接交互的命令行界面
  4. 传输层:通信机制(默认为stdio)

🔌 与MCP客户端的集成

此服务器兼容任何符合MCP规范的客户端,包括:

  • Claude Desktop应用
  • Cursor编辑器
  • Continue
  • 其他MCP兼容工具

📝 路径规范

命令接受各种格式的路径:

  • 本地目录:./src/absolute/path/to/dir
  • 本地文件:./src/file.ts/path/to/file.ts
  • 仓库URL:https://github.com/username/repo

🤝 贡献

欢迎贡献!请随意提交Pull Request。

📄 许可证

该项目采用MIT许可证——详见LICENSE文件。

MCP SDK状态管理架构

此项目实现了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的中央集成点,提供:

  • 带会话管理的工具注册
  • 符合MCP规范的响应格式
  • 内存中的会话管理
  • 会话访问和操作的辅助函数
// 创建具有状态持久性的状态工具
createStatefulTool(server, "my-tool", schema, handler);

// 带描述
createStatefulTool(server, "my-tool", "我的状态工具", schema, handler);

工具机器(toolMachine.ts

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

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

此组件委托会话管理给状态工具实现。

工具服务(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();

// 注册一个状态工具
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的实现提供了:

  • 跨服务器重启的会话持久化
  • 并发访问的分布式锁定
  • 基于TTL的会话清理
  • 网络/连接问题的错误处理

测试

组件包括全面的测试套件,验证:

  • 工具状态转换
  • 会话管理
  • 错误处理和恢复
  • 响应格式
  • 分布式操作(使用Redis)

AI开发工具

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

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

会话存储架构

MCP代码分析现在具备一个模块化的会话存储架构,自动检测后端:

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

更多详情,请参阅会话存储架构文档。

要求

  • Node.js 1 8+
  • npm 或 yarn
  • Redis(开发可选,生产推荐)