代码语义知识图谱服务

一个基于LlamaIndex的模型上下文协议(MCP)服务器,用于创建和维护由Claude生成的代码的语义知识图谱,支持跨会话的上下文保持和高级语义搜索功能。

  • by sparshdrolia
  • Python
  • 本地部署
  • 6 星标
  • 更新于
在 GitHub 查看 sparshdrolia/Persistent-code-mcp

使用说明

带LlamaIndex的持久代码MCP服务器

一种模型上下文协议(MCP)服务器,用于创建和维护由Claude生成的代码的语义知识图。在LlamaIndex的支持下,这允许使用高级语义搜索功能在会话之间维护上下文,而不需要在上下文窗口中显示整个代码库。

问题与解决方案

使用Claude开发软件时:

  • 上下文窗口有限,难以处理大型代码库
  • 会话之间丢失了以前的代码上下文
  • Claude对项目结构缺乏持久的理解
  • 每个会话中都需要对代码进行冗余解释
  • 保持实施一致性具有挑战性

持久代码通过以下方式解决了这些问题:

  • 创建代码组件及其关系的知识图
  • 跟踪每个组件的实施状态
  • 提供导航、查询和理解代码库的工具
  • 为特定的编码任务组装最少的必要上下文
  • 在聊天会话中保持持久的知识

LlamaIdex集成

持久代码利用LlamaIndex提供增强的语义理解:

  1. 语义搜索:根据含义查找代码组件,而不仅仅是关键字
  2. 矢量嵌入:代码嵌入向量空间进行相似性匹配
  3. 知识图谱:从语义上跟踪组件之间的关系
  4. 上下文检索:根据语义相关性检索相关代码

这种集成使Claude能够更深入地理解您的代码库:

  • 根据函数的功能而不仅仅是它们的名称来查找函数
  • 在准备上下文时获取更多相关的代码组件
  • 更好地理解组件之间的关系
  • 更准确地检索类似实现的示例

安装

先决条件

  • Python 3.10或更高版本
  • UV包管理器(推荐)或pip

设置

# Clone repository
git clone https://github.com/your-username/persistent-code-mcp.git
cd persistent-code-mcp

# Set up environment with UV
uv venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
uv pip install -r requirements.txt

# Or with pip
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
pip install -r requirements.txt

用法

初始化项目

python -m persistent_code init --project-name "YourProject"

启动服务器

python -m persistent_code serve --project-name "YourProject"

为桌面配置Claude

  1. 编辑您的Claude for Desktop配置文件:
    • 地点: ~/Library/Application Support/Claude/claude_desktop_config.json
    • 添加以下配置:
{
  "mcpServers": {
    "persistent-code": {
      "command": "path to python in venv",
      "args": [
        "-m",
        "persistent_code",
        "serve",
        "--project-name",
        "default"
      ],
      "cwd": "persistent-code-mcp",
      "env": {
        "PYTHONPATH": "abs path to persistent-code-mcp"
      }
    }
  }
}
  1. 重新启动桌面版的Claude
  2. 通过向Claude询问您的代码来连接到MCP服务器

可用工具

知识图谱管理

  • add_component:向图中添加新的代码组件
  • update_component:更新现有组件
  • add_relationship:在组件之间创建关系

代码检索和导航

  • get_component:按ID或名称检索组件
  • find_related_components:查找与给定组件相关的组件
  • search_code:从语义上搜索代码库

状态管理

  • update_status:更新组件的实施状态
  • get_project_status:检索整个项目的实施状态
  • find_next_tasks:建议接下来要实施的逻辑组件

上下文组装

  • prepare_context:为特定任务组装最小上下文
  • continue_implementation:提供继续实施组件的上下文
  • get_implementation_plan:制定实施待定组件的计划

代码分析

  • analyze_code:分析代码并更新知识图

工作流示例

  1. 初始化项目:

    python -m persistent_code init --project-name "TodoApp"
    
  2. 启动服务器:

    python -m persistent_code serve --project-name "TodoApp"
    
  3. 让克劳德设计你的项目:

    Can you help me design a Todo app with Python and FastAPI? Let's start with the core data models.
    
  4. Claude将创建组件并在知识图中跟踪它们

  5. 在稍后的会议中继续开发:

    Let's continue working on the Todo app. What's our implementation status?
    
  6. Claude将检索当前状态并建议下一步行动

  7. 实施特定组件:

    Let's implement the task completion endpoint for our Todo app
    
  8. Claude将检索相关上下文并提供一致的实现

使用语义搜索

通过LlamaIndex集成,您现在可以使用更自然的语言来查找组件:

Find me all code related to handling task completion

Claude将使用语义搜索来查找相关组件,即使它们没有明确包含“任务完成”一词。

运行LlamaIndex演示

我们包含了一个演示脚本来展示语义功能:

# Activate your virtual environment
source .venv/bin/activate  # or source venv/bin/activate

# Run the demo
python examples/llama_index_demo.py

这将演示如何分析日历应用程序并执行功能的语义搜索。

贡献

欢迎投稿!请随时提交拉取请求。

许可证

此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。