代码分析服务器

DevInsight是一款基于AI的开发者助手,通过模型上下文协议(MCP)和检索增强生成(RAG)技术,提供本地代码分析、解释、重构等功能。

  • by abhinavjain1110
  • JavaScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 abhinavjain1110/MCP-Server

使用说明

DevInsight-基于AI的代码分析MCP服务器

DevInsight是一个全面的AI驱动的开发人员助手,可以使用以下工具在本地分析、解释和重构代码 模型上下文协议(MCP) 和 RAG(检索增强生成).

🎯 特性

  • 代码分析:分析代码复杂性、易出错问题和代码异味
  • 代码说明:获取代码行为的自然语言解释
  • Bug检测:将错误追踪映射到可能的根本原因
  • 代码重构:建议按照样式指南进行重构
  • 测试执行:运行测试并总结故障
  • RAG驱动搜索:使用向量相似度检索相关代码片段
  • Git历史分析:总结Git提交和更改
  • 交互式聊天界面:漂亮的基于React的聊天界面

🏗️ 技术栈

后端

  • Node.js 随着 快车 框架
  • 模型上下文协议(MCP) 软件开发工具包
  • ESLint & escomplex 用于代码分析
  • 更漂亮 用于代码格式化
  • 玩笑 用于测试执行
  • 节点号 用于Git操作
  • SQLite (better squelite3)用于矢量存储
  • 拥抱脸 或 开放人工智能 用于嵌入和AI

前端

  • React.js 随着 维特
  • TailwindCSS 用于造型
  • React Markdown 用于呈现AI响应
  • 阿西奥斯 用于API调用

📦 安装

  1. 克隆或导航到项目目录

  2. 安装后端依赖项:

    cd backend
    npm install
    
  3. 安装前端依赖项:

    cd ../frontend
    npm install
    
  4. 设置环境变量:

    cp .env.example .env
    

    编辑 .env 并添加您的API密钥:

    • OPENAI_API_KEY (适用于OpenAI)或
    • 如果使用本地LLM,请配置Ollama

🚀 运行应用程序

后端服务器

cd backend
npm run dev

后端将于启动 http://localhost:8000

前端开发服务器

cd frontend
npm run dev

前端将从开始 http://localhost:3000

📖 用法

1.为您的存储库建立索引

在使用RAG功能之前,请对代码库进行索引:

# Via API (after starting backend)
curl -X POST http://localhost:8000/api/rag/index \
  -H "Content-Type: application/json" \
  -d '{"repoPath": "./data/sample_repo"}'

2.使用聊天界面

打开 http://localhost:3000 并与DevInsight进行交互:

  • 分析代码:“分析backend/index.js中的代码”
  • 解释代码:“解释身份验证的工作原理”
  • 查找bug:粘贴错误回溯
  • 重构代码:“重构后端/mcp/tools/analyzeCode.js”
  • 运行测试:“运行测试”
  • Git历史记录:“显示git历史记录”或“git关于身份验证的提交”

3.API终点

所有MCP工具都可以通过REST API获得:

方法 路线 描述
POST /api/mcp/analyze 分析文件
POST /api/mcp/explain 解释文件
POST /api/mcp/find-bug 调试错误
POST /api/mcp/refactor 重构代码
GET /api/mcp/git-history 获取Git摘要
POST /api/mcp/run-tests 运行Jest并总结
POST /api/rag/index 索引存储库
GET /api/rag/stats 获取索引统计信息

🧩 项目结构

devinsight/
├── backend/
│   ├── index.js                 # Fastify server entry point
│   ├── mcp/
│   │   ├── mcpServer.js        # MCP server implementation
│   │   ├── config.js           # Configuration
│   │   ├── tools/              # MCP tools
│   │   │   ├── analyzeCode.js
│   │   │   ├── explainCode.js
│   │   │   ├── findBug.js
│   │   │   ├── refactor.js
│   │   │   ├── runTests.js
│   │   │   └── gitHistory.js
│   │   ├── rag/                # RAG engine
│   │   │   ├── indexer.js
│   │   │   ├── retriever.js
│   │   │   └── embedder.js
│   │   └── utils/              # Utilities
│   │       ├── parseTrace.js
│   │       ├── diffFormatter.js
│   │       ├── logger.js
│   │       └── ai.js
│   └── package.json
├── frontend/
│   ├── src/
│   │   ├── components/         # React components
│   │   │   ├── ChatWindow.jsx
│   │   │   ├── MessageBubble.jsx
│   │   │   ├── CodeDiffViewer.jsx
│   │   │   ├── Loader.jsx
│   │   │   └── Header.jsx
│   │   ├── services/
│   │   │   └── api.js          # API client
│   │   ├── App.jsx
│   │   └── main.jsx
│   └── package.json
├── data/
│   ├── docs/                   # Documentation files
│   ├── logs/                   # Application logs
│   └── sample_repo/            # Sample code for testing
├── .env.example
├── .gitignore
└── README.md

🔧 配置

编辑 backend/mcp/config.js 或设置环境变量:

  • PORT:后端服务器端口(默认值:8000)
  • AI_PROVIDER: openai 或 ollama
  • OPENAI_API_KEY:您的OpenAI API密钥
  • REPO_PATH:要分析的存储库路径
  • VECTOR_DB_PATH:矢量数据库的路径

🧪 工作流示例

  1. 启动两台服务器 (后端和前端)

  2. 为您的存储库建立索引:

    POST /api/rag/index
    { "repoPath": "./data/sample_repo" }
    
  3. 在聊天中提问:

    • “分析data/sample_repo/example.js中的代码”
    • “解释calculateTotal的工作原理”
    • “查找错误:TypeError:无法读取未定义的属性'price'”
  4. 查看结果 在带有格式化响应的聊天界面中

🛠️ 发展

添加新的MCP工具

  1. 在中创建新的工具文件 backend/mcp/tools/
  2. 导出实现工具逻辑的异步函数
  3. 将工具添加到 backend/mcp/mcpServer.js
  4. 在中添加API路由 backend/index.js
  5. 更新前端以处理新工具

测试

cd backend
npm test

📝 备注

  • AI 提供商:配置OpenAI或Ollama。如果没有API键,某些功能将显示占位符响应。
  • RAG索引:在使用代码解释功能之前,请对存储库进行索引,以获得最佳结果。
  • Git操作:Git功能需要指定路径中的有效Git存储库。
  • 测试执行:Jest必须安装在您正在测试的项目中。

🤝 贡献

这是一个本地开发工具。您可以随时使用其他功能对其进行扩展:

  • 支持更多语言
  • 其他代码分析指标
  • 与更多AI提供商集成
  • 增强的UI组件

📄 许可证

麻省理工学院

🙏 致谢

  • Anthropic的模型上下文协议(MCP)
  • Fastify快速web框架
  • 前端使用React和Vite
  • 所有使这成为可能的开源库

建于❤️ 对于开发者