MCP HubMCP Hub
스킬 목록으로 돌아가기

analyze-codebase-for-mcp

pjt222
업데이트됨 Yesterday
17
2
17
GitHub에서 보기
개발aiapimcp

정보

이 스킬은 코드베이스를 분석하여 MCP 도구로 노출하기 적합한 함수, API, 데이터 소스를 식별하고 구조화된 도구 명세를 생성합니다. 기존 프로젝트를 위한 MCP 서버를 계획할 때, 코드베이스를 AI 도구 인터페이스로 래핑하기 전에 감사할 때, 또는 이미 노출된 MCP 기능과 코드베이스의 역량을 비교할 때 사용됩니다. 결과물은 MCP 서버의 기반을 구축하는 데 필요한 도구 명세를 제공합니다.

빠른 설치

Claude Code

추천
기본
npx skills add pjt222/agent-almanac -a claude-code
플러그인 명령대체
/plugin add https://github.com/pjt222/agent-almanac
Git 클론대체
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/analyze-codebase-for-mcp

Claude Code에서 이 명령을 복사하여 붙여넣어 스킬을 설치하세요

문서

MCP向けコードベース分析

コードベースをスキャンして、MCPツール公開の候補となる関数、RESTエンドポイント、CLIコマンド、データアクセスパターンを発見し、構造化されたツール仕様書を作成する。

使用タイミング

  • 既存プロジェクトのMCPサーバーを計画しており、何を公開すべきか知る必要がある時
  • AI対応ツールサーフェスとしてラップする前にコードベースを監査する時
  • コードベースの機能とMCP経由で既に公開されている機能を比較する時
  • scaffold-mcp-serverに渡すツール仕様書を生成する時
  • サードパーティライブラリをMCPツールとしてラップする価値があるか評価する時

入力

  • 必須: コードベースのルートディレクトリへのパス
  • 必須: コードベースの対象言語(例: TypeScript、Python、R、Go)
  • 任意: 比較対象の既存MCPサーバーコード(ギャップ分析)
  • 任意: ドメインフォーカス(例: 「データ分析」「ファイル操作」「API統合」)
  • 任意: 推奨ツールの最大数(デフォルト: 20)

手順

ステップ1: コードベース構造をスキャンする

1.1. Globを使用してディレクトリツリーをマッピングし、ソースディレクトリに焦点を当てる:

  • src/**/*.{ts,js,py,R,go,rs} ソースファイル用
  • **/routes/****/api/****/controllers/** エンドポイント定義用
  • **/cli/****/commands/** CLIエントリポイント用
  • **/package.json**/setup.py**/DESCRIPTION 依存関係メタデータ用

1.2. ファイルを役割別に分類する:

  • エントリポイント: メインファイル、ルートハンドラー、CLIコマンド
  • コアロジック: ビジネスロジック関数、アルゴリズム、データトランスフォーマー
  • データアクセス: データベースクエリ、ファイルI/O、APIクライアント
  • ユーティリティ: ヘルパー、フォーマッター、バリデーター

1.3. 総ファイル数、コード行数、エクスポートされたシンボルを数えてプロジェクトの規模を把握する。

期待結果: 役割アノテーション付きの分類されたファイルインベントリ。

失敗時: コードベースが大きすぎる場合(10,000ファイル以上)、ドメインフォーカス入力を使用して特定のディレクトリやモジュールにスキャンを絞る。ソースファイルが見つからない場合、ルートパスと言語パラメータを確認する。

ステップ2: 公開された関数とエンドポイントを特定する

2.1. Grepを使用してエクスポートされた関数とパブリックAPIを見つける:

  • TypeScript/JavaScript: export (async )?functionexport defaultmodule.exports
  • Python: _プレフィックスのない関数、@app.route@router
  • R: NAMESPACEにリストされた関数または#' @export roxygenタグ
  • Go: 大文字で始まる関数名(規約によりエクスポート)

2.2. 各候補関数について以下を抽出する:

  • 名前: 関数名またはエンドポイント名
  • シグネチャ: 型とデフォルト値を含むパラメータ
  • 戻り値型: 関数が生成するもの
  • ドキュメント: docstring、JSDoc、roxygen、godoc
  • 場所: ファイルパスと行番号

2.3. REST APIについては追加で以下を抽出する:

  • HTTPメソッドとルートパターン
  • リクエストボディスキーマ
  • レスポンスの形状
  • 認証要件

2.4. 潜在的な有用性でソートされた候補リストを構築する(パブリック、ドキュメント済み、型付き関数を優先)。

期待結果: 抽出されたメタデータ付きの20-100個の候補関数/エンドポイントのリスト。

失敗時: 候補が少ない場合、パブリックにできる内部関数も含めて検索を広げる。ドキュメントが不足している場合、出力にリスクとしてフラグを立てる。

ステップ3: MCP適合性を評価する

3.1. 各候補について、MCPツール基準に対して評価する:

  • 入力契約の明確さ: パラメータは適切に型付けされドキュメント化されているか? JSON Schemaで記述できるか?
  • 出力の予測可能性: 関数は構造化データ(JSONシリアライズ可能)を返すか? 戻り値の形状は一貫しているか?
  • 副作用: 関数は状態を変更するか(ファイル、データベース、外部サービス)? 副作用は明確にラベル付けが必要。
  • 冪等性: 操作は安全にリトライできるか? 非冪等ツールは明示的な警告が必要。
  • 実行時間: 合理的なタイムアウト内(30秒未満)で完了するか? 長時間実行操作は非同期パターンが必要。
  • エラーハンドリング: 構造化エラーをスローするか、サイレントに失敗するか?

3.2. 各候補を1-5のスケールでスコアリングする:

  • 5: 純粋関数、型付きI/O、ドキュメント済み、高速、副作用なし
  • 4: 適切に型付けされドキュメント済み、軽微な副作用(例: ロギング)
  • 3: 合理的なI/O契約だがラッピングが必要(例: 生オブジェクトを返す)
  • 2: 重大な副作用または不明確な契約、大幅な適応が必要
  • 1: 大規模なリファクタリングなしには不適切

3.3. スコア3以上の候補にフィルタリングする。スコア2の項目はリファクタリングが必要な「将来の候補」としてフラグを立てる。

期待結果: 各候補の適合性根拠付きのスコアリングおよびフィルタリングされた候補リスト。

失敗時: ほとんどの候補が3未満のスコアの場合、MCP公開前にコードベースのリファクタリングが必要な可能性がある。ギャップを文書化し、具体的な改善(型の追加、純粋関数の抽出、副作用のラッピング)を推奨する。

ステップ4: ツール仕様を設計する

4.1. 選択された各候補(スコア >= 3)について、ツール仕様を起草する:

- name: tool_name
  description: >
    One-line description of what the tool does.
  source_function: module.function_name
  source_file: src/path/to/file.ts:42
  parameters:
    param_name:
      type: string | number | boolean | object | array
      description: What this parameter controls
      required: true | false
      default: value_if_optional
  returns:
    type: string | object | array
    description: What the tool returns
  side_effects:
    - description of any side effect
  estimated_latency: fast | medium | slow
  suitability_score: 5

4.2. ツールを論理的なカテゴリにグループ化する(例: 「データクエリ」「ファイル操作」「分析」「設定」)。

4.3. ツール間の依存関係を特定する(例: 「list_datasets」は「query_dataset」の前に呼ぶべき)。

4.4. ラッパーが必要なツールがあるか判断する:

  • 複雑なパラメータオブジェクトをフラットな入力に簡素化する
  • 生の戻り値を構造化テキストまたはJSONに変換する
  • 安全ガードを追加する(例: データベース関数の読み取り専用ラッパー)

期待結果: カテゴリ、依存関係、ラッパーノート付きの完全なYAMLツール仕様。

失敗時: ツール仕様が曖昧な場合、ステップ2に戻ってソースコードからより多くの詳細を抽出する。パラメータ型が推論できない場合、手動レビュー用にフラグを立てる。

ステップ5: ツール仕様書を生成する

5.1. 以下のセクションを含む最終仕様書を作成する:

  • サマリー: コードベースの概要、言語、規模、分析日
  • 推奨ツール: ステップ4のフル仕様、カテゴリ別にグループ化
  • 将来の候補: リファクタリング推奨付きのスコア2項目
  • 除外項目: 除外根拠付きのスコア1項目
  • 依存関係: ツール依存関係グラフ
  • 実装ノート: ラッパー要件、認証ニーズ、トランスポート推奨

5.2. mcp-tool-spec.yml(機械可読)として保存し、オプションでmcp-tool-spec.md(人間可読のサマリー)も保存する。

5.3. 既存のMCPサーバーが提供された場合、ギャップ分析セクションを含める:

  • 仕様にあるが未実装のツール
  • 実装されているが仕様にないツール(古い可能性あり)
  • 仕様のドリフトがあるツール(実装が仕様から乖離)

期待結果: scaffold-mcp-serverで利用可能な完全なツール仕様書。

失敗時: ドキュメントが合理的なサイズを超える場合(200ツール以上)、クロスリファレンス付きのモジュールに分割する。コードベースに適切な候補がない場合、代わりにリファクタリング推奨付きの「準備状況評価」ドキュメントを作成する。

バリデーション

  • 対象コードベースのすべてのソースファイルがスキャンされた
  • 候補関数の名前、シグネチャ、戻り値型が抽出されている
  • 各候補に記述された根拠付きの適合性スコアがある
  • ツール仕様に型付きの完全なパラメータスキーマが含まれている
  • すべてのツールの副作用が明示的に文書化されている
  • 出力ドキュメントが有効なYAMLである(任意のYAMLライブラリでパース可能)
  • ツール名がMCP規約に従っている(snake_case、記述的、一意)
  • カテゴリと依存関係が一貫したツールサーフェスを形成している
  • 既存MCPサーバーが提供された場合、ギャップ分析が含まれている
  • 将来の候補セクションにスコア2項目に必要なリファクタリング手順がリストされている

よくある落とし穴

  • ツールを公開しすぎる: AIアシスタントは10-30の集中したツールで最もよく機能する。深さよりも機能の幅を優先する。すべてのパブリック関数を公開する誘惑に抵抗する。
  • 副作用を無視する: 「読み取りのみ」だがログやキャッシュにも書き込む関数にはまだ副作用がある。Grepでファイル書き込み、ネットワーク呼び出し、データベース変更を注意深く監査する。
  • 型安全性を仮定する: 動的言語(Python、R、JavaScript)には型アノテーションのない関数がある可能性がある。使用パターンとテストから型を推論するが、仕様に不確実性をフラグとして立てる。
  • 認証コンテキストの欠落: 認証されたWebリクエストで動作する関数は、セッションコンテキストなしにMCP経由で呼ばれると失敗する可能性がある。セッションCookie、JWTトークン、環境注入された認証情報などの暗黙的な認証依存をチェックする。
  • ラッパーの過剰設計: 関数がMCP互換にするために50行のラッパーを必要とする場合、良い候補ではない可能性がある。ツールインターフェースに自然にマッピングされる関数を優先する。
  • エラーパスの軽視: MCPツールは構造化エラーを返す必要がある。型なし例外をスローする関数にはエラーハンドリングラッパーが必要。
  • 内部APIと外部APIの混同: 他の内部コードから呼ばれる内部ヘルパー関数はMCP候補として不適切。外部利用向けに設計された関数や明確な境界APIに焦点を当てる。
  • ギャップ分析のスキップ: 既存のMCPサーバーが提供された場合、常に仕様を現在の実装と比較する。ギャップ分析なしでは、作業の重複や古いツールの見落としのリスクがある。

関連スキル

  • scaffold-mcp-server - 出力仕様を使用して動作するMCPサーバーを生成する
  • build-custom-mcp-server - 手動サーバー実装のリファレンス
  • configure-mcp-server - 結果のサーバーをClaude Code/Desktopに接続する
  • troubleshoot-mcp-connection - サーバーデプロイ後の接続性をデバッグする
  • review-software-architecture - ツールサーフェス設計のアーキテクチャレビュー
  • security-audit-codebase - 関数を外部に公開する前のセキュリティ監査

GitHub 저장소

pjt222/agent-almanac
경로: i18n/ja/skills/analyze-codebase-for-mcp
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

연관 스킬

qmd

개발

qmd는 BM25, 벡터 임베딩, 재순위화를 결합한 하이브리드 검색을 통해 로컬 파일을 색인화하고 검색할 수 있는 로컬 검색 및 색인화 CLI 도구입니다. 명령줄 사용과 Claude 통합을 위한 MCP(Model Context Protocol) 모드를 모두 지원합니다. 이 도구는 임베딩에 Ollama를 사용하고 색인을 로컬에 저장하여 터미널에서 직접 문서나 코드베이스를 검색하는 데 이상적입니다.

스킬 보기

subagent-driven-development

개발

이 스킬은 각 독립적인 작업마다 새로운 하위 에이전트를 배치하고 작업 사이에 코드 리뷰를 진행하여 구현 계획을 실행합니다. 이 리뷰 프로세스를 통해 품질 게이트를 유지하면서 빠른 반복 작업을 가능하게 합니다. 동일한 세션 내에서 대부분 독립적인 작업을 진행할 때 내장된 품질 검증과 함께 지속적인 진행을 보장하기 위해 사용하세요.

스킬 보기

mcporter

개발

mcporter 스킬은 개발자가 Claude에서 직접 Model Context Protocol(MCP) 서버를 관리하고 호출할 수 있도록 합니다. 이 스킬은 사용 가능한 서버를 나열하고, 인수를 사용해 해당 서버의 도구를 호출하며, 인증 및 데몬 생명주기를 처리하는 명령어를 제공합니다. 개발 워크플로우에서 MCP 서버 기능을 통합하고 테스트할 때 이 스킬을 사용하세요.

스킬 보기

adk-deployment-specialist

개발

이 스킬은 A2A 프로토콜을 사용하여 Vertex AI ADK 에이전트를 배포하고 오케스트레이션하며, AgentCard 검색, 작업 제출, 코드 실행 샌드박스 및 메모리 뱅크와 같은 지원 도구를 관리합니다. Python, Java 또는 Go 언어로 순차, 병렬 또는 루프 오케스트레이션 패턴을 갖춘 다중 에이전트 시스템 구축을 가능하게 합니다. Google Cloud에서 ADK 에이전트 배포 또는 에이전트 워크플로우 오케스트레이션을 요청받았을 때 사용하세요.

스킬 보기