MCP Source Relation Server
지정된 디렉토리의 src 아래의 소스 코드의 관련성을 해석하는 MCP 서버입니다. 언어별 가져오기 문을 구문 분석하여 파일 간 종속성을 확인합니다. Claude에 통합하면 Claude가 프로젝트 종속성을 신속하게 확인할 수 있으며 관련 파일을 식별하는 데 도움이 됩니다.
기능
다국어 가져오기 분석 지원
TypeScript/JavaScript:
import문,require문Python:
import문,from ... import문Ruby :
require문,require_relative문Rust:
mod선언,use문
tsconfig.json의 경로 별칭(
@/components/...등)에 대응언어별 특수 기능에 대응
Python:
__init__.py, 상대 가져오기Rust:
mod.rs패턴TypeScript: 별칭,
index.tsRuby: 확장자 없이 require
Related MCP server: DependencyMCP Server
설정
요건
파이썬 3.10 이상
uv
설치
# 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 디렉토리를 구문 분석합니다. Choose an integration source-relation Attach from MCP 합니다.
출력 형식
해석 결과는 다음과 같은 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/...)
파이썬
import modulefrom module import namefrom .module import namefrom ..module import name
루비
require 'module'require_relative './module'확장자 없이 require
Rust
mod module;use crate::module;use super::module;use self::module;