code-scanner-server
コード ファイルの定義 (クラス、関数など) をスキャンし、.gitignore を尊重し、行番号を提供し、LLM 対応形式 (XML/Markdown) を出力する CLI ツールおよび MCP サーバー。
このプロジェクトは、TypeScriptとNode.jsで構築された多用途のコードスキャンツールを提供します。Tree-sitter解析ライブラリを活用してソースコードを解析し、構造情報を抽出します。コマンドラインインターフェース(CLI)ツールとしても、MCP(Model Context Protocol)サーバーとしても動作します。
**注:**このツールは現在開発中です。コア機能は動作しますが、一部の機能や特定の言語パーサーは完全にテストされておらず、バグや制限が含まれている可能性があります。
特徴
**コード定義の抽出:**関数、クラス、変数、インターフェース、メソッドなどを識別します。
多言語サポート: Tree-sitter を介して JavaScript (
.js、.jsx)、TypeScript (.ts、.tsx)、C# (.cs)、PHP (.php)、CSS (.css)、および Python (.py) を解析します。.gitignore 対応:
.gitignoreファイルで定義されたルールを自動的に尊重します。**柔軟なフィルタリング:**定義タイプ、修飾子 (
public、private)、名前パターン (正規表現)、およびファイル パス パターンで結果をフィルタリングします。複数の出力形式: Markdown (デフォルト)、XML、または JSON で結果を生成します。
**設定可能な詳細レベル:**出力の詳細度:
minimal、standard(デフォルト)、detailed。**デュアル モード操作:**スタンドアロン CLI ツールとして、または統合された MCP サーバーとして実行します。
Related MCP server: MCP-MultilspyLSP
使用モード
1. コマンドラインインターフェース(CLI)
ターミナルから直接スキャナーを実行します。このモードでは、ターゲットのコードベースを指定する--directory引数が必要です。
基本的な使用方法:
一般的なオプション:
-d, --directory <path>: (必須) スキャンするディレクトリへの絶対パスまたは相対パス。-p, --patterns <patterns...>: ファイル拡張子のglobパターン(例:"**/*.ts"``"**/*.js")。デフォルトはJS、TSX、CS、PHP、CSS、PYファイルです。-f, --format <format>: 出力形式(xml、markdown、json)。デフォルト:markdown。-l, --detail <level>: 詳細レベル(minimal、standard、detailed)。デフォルト:standard。--include-types <types...>: 特定の定義タイプ (例:class、method) のみを含めます。--exclude-types <types...>: 特定の定義タイプを除外します。--include-modifiers <modifiers...>: 特定の修飾子 (例:public) を持つ定義のみを含めます。--exclude-modifiers <modifiers...>: 特定の修飾子を持つ定義を除外します。--name-pattern <regex>: JavaScript 正規表現パターンに一致する定義を含めます。--exclude-name-pattern <regex>: JavaScript 正規表現パターンに一致する定義を除外します。--include-paths <paths...>: 含める追加のファイル パス パターン (glob)。--exclude-paths <paths...>: 除外するファイル パス パターン (glob)。-h, --help: すべてのオプションの詳細なヘルプ情報を表示します。
例 (
2. MCPサーバーモード( scan_codeツール)
--directory引数を指定せずに実行すると、ツールはMCPサーバーとして起動し、標準入出力を介してリクエストをリッスンします。これにより、AIアシスタントなどのMCPクライアントとの統合が可能になります。
ツール名:
scan_code**説明:**指定されたディレクトリでコード ファイルをスキャンし、指定されたフィルターに従って定義のリストを返します。
入力スキーマ: CLIオプションに対応する引数を受け入れます。
directoryプロパティは必須です。{ "type": "object", "properties": { "directory": { "type": "string", "description": "Absolute path to the directory to scan." }, "filePatterns": { "type": "array", "items": { "type": "string" }, "description": "Glob patterns for files.", "default": ["**/*.js", ..., "**/*.py"] }, "outputFormat": { "type": "string", "enum": ["xml", "markdown", "json"], "default": "markdown" }, "detailLevel": { "type": "string", "enum": ["minimal", "standard", "detailed"], "default": "standard" }, "includeTypes": { "type": "array", "items": { "type": "string" } }, "excludeTypes": { "type": "array", "items": { "type": "string" } }, "includeModifiers": { "type": "array", "items": { "type": "string" } }, "excludeModifiers": { "type": "array", "items": { "type": "string" } }, "namePattern": { "type": "string", "description": "Regex pattern for names." }, "excludeNamePattern": { "type": "string", "description": "Regex pattern to exclude names." }, "includePaths": { "type": "array", "items": { "type": "string" } }, "excludePaths": { "type": "array", "items": { "type": "string" } } }, "required": ["directory"] }AI アシスタントでの使用例: 「ディレクトリ /path/to/project で code-scanner-server scan_code を使用して、xml 形式を出力します。」
インストール
前提条件: Node.js と npm がインストールされていることを確認してください。
**クローン (オプション):**コードがない場合は、リポジトリをクローンします。
# git clone <repository_url> # cd code-scanner-server依存関係をインストールします:
npm installビルド: TypeScript コードをコンパイルします。
npm run buildこれにより
build/index.jsに実行可能な JavaScript ファイルが作成されます。
構成(MCP サーバー)
MCP サーバー モードを使用するには、MCP クライアントの構成ファイル (デスクトップ アプリの場合はclaude_desktop_config.json 、VS Code 拡張機能の場合はcline_mcp_settings.json ) に追加します。
重要:に置き換えてください。
例 (
変更を有効にするには、構成を変更した後、必ず MCP クライアント アプリケーション (IDE、デスクトップ アプリ) を再起動してください。
発達
**監視モード:**ソース ファイルが変更されたときにプロジェクトを自動的に再構築します。
npm run watchデバッグ(MCPモード): stdio経由のMCPサーバーのデバッグは複雑になる場合があります。MCP Inspectorツールを使用すると、デバッグが容易になります。
npm run inspectorこれにより、Node.js インスペクターがアタッチされた状態でサーバーが起動し、デバッグ ツール (Chrome DevTools など) に接続するための URL が提供されます。
謝辞
このプロジェクトは、主に Visual Studio Code の Roo Code 拡張機能を介してアクセスした Google の Gemini 2.5 Pro モデルを使用して、AI の支援を受けて大幅に開発されました。
ライセンス
このプロジェクトは、GNU General Public License v3.0 に基づいてライセンスされています。詳細については、 LICENSEファイルを参照してください。