MCP源码关系
分析指定目录中多种编程语言的源代码依赖关系,识别文件之间的关联,有助于依赖管理及项目结构的理解。
可用工具 (1 个)
该服务在 MCP 协议中暴露的工具,AI 可按需调用
get_source_relation 1 个参数 需填 1 项
Analyze dependencies between source files
必填参数:path
服务介绍
MCP Source Relation Server
这是一个MCP服务器,用于分析指定目录下src子目录中的源代码相关性。它通过解析各种语言的导入语句来确定文件间的依赖关系。将其集成到Claude中后,可以帮助Claude快速检查项目依赖关系,并识别相关的文件。
功能
- 支持多种语言的导入解析
- TypeScript/JavaScript:
import语句、require语句 - Python:
import语句、from ... import语句 - Ruby:
require语句、require_relative语句 - Rust:
mod声明、use语句
- TypeScript/JavaScript:
- 支持tsconfig.json中的路径别名(例如
@/components/...) - 支持每种语言特有的功能
- Python:
__init__.py、相对导入 - Rust:
mod.rs模式 - TypeScript: 别名、
index.ts - Ruby: 无扩展名的require
- Python:
设置
先决条件
- Python 3.10或更高版本
- uv
安装
# uvのインストール
$ curl -LsSf https://astral.sh/uv/install.sh | sh
$ cd /path/to/mcp-source-relation
# ライブラリのインストール
$ uv sync
在Claude 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目录显示为相对路径。
支持的导入形式
TypeScript/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
Ruby
require 'module'require_relative './module'- 无扩展名的require
Rust
mod module;use crate::module;use super::module;use self::module;