SourceSage 是一个MCP(模型上下文协议)服务器,它能够高效地记住代码库的关键方面——逻辑、风格和标准,并允许动态更新和快速检索。它设计为语言无关,利用LLM对多种语言代码的理解能力。
SourceSage 使用一种新颖的方法:
这种方法利用了LLM内在的语言理解能力,而将MCP服务器集中在高效的内存管理上。
# 克隆仓库
git clone https://github.com/yourusername/sourcesage.git
cd sourcesage
# 安装包
pip install -e .
# 运行服务器
sourcesage
# 或者直接从仓库运行
python -m sourcesage.mcp_server
claude_desktop_config.json 中添加以下内容:如果你已安装该包:
{
"mcpServers": {
"sourcesage": {
"command": "sourcesage",
"args": []
}
}
}
如果你是从本地目录运行而不安装:
{
"sourcesage": {
"command": "uv",
"args": [
"--directory",
"/path/to/sourcesage",
"run",
"main.py"
]
},
}
SourceSage 提供以下MCP工具:
register_entity:在知识图谱中注册一个代码实体
输入:
- name: 实体名称(例如类名、函数名)
- entity_type: 实体类型(类、函数、模块等)
- summary: 实体的简要描述
- signature: 实体签名(可选)
- language: 编程语言(可选)
- observations: 关于实体的观察列表(可选)
- metadata: 额外元数据(可选)
输出:带有实体ID的确认消息
register_relationship:注册实体之间的关系
输入:
- from_entity: 源实体名称
- to_entity: 目标实体名称
- relationship_type: 关系类型(调用、继承、导入等)
- metadata: 额外元数据(可选)
输出:带有关系ID的确认消息
register_pattern:注册一个代码模式
输入:
- name: 模式的名称
- description: 模式的描述
- language: 编程语言(可选)
- example: 展示该模式的示例代码(可选)
- metadata: 额外元数据(可选)
输出:带有模式ID的确认消息
register_style_convention:注册一个编码风格惯例
输入:
- name: 规定的名称
- description: 规定的描述
- language: 编程语言(可选)
- examples: 展示该规定的代码片段示例(可选)
- metadata: 额外元数据(可选)
输出:带有规定ID的确认消息
add_entity_observation:向实体添加一个观察
输入:
- entity_name: 实体名称
- observation: 要添加的观察
输出:确认消息
query_entities:查询知识图谱中的实体
输入:
- entity_type: 按实体类型过滤(可选)
- language: 按编程语言过滤(可选)
- name_pattern: 按名称模式过滤(正则表达式,可选)
- limit: 返回结果的最大数量(可选)
输出:匹配的实体列表
get_entity_details:获取实体的详细信息
输入:
- entity_name: 实体名称
输出:关于实体的详细信息
query_patterns:查询知识图谱中的代码模式
输入:
- language: 按编程语言过滤(可选)
- pattern_name: 按模式名称过滤(可选)
输出:匹配的模式列表
query_style_conventions:查询编码风格惯例
输入:
- language: 按编程语言过滤(可选)
- convention_name: 按惯例名称过滤(可选)
输出:匹配的风格惯例列表
get_knowledge_statistics:获取知识图谱的统计信息
输入:无
输出:关于知识图谱的统计信息
clear_knowledge:清除图谱中的所有知识
输入:无
输出:确认消息
分析代码:请求Claude分析你的代码文件
"请分析这个Python文件并注册关键实体和关系。"
注册实体:Claude将使用register_entity工具存储代码实体
"我将在文件中注册主类。"
注册关系:Claude将使用register_relationship工具存储关系
"我将在这些类之间注册继承关系。"
查询知识:稍后,询问Claude有关你的代码库的信息
"我的代码库中定义了哪些类?"
"显示User类的详细信息。"
"User和Profile类之间的关系是什么?"
获取编码模式:询问Claude有关编码模式的信息
"我的代码库中使用了哪些设计模式?"
"展示我在代码中使用的工厂模式示例。"
与传统的代码分析工具不同,SourceSage:
欢迎贡献!请随时提交Pull Request。
本项目采用MIT许可证 - 详情见LICENSE文件。