MCPコード分析
AI 支援によるコード理解と変換のためにモデル コンテキスト プロトコル (MCP) を活用する強力なコードベース分析ツールキットです。
特徴
コード分析: 抽象構文木を使用してコードベースを解析および分析します
コンテキスト生成: AIモデルのための豊富なコンテキスト情報を作成する
ツール統合: MCP SDK 上に構築され、シームレスな AI ツール統合を実現します。
拡張可能なアーキテクチャ: カスタムアナライザー用のプラグインベースのシステム
Related MCP server: MCP Codebase Insight
要件
Node.js 18歳以上
NPM 9+
Redis (オプション、本番環境でのみ必要)
インストール
# Clone the repository
git clone https://github.com/yourusername/mcp-codeanalysis.git
cd mcp-codeanalysis
# Install dependencies
npm install
# Build the project
npm run buildRedis の設定 (オプション)
Redisは本番環境でのセッションストレージとして使用されます。開発およびテスト環境では、Redisが利用できない場合、システムは自動的にメモリ内セッションストアにフォールバックします。
注:Redisの接続性に関して、Redisが稼働している場合でも操作が失敗する可能性があるという既知の問題があります。詳細は
plan.mdの「技術的負債」セクションをご覧ください。現時点では、./use-memory-session.shuse-memory-session.shスクリプトを使用して、メモリセッションストアでサーバーを実行できます。詳細については、 Redisトラブルシューティングガイドをご覧ください。
Redis をインストールするには:
# Ubuntu/Debian
sudo apt-get install redis-server
# macOS
brew install redis
# Windows (using WSL is recommended)
# For native Windows, download from https://redis.io/downloadデフォルトでは、アプリケーションはredis://localhost:6379にあるRedisへの接続を試みます。環境変数を使用してRedis接続を設定できます。
# Set custom Redis URL
export REDIS_URL=redis://custom-host:6379
# Force memory session store even if Redis is available
export FORCE_MEMORY_SESSION=true発達
# Run in development mode
npm run dev
# Run tests
npm test
# Run linting
npm run lint使用法
# Start the MCP server
npm start
# Run CLI tool
node ./tools/mcp-stdio-client.js --task "Analyze dependencies" --files "src/*.ts"ドキュメント
ライセンス
マサチューセッツ工科大学
コード分析 MCP サーバー
拡張可能なアーキテクチャを通じてツールと洞察を提供し、高度なコード分析を実現する包括的なモデル コンテキスト プロトコル (MCP) サーバーです。
🚀 機能
基本的なコード解析:構文と構造の解析
コードメトリクス: 複雑さ、行数、コード品質メトリクス
依存関係分析:パッケージとインポートの関係の可視化
ナレッジグラフ: コード関係の視覚化とクエリ
メモリシステム: コードベースに関する洞察を保存および取得する
視覚化: 複数の形式 (Mermaid、DOT、ASCII) で図を生成します
社会技術分析:チームとコードの関係を理解する
マルチリポジトリ分析:リポジトリ間の関係分析
進化計画: コード改善の推奨事項
ライブウォッチング: コードの変更をリアルタイムで監視
IDE統合: エディター統合のためのツール
開発者ツール: AI支援開発ワークフローのサポート強化
📋 前提条件
Node.js 18歳以上
npmまたはyarn
Redis (開発ではオプション、本番環境では推奨)
🛠️ インストール
# Clone the repository
git clone https://github.com/your-username/codeanalysis-mcp.git
cd codeanalysis-mcp
# Install dependencies
pnpm install
# Build the project
pnpm build🖥️ 使用方法
CodeAnalysis MCP サーバーは、次の 2 つの方法で使用できます。
1. MCPサーバーとして
# Start the MCP server
pnpm startこれにより、Claude Desktop、Cursor などの任意の MCP クライアントが接続できる MCP サーバーが起動します。
2. CLIの使用
このプロジェクトには、直接対話するための包括的な CLI が含まれています。
# Get help
pnpm run cli --help
# Analyze a repository or directory
pnpm run cli analyze repo ./src
# Check code quality
pnpm run cli quality analyze ./src3. AI支援開発のための開発ツールの使用
このプロジェクトには、AI 支援開発を強化するために設計された特別なツールが含まれています。
# Generate code context for AI assistants
node tools/ai-dev-helper.js --task="Implement new feature" --search="related functionality"
# Run example client
node examples/dev-tools-client.js詳細については、開発者ツール ガイドを参照してください。
📊 コマンド例
基本分析
# Analyze a local directory
pnpm run cli analyze repo ./src
# Analyze a specific file
pnpm run cli analyze file ./src/server.tsコードメトリクス
# Get code metrics with function details
pnpm run cli metrics analyze ./src --functions
# Save metrics to a file
pnpm run cli metrics analyze ./src -o metrics-report.json依存関係分析
# Analyze dependencies in Mermaid format
pnpm run cli dependencies analyze ./src -f mermaid -o deps.mmd
# Visualize dependencies
pnpm run cli visualize dependencies -p ./src --format mermaidコード品質
# Run quality analysis
pnpm run cli quality analyze ./src
# Generate HTML report
pnpm run cli quality analyze ./src --html -o quality-report.htmlナレッジグラフ
# Build knowledge graph
pnpm run cli knowledge build ./src
# Query the knowledge graph
pnpm run cli knowledge query ./src "type:function AND complexity>5"
# Export as diagram
pnpm run cli knowledge export ./src -f mermaid洞察力と記憶
# Store an insight
pnpm run cli insights store -r ./src -t code-pattern -c "Refactoring opportunity"
# Retrieve insights
pnpm run cli insights retrieve -r ./src開発者ツール
# Prepare context for AI interactions
node tools/ai-dev-helper.js --task="Fix authentication bug" --files="src/auth/*.ts" --search="login"
# Use with AI prompts
# Copy content from the generated ai-context.json file into your AI assistant prompt
# or use the template in templates/ai-prompt-template.md🏗️ 建築
このプロジェクトは、次のコンポーネントを含む MCP アーキテクチャに従います。
MCP サーバー: MCP プロトコルを使用したコア サーバーの実装
分析機能: モジュール式コード分析機能
CLI : 直接対話するためのコマンドラインインターフェース
トランスポート層: 通信メカニズム (デフォルトは stdio)
🔌 MCPクライアントとの統合
このサーバーは、以下を含むあらゆる MCP 準拠クライアントと互換性があります。
クロードデスクトップアプリ
カーソルエディター
続く
その他のMCP互換ツール
📝 パスの指定
コマンドはさまざまな形式のパスを受け入れます:
ローカルディレクトリ:
./srcまたは/absolute/path/to/dirローカルファイル:
./src/file.tsまたは/path/to/file.tsリポジトリ URL:
https://github.com/username/repo
🤝 貢献する
貢献を歓迎します!お気軽にプルリクエストを送信してください。
📄 ライセンス
このプロジェクトは MIT ライセンスに基づいてライセンスされています - 詳細については LICENSE ファイルを参照してください。
MCP SDK 状態管理アーキテクチャ
このプロジェクトは、モデル コンテキスト プロトコル (MCP) SDK 用のステートフル ツールを実装し、呼び出し間のコンテキストを維持するツールを構築するためのフレームワークを提供します。
アーキテクチャの概要
状態管理アーキテクチャは、いくつかのモジュール コンポーネントで構成されています。
src/state/
├── helpers/
│ └── statefulTool.ts # Main entry point for stateful tool creation
├── machines/
│ └── toolMachine.ts # XState machine for tool execution flow
├── services/
│ ├── toolService.ts # Core execution service for tools
│ ├── redisToolExecutionService.ts # Distributed execution service
│ ├── redisSessionStore.ts # Redis-based session persistence
│ └── types.ts # Shared type definitionsコアコンポーネント
ステートフル ツール ヘルパー ( statefulTool.ts )
MCP SDK との中心的な統合ポイントであり、次の機能を提供します。
セッション管理によるツール登録
MCP準拠の応答フォーマット
インメモリセッション管理
セッションアクセスと操作のためのヘルパー関数
// Creating a stateful tool with state persistence
createStatefulTool(server, "my-tool", schema, handler);
// With description
createStatefulTool(server, "my-tool", "My stateful tool", schema, handler);ツールマシン ( toolMachine.ts )
ツールの実行フローを定義する XState ベースのステート マシン:
状態遷移 (アイドル、ツール選択、パラメータ設定、実行中など)
パラメータ、結果、履歴のコンテキスト管理
エラー処理と回復パス
このコンポーネントは、セッション管理を statefulTool 実装に委任します。
ツールサービス ( toolService.ts )
ツールの状態遷移を調整するコア実行サービス:
ツールの選択、パラメータの検証、実行を管理します
実行履歴を追跡する
実行結果とエラーを処理する
型 ( types.ts )
状態管理システム全体の一貫性を保証する共有型定義:
SessionData: ツールの状態を保存するための構造体
SessionStore: セッションストレージ実装のインターフェース
ExecutionResult: ツールの標準応答形式
MCP SDKとの統合
このアーキテクチャは、次の方法で MCP SDK と統合されます。
状態管理によるツール登録パターンの拡張
MCPの応答形式との互換性を維持する
ステートフル操作のためのセッションとコンテキストの追跡を提供する
使用例
import { createServer } from "@modelcontextprotocol/sdk";
import { createStatefulTool } from "./state/helpers/statefulTool";
import { z } from "zod";
const server = createServer();
// Register a stateful tool
createStatefulTool(
server,
"counter",
"A tool that maintains a count between invocations",
{
action: z.enum(["increment", "decrement", "reset"]),
},
async (params) => {
// Get session ID from params (or a new one will be created)
const sessionId = params.sessionId;
// Process the action
let count = 0;
// Tool logic with state manipulation...
return { count };
}
);
server.listen(3000);分散状態管理
分散環境の場合、Redis ベースの実装では以下が提供されます。
サーバーの再起動後もセッションが持続する
同時アクセスのための分散ロック
TTLベースのセッションクリーンアップ
ネットワーク/接続の問題に対するエラー処理
テスト
コンポーネントには、次のことを検証するための包括的なテスト スイートが含まれています。
ツールの状態遷移
セッション管理
エラー処理と回復
応答のフォーマット
分散操作(Redisを使用)
AI開発ツール
CodeAnalysis MCP Serverは、AI支援開発に特化したツールを提供します。これらのツールは、AIシステムに提供できるコードコンテキストを収集し、より効果的な支援を実現します。
クライアントスクリプト
リポジトリにはtools/ディレクトリにいくつかのクライアント スクリプトが含まれています。
HTTP クライアント(
tools/http-client.js): HTTP トランスポート経由で MCP サーバーに接続します (デフォルト)。node tools/http-client.js --task "Your task description" --files "src/features/*.ts" --search "session"Raw クライアント(
tools/mcp-raw-client.js): サーバー情報のみをキャプチャする、よりシンプルなクライアント。node tools/mcp-raw-client.js --task "Your task description"シンプル クライアント(
tools/simple-client.js): stdio 経由でサーバーと通信します。node tools/simple-client.js --task "Your task description" --files "src/features/*.ts"
すべてのクライアントスクリプトは、プロジェクトルートにai-context.jsonファイルを生成します。このファイルには、コードベースに関する貴重なコンテキストが含まれており、AIアシスタントと共有することで、より適切な応答を提供できます。
プロンプトテンプレート
AIアシスタント用のプロンプトテンプレートはtemplates/ai-prompt-template.mdで入手できます。このテンプレートは、MCPツールからの適切なコンテキストを使用して、AIアシスタントへのリクエストを構造化するのに役立ちます。
サーバートランスポートモード
MCP サーバーは、次の 2 つのトランスポート モードをサポートしています。
HTTPトランスポート(デフォルト):デフォルトではポート3000で実行されます。クライアントサーバーアーキテクチャに最適です。
stdioトランスポート:直接プロセス通信用。有効にするには
STDIO_TRANSPORT=true環境変数を設定します。
セッションストレージアーキテクチャ
MCP コード分析には、自動バックエンド検出機能を備えたモジュラー セッション ストア アーキテクチャが導入されました。
フレキシブルストレージ: Redisとメモリ内ストレージを自動的に切り替えます
開発フレンドリー: 開発中はRedisなしで実行
本番環境対応: 本番環境での永続化には Redis を使用します
自動フォールバック: Redis が利用できない場合はメモリ ストレージに正常にフォールバックします
詳細については、セッション ストア アーキテクチャのドキュメントを参照してください。
要件
Node.js 18歳以上
npmまたはyarn
Redis (開発ではオプション、本番環境では推奨)