MCP源关系服务器
单击功能区上 src 分析下属源代码的相关性MCP服务器。 分析每个语言的导入语句,确定文件之间的依赖关系。 Claude中Claude可以快速查看项目的依赖关系,有助于确定相关文件。
机能
- 支持多语言导入分析
- Types/JavaScript: import文、require文 - python import文、from ... import文 - 红宝石: require文、require_relative文 - 锈蚀: mod宣言、use文
- tsconfig.json路径别名(
@/components/...),模板名称将采用不同的格式 - 针对每种语言的特殊功能
- python __init__.py、相对导入 - 锈蚀: mod.rs模式 - TypeScript: 别名index.ts - Ruby: 无扩展名require
安装,安装
必要条件
- Python 3.10以上
- 紫外线
安装
# uvのインストール
$ curl -LsSf https://astral.sh/uv/install.sh | sh
$ cd /path/to/mcp-source-relation
# ライブラリのインストール
$ uv syncClaude for Desktop中的设置
claude_desktop_config.json 中添加以下设置:
{
"mcpServers": {
"source-relation": {
"command": "uv",
"args": [
"--directory",
"/path/to/mcp-source-relation", # このプロジェクトディレクトリの絶対パスに書き換えてください
"run",
"source_relation.py"
]
}
}
}使用方法
Claude在中使用
/Users/xxx/GitHub/xxx/ のソースの依存関係を確認して 像这样指示的话会动作
`/Users/owa/GitHub/mcp-source-relation/` のソースコードの依存関係を確認してみましょう。
依存関係の分析結果から、以下のような構造が確認できます:
1. メインの解析モジュール: `src/source_analyzer.py`
- 各言語固有の解析モジュールを利用しています(Ruby, Python, TypeScript, Rust)
2. 言語別の解析モジュール:
- `src/analyzers/ruby.py`
- `src/analyzers/python.py`
- `src/analyzers/typescript.py`
- `src/analyzers/rust.py`
- すべて `src/analyzers/base.py` を継承しています
3. 共通基盤:
- `src/analyzers/base.py`: 基本的な解析機能を提供
- `src/utils/path.py`: パス操作のユーティリティ
- `src/configs/typescript.py`: TypeScript固有の設定
特徴的な点:
- 各言語の解析モジュールは共通の基底クラス(base.py)を継承しており、一貫性のある設計になっています
- TypeScriptのみ独自の設定ファイル(configs/typescript.py)を持っています
- パス操作は共通のユーティリティモジュール(utils/path.py)に集約されています
この構造から、新しい言語のサポートを追加する場合は、`src/analyzers/` に新しいモジュールを追加し、`base.py` を継承することで実現できる設計になっていることがわかります。如果指定了目录,请单击下面的 src 分析目录 如果指定了文件,则基于该文件进行分析 prompt的路径输入 prompt中使用时Attach from MCP->Choose an integration->source-relation来修改标记元素的显示属性
出力形式
分析结果如下JSON格式输出:
{
"dependencies": {
"components/Button.tsx": [
"types/index.ts",
"utils/theme.ts"
],
"pages/index.tsx": [
"components/Button.tsx",
"utils/api.ts"
]
}
}所有路径src以目录为基准的相对路径显示。
支持的导入格式
Types/JavaScript
import { Component } from './Component'import type { Type } from '@/types'import './styles.css'require('./module')- 别名路径(
@/components/...)
python
import modulefrom module import namefrom .module import namefrom ..module import name
红宝石
require 'module'require_relative './module'- 无扩展名require
锈
mod module;use crate::module;use super::module;use self::module;
