sourcesage

by sarathsp06
Verified

local-only server

The server can only run on the client’s local machine because it depends on local resources.

Integrations

  • Stores knowledge about code entities, relationships, patterns, and style conventions from a codebase, with support for incremental updates when code changes.

  • Referenced for source code management and contributions, allowing users to clone the repository and submit pull requests.

SourceSage:LLM 的高效代码内存

SourceSage 是一款 MCP(模型上下文协议)服务器,能够高效地记忆代码库的关键要素——逻辑、代码风格和标准,同时支持动态更新和快速检索。它的设计与语言无关,充分利用了法学硕士 (LLM) 对多种语言代码的理解能力。

特征

  • 语言无关:适用于 LLM 理解的任何编程语言
  • 知识图谱存储:高效存储代码实体、关系、模式和样式约定
  • LLM 驱动分析:依靠 LLM 分析代码并提供见解
  • 令牌高效存储:优化最小令牌使用量,同时最大化内存容量
  • 增量更新:代码更改时更新知识,无需冗余存储
  • 快速检索:能够快速准确地检索相关信息

工作原理

SourceSage 采用了一种新颖的方法:

  1. LLM 分析代码文件(任何语言)
  2. LLM 使用 MCP 工具来注册实体、关系、模式和样式约定
  3. SourceSage 将这些知识存储在令牌高效的图形结构中
  4. LLM 可以在以后需要时查询这些知识

这种方法利用了 LLM 固有的语言理解能力,同时将 MCP 服务器的重点放在高效的内存管理上。

安装

# Clone the repository git clone https://github.com/yourusername/sourcesage.git cd sourcesage # Install the package pip install -e .

用法

运行 MCP 服务器

# Run the server sourcesage # Or run directly from the repository python -m sourcesage.mcp_server

连接到 Claude 桌面版

  1. 打开 Claude 桌面版
  2. 前往“设置”>“开发者”>“编辑配置”
  3. 将以下内容添加到您的claude_desktop_config.json中:

如果您已经安装了该软件包:

{ "mcpServers": { "sourcesage": { "command": "sourcesage", "args": [] } } }

如果您从本地目录运行而未安装:

{ "sourcesage": { "command": "uv", "args": [ "--directory", "/path/to/sourcesage", "run", "main.py" ] }, }
  1. 重启 Claude 桌面版

可用工具

SourceSage 提供以下 MCP 工具:

  1. register_entity :在知识图谱中注册代码实体
    Input: - name: Name of the entity (e.g., class name, function name) - entity_type: Type of entity (class, function, module, etc.) - summary: Brief description of the entity - signature: Entity signature (optional) - language: Programming language (optional) - observations: List of observations about the entity (optional) - metadata: Additional metadata (optional) Output: Confirmation message with entity ID
  2. register_relationship :注册实体之间的关系
    Input: - from_entity: Name of the source entity - to_entity: Name of the target entity - relationship_type: Type of relationship (calls, inherits, imports, etc.) - metadata: Additional metadata (optional) Output: Confirmation message with relationship ID
  3. register_pattern :注册代码模式
    Input: - name: Name of the pattern - description: Description of the pattern - language: Programming language (optional) - example: Example code demonstrating the pattern (optional) - metadata: Additional metadata (optional) Output: Confirmation message with pattern ID
  4. register_style_convention :注册编码风格约定
    Input: - name: Name of the convention - description: Description of the convention - language: Programming language (optional) - examples: Example code snippets demonstrating the convention (optional) - metadata: Additional metadata (optional) Output: Confirmation message with convention ID
  5. add_entity_observation :向实体添加观察
    Input: - entity_name: Name of the entity - observation: Observation to add Output: Confirmation message
  6. query_entities :查询知识图谱中的实体
    Input: - entity_type: Filter by entity type (optional) - language: Filter by programming language (optional) - name_pattern: Filter by name pattern (regex, optional) - limit: Maximum number of results to return (optional) Output: List of matching entities
  7. get_entity_details :获取实体的详细信息
    Input: - entity_name: Name of the entity Output: Detailed information about the entity
  8. query_patterns :知识图谱中的查询代码模式
    Input: - language: Filter by programming language (optional) - pattern_name: Filter by pattern name (optional) Output: List of matching patterns
  9. query_style_conventions :查询编码风格约定
    Input: - language: Filter by programming language (optional) - convention_name: Filter by convention name (optional) Output: List of matching style conventions
  10. get_knowledge_statistics :获取有关知识图谱的统计数据
Input: None Output: Statistics about the knowledge graph
  1. clear_knowledge :清除图中的所有知识
Input: None Output: Confirmation message

Claude 的示例工作流程

  1. 分析代码:让 Claude 分析你的代码文件
    "Please analyze this Python file and register the key entities and relationships."
  2. 注册实体:Claude 将使用 register_entity 工具来存储代码实体
    "I'll register the main class in this file."
  3. 注册关系:Claude 将使用 register_relationship 工具来存储关系
    "I'll register the inheritance relationship between these classes."
  4. 查询知识:稍后,向 Claude 询问你的代码库
    "What classes are defined in my codebase?" "Show me the details of the User class." "What's the relationship between the User and Profile classes?"
  5. 获取编码模式:向 Claude 询问编码模式
    "What design patterns are used in my codebase?" "Show me examples of the Factory pattern in my code."

有何不同

与传统的代码分析工具不同,SourceSage:

  1. 利用 LLM 理解:利用 LLM 的能力理解跨语言的代码语义
  2. 存储语义知识:关注意义和关系,而不仅仅是语法
  3. 与语言无关:可与 LLM 理解的任何编程语言配合使用
  4. 优化令牌效率:以最小化令牌使用的方式存储知识
  5. 随着 LLM 能力的提升而发展:随着 LLM 的进步,代码理解能力也在提升

贡献

欢迎贡献代码!欢迎提交 Pull 请求。

执照

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

-
security - not tested
A
license - permissive license
-
quality - not tested

SourceSage 是一款 MCP(模型上下文协议)服务器,能够高效地记忆代码库的关键要素——逻辑、代码风格和标准,同时支持动态更新和快速检索。它的设计与语言无关,充分利用了法学硕士 (LLM) 对多种语言代码的理解能力。

  1. Features
    1. How It Works
      1. Installation
        1. Usage
          1. Running the MCP Server
          2. Connecting to Claude for Desktop
          3. Available Tools
        2. Example Workflow with Claude
          1. How It's Different
            1. Contributing
              1. License
                ID: wnhfsg4ui5