CodeAnalysis MCP Server

MCPコード分析

AI 支援によるコード理解と変換のためにモデル コンテキスト プロトコル (MCP) を活用する強力なコードベース分析ツールキットです。

特徴

  • コード分析: 抽象構文木を使用してコードベースを解析および分析します
  • コンテキスト生成: AIモデルのための豊富なコンテキスト情報を作成する
  • ツール統合: MCP SDK 上に構築され、シームレスな AI ツール統合を実現します。
  • 拡張可能なアーキテクチャ: カスタムアナライザー用のプラグインベースのシステム

要件

  • 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 build

Redis の設定 (オプション)

Redisは本番環境でのセッションストレージとして使用されます。開発およびテスト環境では、Redisが利用できない場合、システムは自動的にメモリ内セッションストアにフォールバックします。

:Redisの接続性に関して、Redisが稼働している場合でも操作が失敗する可能性があるという既知の問題があります。詳細はplan.mdの「技術的負債」セクションをご覧ください。現時点では、 ./use-memory-session.sh use-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 ./src

3. 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 アーキテクチャに従います。

  1. MCP サーバー: MCP プロトコルを使用したコア サーバーの実装
  2. 分析機能: モジュール式コード分析機能
  3. CLI : 直接対話するためのコマンドラインインターフェース
  4. トランスポート層: 通信メカニズム (デフォルトは 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 と統合されます。

  1. 状態管理によるツール登録パターンの拡張
  2. MCPの応答形式との互換性を維持する
  3. ステートフル操作のためのセッションとコンテキストの追跡を提供する

使用例

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 つのトランスポート モードをサポートしています。

  1. HTTPトランスポート(デフォルト):デフォルトではポート3000で実行されます。クライアントサーバーアーキテクチャに最適です。
  2. stdioトランスポート:直接プロセス通信用。有効にするにはSTDIO_TRANSPORT=true環境変数を設定します。

セッションストレージアーキテクチャ

MCP コード分析には、自動バックエンド検出機能を備えたモジュラー セッション ストア アーキテクチャが導入されました。

  • フレキシブルストレージ: Redisとメモリ内ストレージを自動的に切り替えます
  • 開発フレンドリー: 開発中はRedisなしで実行
  • 本番環境対応: 本番環境での永続化には Redis を使用します
  • 自動フォールバック: Redis が利用できない場合はメモリ ストレージに正常にフォールバックします

詳細については、セッション ストア アーキテクチャのドキュメントを参照してください。

要件

  • Node.js 18歳以上
  • npmまたはyarn
  • Redis (開発ではオプション、本番環境では推奨)
ID: 53hatn7080