sourcesage

sourcesage

SourceSage 是一个 MCP(模型上下文协议)服务器,它可以高效地记忆代码库的关键方面——逻辑、风格和标准——同时允许动态更新和快速检索。它被设计为与语言无关,利用 LLM 对多种语言代码的理解。

Category
访问服务器

README

SourceSage: 面向 LLM 的高效代码记忆

<a href="https://glama.ai/mcp/servers/@sarathsp06/sourcesage"> <img width="380" height="200" src="https://glama.ai/mcp/servers/@sarathsp06/sourcesage/badge" /> </a>

SourceSage 是一个 MCP (模型上下文协议) 服务器,它可以高效地记忆代码库的关键方面——逻辑、风格和标准——同时允许动态更新和快速检索。它被设计为语言无关的,利用 LLM 对多种语言代码的理解。

特性

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

工作原理

SourceSage 使用一种新颖的方法,其中:

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

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

安装

# 克隆仓库
git clone https://github.com/yourusername/sourcesage.git
cd sourcesage

# 安装包
pip install -e .

使用

运行 MCP 服务器

# 运行服务器
sourcesage

# 或者直接从仓库运行
python -m sourcesage.mcp_server

连接到 Claude for Desktop

  1. 打开 Claude for Desktop
  2. 进入 Settings > Developer > Edit Config
  3. 将以下内容添加到您的 claude_desktop_config.json

如果您已安装该包:

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

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

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

可用工具

SourceSage 提供了以下 MCP 工具:

  1. register_entity: 在知识图谱中注册一个代码实体

    输入:
      - name: 实体名称(例如,类名、函数名)
      - entity_type: 实体类型(类、函数、模块等)
      - summary: 实体的简要描述
      - signature: 实体签名(可选)
      - language: 编程语言(可选)
      - observations: 关于实体的观察列表(可选)
      - metadata: 附加元数据(可选)
    输出: 带有实体 ID 的确认消息
    
  2. register_relationship: 注册实体之间的关系

    输入:
      - from_entity: 源实体的名称
      - to_entity: 目标实体的名称
      - relationship_type: 关系类型(调用、继承、导入等)
      - metadata: 附加元数据(可选)
    输出: 带有关系 ID 的确认消息
    
  3. register_pattern: 注册一个代码模式

    输入:
      - name: 模式名称
      - description: 模式描述
      - language: 编程语言(可选)
      - example: 演示该模式的示例代码(可选)
      - metadata: 附加元数据(可选)
    输出: 带有模式 ID 的确认消息
    
  4. register_style_convention: 注册一个编码风格约定

    输入:
      - name: 约定名称
      - description: 约定描述
      - language: 编程语言(可选)
      - examples: 演示该约定的示例代码片段(可选)
      - metadata: 附加元数据(可选)
    输出: 带有约定 ID 的确认消息
    
  5. add_entity_observation: 向实体添加观察

    输入:
      - entity_name: 实体名称
      - observation: 要添加的观察
    输出: 确认消息
    
  6. query_entities: 查询知识图谱中的实体

    输入:
      - entity_type: 按实体类型过滤(可选)
      - language: 按编程语言过滤(可选)
      - name_pattern: 按名称模式过滤(正则表达式,可选)
      - limit: 要返回的最大结果数(可选)
    输出: 匹配的实体列表
    
  7. get_entity_details: 获取有关实体的详细信息

    输入:
      - entity_name: 实体名称
    输出: 有关实体的详细信息
    
  8. query_patterns: 查询知识图谱中的代码模式

    输入:
      - language: 按编程语言过滤(可选)
      - pattern_name: 按模式名称过滤(可选)
    输出: 匹配的模式列表
    
  9. query_style_conventions: 查询编码风格约定

    输入:
      - language: 按编程语言过滤(可选)
      - convention_name: 按约定名称过滤(可选)
    输出: 匹配的风格约定列表
    
  10. get_knowledge_statistics: 获取有关知识图谱的统计信息

    输入: 无
    输出: 有关知识图谱的统计信息
    
  11. clear_knowledge: 清除图谱中的所有知识

    输入: 无
    输出: 确认消息
    

与 Claude 的示例工作流程

  1. 分析代码: 要求 Claude 分析您的代码文件

    "请分析这个 Python 文件并注册关键实体和关系。"
    
  2. 注册实体: Claude 将使用 register_entity 工具来存储代码实体

    "我将注册此文件中的主类。"
    
  3. 注册关系: Claude 将使用 register_relationship 工具来存储关系

    "我将注册这些类之间的继承关系。"
    
  4. 查询知识: 稍后,询问 Claude 关于您的代码库

    "我的代码库中定义了哪些类?"
    "显示 User 类的详细信息。"
    "User 类和 Profile 类之间有什么关系?"
    
  5. 获取编码模式: 询问 Claude 关于编码模式

    "我的代码库中使用了哪些设计模式?"
    "向我展示代码中 Factory 模式的示例。"
    

它的不同之处

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

  1. 利用 LLM 理解: 使用 LLM 理解跨语言代码语义的能力
  2. 存储语义知识: 专注于意义和关系,而不仅仅是语法
  3. 语言无关: 适用于 LLM 理解的任何编程语言
  4. 优化 Token 效率: 以最小化 token 使用的方式存储知识
  5. 随着 LLM 能力的发展而发展: 随着 LLM 的改进,代码理解也会提高

贡献

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

许可证

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

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选