Tech Debt Mcp について
Tech Debt Mcpは、開発者やコーディングエージェント向けに、14言語の技術的負債を調べるMCPサーバーです。コード検査、SQALE指標、カスタムルール、依存関係の棚卸しを備えています。
主な機能
- 0114言語のコード分析
- 02SQALE技術的負債指標の算出
- 03正規表現によるカスタムルール
- 0410のエコシステムの依存関係を検査
- 05問題の絞り込みと優先度付き提案
活用シーン
- 01プロジェクトの保守性問題を確認
- 02SQALE指標で技術的負債を評価
- 03依存関係マニフェストと一覧を確認
- 04プロジェクト固有のコードパターンを適用
MCP 対応
分析、フィルタリング、カスタムルール、依存関係、設定検証のツールと2つのリソースをMCPクライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
16掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| path | string | はい | プロジェクトルートディレクトリの絶対パス |
| languages | array | いいえ | 任意:分析する特定の言語 |
| categories | array | いいえ | 任意:負債カテゴリで絞り込み |
| severity | enum | いいえ | 任意:最小重大度レベルlow | medium | high | critical |
| maxFiles | integer | いいえ | 任意:分析するファイルの最大数(最小値:1) |
詳細
Tech Debt MCP サーバー
16 個のツール · 2 個のリソース · 14 言語 · 10 個の依存関係エコシステム
複数のプログラミング言語にわたる技術的負債を分析するための Model Context Protocol(MCP)サーバーです。GitHub Copilot、Claude、Cursor など、MCP 互換ツールとの連携を想定して設計されています。
特長
- 複数言語に対応:JavaScript、TypeScript、Python、Java、Swift、Kotlin、Objective-C、C++、C、C#、Go、Rust、Ruby、PHP
- 包括的な分析:コード品質の問題、セキュリティ上の脆弱性、保守性の問題など、さまざまな種類の技術的負債を検出します
- SQALE メトリクス:SQALE 評価システム(A〜E スケール)で技術的負債を算出します
- SwiftUI 分析:SwiftUI のパターン、状態管理、メモリリーク、ビューのネスト、並行処理の問題を専門的にチェックします
- カスタムルール:正規表現に対応したパターンベースのチェックを独自に定義できます
- 依存関係の分析:10 個のエコシステム(npm、pip、Maven/Gradle、Cargo、Go Modules、Composer、Bundler、NuGet、C/C++、Swift)のパッケージマニフェストを解析します
- インライン抑制:
// techdebt-ignore-next-lineまたはブロックコメントを使って誤検知を抑制できます - 設定の検証:
.techdebtrc.json設定ファイルがスキーマに準拠しているか検証します - 実用的な推奨事項:技術的負債への対処に向けた、優先順位付きの提案を提示します
- 柔軟なフィルタリング:重大度、カテゴリ、言語で結果を絞り込めます
- セキュリティ強化(v2.0.2):すべてのツールおよびリソースのパス入力でパストラバーサルを防止し、カスタムルールの正規表現を ReDoS から保護し、SwiftUI チェックで正規表現インジェクションをエスケープし、すべてのエラーメッセージで絶対パスを無害化します。また、プッシュおよび PR のたびに CodeQL SAST スキャンを実行します
対応言語
| 言語 | 拡張子 | 主なチェック項目 |
|---|---|---|
| JavaScript | .js, .mjs, .cjs, .jsx | console.log, debugger, eslint-disable, 動的コード実行の使用, var の使用 |
| TypeScript | .ts, .tsx, .mts, .cts | any 型, @ts-ignore, 非 null アサーション, 型アサーション |
| Python | .py, .pyw, .pyi | bare except, print 文, global の使用, 動的コード実行 |
| Java | .java | System.out, printStackTrace, 空の catch, @SuppressWarnings |
| Swift | .swift | 強制アンラップ (!), 強制キャスト (as!), 強制 try, リテインサイクル, SwiftUI のパターン |
| Kotlin | .kt, .kts | !!, lateinit の乱用, @Suppress, 未チェックのキャスト |
| Objective-C | .m, .mm, .h | NSLog, リテインサイクル, 非推奨メソッド, 巨大なビューコントローラー |
| C++ | .cpp, .cc, .hpp, .h | 生ポインター, C スタイルのキャスト, goto, using namespace std |
| C | .c, .h | free を伴わない malloc, goto, 安全でない関数, null チェック |
| C# | .cs | Console.WriteLine, async void, 空の catch, dispose パターン |
| Go | .go | 無視されたエラー, 空のインポート, fmt.Print, panic, グローバル変数 |
| Rust | .rs | unwrap, expect, unsafe, allow 属性, panic, println |
| Ruby | .rb | puts, binding.pry, rubocop disable, 動的コード実行, グローバル変数 |
| PHP | .php | var_dump, print_r, die/exit, 動的コード実行, エラー抑制 |
インストール
VS Code(ターミナル経由):
code --add-mcp '{"name":"tech-debt-mcp","command":"npx","args":["-y","tech-debt-mcp@latest"]}'
Cursor(ターミナル経由):
cursor --add-mcp '{"name":"tech-debt-mcp","command":"npx -y tech-debt-mcp@latest"}'
Claude Code(ターミナル経由):
claude mcp add tech-debt-mcp -- npx -y tech-debt-mcp@latest
Claude Desktop — claude_desktop_config.json に追加します:
{
"mcpServers": {
"tech-debt-mcp": {
"command": "npx",
"args": ["-y", "tech-debt-mcp@latest"]
}
}
}
Claude Code プラグイン — このリポジトリのマーケットプレイスを追加してから、プラグインをインストールします:
/plugin marketplace add PierreJanineh/TechDebtMCP
/plugin install tech-debt-mcp@techdebtmcp
プラグインは内部で npx -y tech-debt-mcp@latest を実行します。ソースのバンドルは不要で、公開済みの npm リリースが常に使用されます。プラグイン利用者向けドキュメント(インストール手順、トランスクリプトの例、セキュリティ方針)については、plugin/README.md を参照してください。
Claude Desktop MCPB バンドル — node_modules を同梱したワンクリックインストールです(npx は不要で、実行時のインターネット接続も必要ありません)。
最新の GitHub リリースから tech-debt-mcp-<version>.mcpb をダウンロードし、macOS または Windows 版の Claude で開きます。
バンドルをローカルでビルドするには:
npm install --include=dev --ignore-scripts
npm run mcpb:pack
# -> mcpb/tech-debt-mcp-<version>.mcpb
Windsurf の MCP 設定(~/.codeium/windsurf/mcp_config.json)に追加します:
{
"mcpServers": {
"tech-debt-mcp": {
"command": "npx",
"args": ["-y", "tech-debt-mcp@latest"]
}
}
}
AI Assistant 経由 — Settings > Tools > AI Assistant > Model Context Protocol (MCP) を開き、+ をクリックして As JSON を選択し、次を貼り付けます:
{
"mcpServers": {
"tech-debt-mcp": {
"command": "npx",
"args": ["-y", "tech-debt-mcp@latest"]
}
}
}
GitHub Copilot for Xcode 経由 — Settings > MCP tab > Edit Config (mcp.json) を開きます:
{
"servers": {
"tech-debt-mcp": {
"command": "npx",
"args": ["-y", "tech-debt-mcp@latest"]
}
}
}
手動セットアップ
MCP クライアントの設定に追加します:
{
"mcpServers": {
"tech-debt-mcp": {
"command": "npx",
"args": ["-y", "tech-debt-mcp@latest"]
}
}
}
開発時は npm run dev を実行します。
ツール
すべてのツールでツールアノテーションを宣言しています。Read ツールは副作用がなく(readOnlyHint: true)、Write ツールはサーバーセッションの状態を変更します(destructiveHint: true)。
| カテゴリ | ツール | 種別 | 説明 |
|---|---|---|---|
| 分析 | analyze_project | 読み取り | プロジェクト全体を分析します — 言語、カテゴリ、重大度、maxFiles で絞り込み可能 |
analyze_file | 読み取り | 単一ファイルを分析します | |
get_debt_summary | 読み取り | ヘルススコアと問題数を含む簡易サマリー | |
get_sqale_metrics | 読み取り | SQALE 評価、修正時間、負債比率、内訳 | |
| フィルタリング | get_recommendations | 読み取り | 優先順位付けされた修正提案(上限を設定可能) |
get_issues_by_severity | 読み取り | 重大度レベルで絞り込んだ問題 | |
get_issues_by_category | 読み取り | 負債カテゴリで絞り込んだ問題 | |
list_supported_languages | 読み取り | チェック項目を含むすべての言語 | |
| カスタムルール | add_custom_rule | 書き込み | 正規表現ベースの技術的負債ルールを追加します |
remove_custom_rule | 書き込み | ID でカスタムルールを削除します | |
list_session_custom_rules | 読み取り | このセッションで add_custom_rule を通じて追加されたルールを一覧表示します(.techdebtrc.json の customPatterns は含まれません) | |
execute_custom_rules | 読み取り | コードまたはファイルに対してカスタムルールを実行します | |
validate_custom_pattern | 読み取り | パターンを追加する前にテストします | |
| 依存関係 | check_dependencies | 読み取り | 10 のエコシステムにわたるパッケージマニフェストをスキャンします |
get_vulnerability_report | 読み取り | CVE レビュー用のオフライン依存関係インベントリ | |
validate_config | 読み取り | .techdebtrc.json スキーマを検証します |
全体で使用される負債カテゴリ: dependency · code-quality · architecture · documentation · testing · security · performance · maintainability
分析 — パラメーターリファレンス
| ツール | パラメーター | 型 | 必須 | 制約/デフォルト | 説明 |
|---|---|---|---|---|---|
analyze_project | path | string | ✓ | 絶対ファイルシステムパス | プロジェクトのルートディレクトリ |
languages | string[] | 特定の言語に絞り込みます | |||
categories | string[] | 上記のカテゴリを参照 | 負債カテゴリで絞り込みます | ||
severity | enum | low / medium / high / critical | 最低重大度レベル | ||
maxFiles | integer | 最小値:1 | 分析するファイル数の上限 | ||
analyze_file | path | string | ✓ | 絶対ファイルシステムパス | 分析するファイル |
get_debt_summary | path | string | ✓ | 絶対ファイルシステムパス | プロジェクトのルートディレクトリ |
get_sqale_metrics | path | string | ✓ | 絶対ファイルシステムパス | プロジェクトのルートディレクトリ |
developmentTime | number | 時間 | 負債比率の計算に用いる推定開発時間 |
get_sqale_metrics は、星による視覚表示を含む SQALE 評価(A-E)、修正に要する合計時間、負債比率、重大度別およびカテゴリ別の内訳を返します。
フィルタリング — パラメーターリファレンス
| ツール | パラメーター | 型 | 必須 | 制約/デフォルト | 説明 |
|---|---|---|---|---|---|
get_recommendations | path | string | ✓ | 絶対ファイルシステムパス | プロジェクトのルートディレクトリ |
limit | integer | デフォルト:5、最小値:1 | 返す推奨事項の最大数 | ||
get_issues_by_severity | path | string | ✓ | 絶対ファイルシステムパス | プロジェクトのルートディレクトリ |
severity | enum | ✓ | low / medium / high / critical | 絞り込みに使用する重大度 | |
get_issues_by_category | path | string | ✓ | 絶対ファイルシステムパス | プロジェクトのルートディレクトリ |
category | enum | ✓ | 上記のカテゴリを参照 | 絞り込みに使用する負債カテゴリ | |
list_supported_languages | — | — | — | — | パラメーターはありません |
カスタムルール — パラメーターリファレンス
| ツール | パラメーター | 型 | 必須 | 制約/デフォルト | 説明 | |------|-----------|------|:--------:|----------------------|-------------| | `add_custom_rule` | `id` | string | ✓ | | 一意のルール識別子 | | | `pattern` | string | ✓ | 最大1,000文字 | マッチさせる正規表現パターン | | | `message` | string | ✓ | | 問題のタイトル/メッセージ | | | `severity` | enum | ✓ | `low` / `medium` / `high` / `critical` | 重大度 | | | `category` | enum | ✓ | 上記のカテゴリを参照 | 技術的負債のカテゴリ | | | `suggestion` | string | | | 問題の修正方法 | | | `languages` | string[] | | | 特定の言語に限定 | | | `flags` | string | | 許可値:`d g i m s u v y`;`u` と `v` は相互に排他的 | 正規表現フラグ | | `remove_custom_rule` | `id` | string | ✓ | | 削除するルール ID | | `list_session_custom_rules` | — | — | — | — | パラメーターはありません。対象を明確にするため、`list_custom_rules` から名称を変更しました(TEC-51)。セッションに登録されたルールのみが対象です。 | | `execute_custom_rules` | `path` | string | ◐ | 絶対パス、最大500,000バイト | 分析するファイル | | | `code` | string | ◐ | 1~500,000文字 | 直接分析するソースコード | | | `language` | string | | サポートされている言語 ID であること(`list_supported_languages` と同じ一覧) | 言語でルールを絞り込み | | `validate_custom_pattern` | `id` | string | ✓ | | 一意のルール識別子 | | | `pattern` | string | ✓ | 最大1,000文字 | 検証する正規表現 | | | `message` | string | ✓ | | 問題のタイトル/メッセージ | | | `severity` | enum | ✓ | `low` / `medium` / `high` / `critical` | 重大度 | | | `category` | enum | ✓ | 上記のカテゴリを参照 | 技術的負債のカテゴリ |◐ execute_custom_rules では、path または code のいずれかが必要です。両方を必須とするものではありません。path に空文字列 "" を指定した場合は、フィールドを省略した場合と同じように扱われます。
依存関係 — パラメーターリファレンス
| ツール | パラメーター | 型 | 必須 | 制約/デフォルト | 説明 |
|---|---|---|---|---|---|
check_dependencies | path | string | ✓ | 絶対ファイルシステムパス | プロジェクトのルートディレクトリ |
includeDev | boolean | デフォルト:true | 開発/テスト用の依存関係を含める | ||
get_vulnerability_report | path | string | ✓ | 絶対ファイルシステムパス | プロジェクトのルートディレクトリ |
includeDev | boolean | デフォルト:false | 開発用の依存関係を含める | ||
validate_config | path | string | ✓ | 絶対ファイルシステムパス | プロジェクトのルートディレクトリまたは .techdebtrc.json への直接パス |
check_dependencies は、npm、pip、Maven/Gradle、Cargo、Go Modules、Composer、Bundler、NuGet、C/C++(CMakeLists.txt、conanfile.txt/py、vcpkg.json)、Swift Package Manager のマニフェストを検出します。get_vulnerability_report はオフラインで依存関係のインベントリを作成します。オンラインの CVE 検索の予定については、ROADMAP.md を参照してください。
リソース
2つの MCP リソースにより、読み取り専用の技術的負債データを JSON 形式で公開します。どちらも RFC 6570 URI テンプレート を使用します。{+projectPath} 構文は 予約展開 であり、絶対ファイルシステムパスに含まれる / 文字をパーセントエンコードせずに変数へ含めることができます。
| URI テンプレート | 説明 |
|---|---|
debt://summary/{+projectPath} | 健全性スコア、負債スコア、問題の件数、SQALE 指標 |
debt://issues/{+projectPath} | 技術的負債に関するすべての問題のフィルタリング可能な一覧。severity、category、limit のクエリパラメーターに対応 |
具体例 — {+projectPath} を絶対パスに置き換えてください。スラッシュが2つ並んでいる点に注意してください。テンプレート末尾の / とパス先頭の / が合わさって // になりますが、これは有効な URI 構文です。
debt://summary//Users/you/projects/myapp
debt://issues//Users/you/projects/myapp
debt://issues//Users/you/projects/myapp?severity=high&limit=50
debt://issues//Users/you/projects/myapp?category=security
対話的なテスト — ツールとリソースを試す最も簡単な方法は、MCP Inspector を使うことです。
npm run build
npx @modelcontextprotocol/inspector node dist/index.js
表示された URL を開き、Resources タブに切り替えて、絶対パスのプロジェクトパスを指定したテンプレート URI を読み取ってください。
設定
プロジェクトのルートに .techdebtrc.json ファイルを作成します。
{
"include": ["src/**", "lib/**"],
"ignore": ["vendor/**", "generated/**"],
"rules": {
"maxFileLines": 500,
"maxFunctionLines": 50,
"maxComplexity": 10,
"maxNestingDepth": 4
},
"severity": {
"todo-comment": "low",
"console-log": "medium"
},
"ruleExclusions": {
"debugger": ["**/src/analyzers/**"],
"ts-ignore": ["**/src/analyzers/**"]
},
"customPatterns": [
{
"id": "no-console-log",
"pattern": "console\\.log",
"severity": "low",
"category": "code-quality",
"message": "Remove console.log() statements",
"suggestion": "Use proper logging library instead",
"languages": ["javascript", "typescript"]
}
]
}
言語ごとの上書き
languageOverrides を使用して、言語ごとにルール、重大度、またはファイル拡張子を上書きします。キーには、有効なサポート対象言語の識別子を指定する必要があります。
{
"languageOverrides": {
"typescript": {
"rules": {
"maxFileLines": 800,
"maxFunctionLines": 80
},
"severity": {
"todo-comment": "high"
}
},
"python": {
"extensions": [".pyx"],
"rules": {
"maxComplexity": 15
}
}
}
}
rules— 言語ごとのしきい値です(一致するファイルではトップレベルのrulesを上書きします)。severity— 言語ごとのルール重大度の上書きです。extensions— この言語に割り当てる追加のファイル拡張子です(デフォルト以外)。
ルールの除外
ruleExclusions を使用して、グロブパターンに一致するファイルに対する特定のルールを抑制します。パターンには、すべてのプラットフォームでスラッシュ(/)を使用します。パス形式にかかわらず確実に一致させるには、**/ で始まるパターン(例:**/src/analyzers/**)を使用します。
インライン抑制
ソースコード内で特定の問題を直接抑制します。すべての言語で、コメントの接頭辞として // と # の両方がサポートされています。
単一行 — 次の行を抑制します。
// techdebt-ignore-next-line debugger
debugger; // only the 'debugger' rule is suppressed
# techdebt-ignore-next-line print-statement
print("debug output") # will not be reported
ブロック — 開始行と終了行の間にあるすべての行を抑制します。
// techdebt-ignore-start ts-ignore
issues.push(...this.checkPattern(filePath, content, /@ts-ignore/g, { ... }));
// techdebt-ignore-end ts-ignore
ルール名を指定しない場合は、すべてのルールが抑制されます。ブロックは入れ子にできます。抑制コメントは単独の行に記述する必要があります。
カスタムルールの例
適用範囲に関する注意:
.techdebtrc.jsonで定義したcustomPatternsは、スキャン前にプロジェクト設定を読み込むanalyze_projectでのみ適用されます。analyze_fileは.techdebtrc.jsonを読み込まずに言語アナライザーを直接呼び出すため、この経路では設定で定義したパターンは適用されません。単一ファイルにカスタムパターンを適用するには、実行時にadd_custom_ruleを使用するか、execute_custom_rulesを直接呼び出してください。
.techdebtrc.json の customPatterns の下にパターンを定義するか、add_custom_rule MCP ツールを使って実行時に登録します。
{
"customPatterns": [
{
"id": "no-magic-numbers",
"pattern": "=\\s*\\d{3,}",
"severity": "medium",
"category": "maintainability",
"message": "Magic number detected",
"suggestion": "Extract to named constant"
},
{
"id": "forbidden-library",
"pattern": "import.*moment.*from",
"severity": "medium",
"category": "dependency",
"message": "moment.js is deprecated",
"suggestion": "Use native Date or date-fns instead",
"languages": ["javascript", "typescript"]
}
]
}
SQALE メトリクス
Tech Debt MCP では、SQALE 手法を使用して技術的負債を定量化します。
| 評価 | 負債比率 | 品質 |
|---|---|---|
| A | ≤5% | 優秀 |
| B | 6-10% | 良好 |
| C | 11-20% | 普通 |
| D | 21-50% | 不良 |
| E | >50% | 危険 |
作業時間の対応関係: ごく小(≤5m) · 小(5-30m) · 中(30m-2h) · 大(2-4h) · 特大(4h+)
SwiftUI 分析
SwiftUI アプリ向けの14種類の専用チェックを提供します。状態管理(過剰な @State、@ObservedObject の誤用、環境値の安全性)、メモリとライフサイクル(Combine の保持サイクル、タイマーのクリーンアップ、タスクのキャンセル、クロージャの保持サイクル)、パフォーマンス(.id() 修飾子の不足、body 内の負荷の高い計算、深いネスト、GeometryReader の誤用)、ベストプラクティス(AnyView による型消去、非推奨の NavigationLink、メインスレッドの安全性)を対象とします。
SwiftUI のすべてのチェック項目と例を表示
状態管理に関する問題
- 過剰な @State 変数 - ViewModel を使用すべき @State 変数が5個を超えるビューを検出します
- @ObservedObject の誤用 - 初期化時に @ObservedObject を使用している箇所を検出します(@StateObject を使用する必要があります)
- 環境値の安全性 - @Environment 値の強制アンラップを検出します
メモリとライフサイクル
- Combine の循環参照 - Combine の sink における [weak self] の不足を検出します
- タイマーのクリーンアップ不足 - onDisappear でクリーンアップされていない Timer を検出します
- タスクのキャンセル処理不足 - キャンセル処理のない非同期 Task を検出します
- クロージャの保持サイクル - [weak self] を指定せずに onChange/onReceive で self をキャプチャしている箇所を検出します
パフォーマンスとビュー階層
- .id() 修飾子の不足 - 安定した識別子のない ForEach を検出します
- View Body 内の負荷の高い計算 - View Body 内の reduce/sort/filter を検出します
- ビューの深いネスト - ネストの深さが6階層を超える場合に警告します
- GeometryReader の誤用 - ビューのルートにある GeometryReader を検出します
SwiftUI のベストプラクティス
- AnyView の型消去 - 代わりにジェネリクスまたは @ViewBuilder を使うことを提案します
- 非推奨の NavigationLink - 古い形式の NavigationLink パターンを検出します
- メインスレッドの安全性 - UI の更新がメインスレッドで行われるようにします
検出される問題の例
// Excessive @State - should use ViewModel
struct UserView: View {
@State private var firstName = ""
@State private var lastName = ""
@State private var email = ""
@State private var phone = ""
@State private var address = ""
@State private var city = "" // 6+ @State variables!
}
// @ObservedObject with initialization
struct ContentView: View {
@ObservedObject var viewModel = UserViewModel() // Should be @StateObject!
}
// Missing Timer cleanup
struct TimerView: View {
var body: some View {
Text("Hello")
.onAppear {
Timer.scheduledTimer(...) // Missing .onDisappear cleanup!
}
}
}
// Retain cycle in Combine
publisher
.sink { value in
self.updateUI(value) // Missing [weak self]!
}
出力例
# Tech Debt Analysis Report
## Health Score: 72/100
### Issues by Severity
| Severity | Count |
|----------|-------|
| Critical | 2 |
| High | 15 |
| Medium | 45 |
| Low | 120 |
## Top Recommendations
1. **Address Critical Issues Immediately**
Fix 2 critical security issues.
2. **Clean Up TODO/FIXME Comments**
Found 45 TODO comments - consider creating tracked issues.
コード品質
Tech Debt MCP は自らが推奨する実践を実行しています。AI 支援によるバイブコーディングで構築され、定期的に自身をスキャンすることで A 評価を維持しています。内部リファクタリング(例:ヘルパーの抽出による customRulesEngine.validatePattern のネスト削減 — #146)は、セルフスキャンで見つかった問題をもとに行われます。
セルフスキャン結果(v2.0.2、2026年4月)
- SQALE 評価: A(優秀)
- 負債スコア: 5/100(目標:≤5/100)
- 問題の合計: 13件(重大 0件、高 0件、中 6件、低 7件)
- 修正所要時間: 14時間
- 健全性スコア: 95/100
v2.0.2 のセキュリティ強化、
ruleExclusions設定、ネストのリファクタリング(#113、#118、#131、#146)、カスタムルールハンドラーの抽出(#145)により、v2.0.1 のベースラインである118件の問題/42.4の健全性から改善しました。残る負債:ネストのホットスポット5か所(server/core モジュール内に4か所、eslint.config.mjsに1か所)、システム境界での型アサーションの使用7件、非 null アサーション1件。問題ごとの詳細は TECH_DEBT_SCAN.md を参照してください。
開発
npm install --include=dev --ignore-scripts # Install dependencies (incl. devDependencies)
npm run typecheck # Type-check without emitting output
npm run lint # Lint source files
npm run build # Compile TypeScript
npm run dev # Run with ts-node
npm run watch # Watch mode
npm test # Run tests
ドキュメント
- ARCHITECTURE.md - システムアーキテクチャと設計パターン
- ROADMAP.md - 開発フェーズと今後の機能拡張
- CONTRIBUTING.md - 貢献ガイドライン
- CHANGELOG.md - バージョン履歴と変更内容
- RELEASE.md - リリース手順とバージョン管理ガイド
- TECH_DEBT_SCAN.md - 変更前後の比較を含むセルフスキャン結果
- CODE_OF_CONDUCT.md - コミュニティ基準
- PRIVACY.md - プライバシーポリシー(https://pierrejanineh.github.io/TechDebtMCP/privacy でも公開されています)
- plugin/README.md - プラグイン利用者向けドキュメント(インストール、トランスクリプト例、セキュリティ方針)
プライバシー
Tech Debt MCP はすべてお使いのマシン上で動作します。インストール後は、渡されたファイルを読み取り、ローカルの stdio トランスポート経由で MCP クライアントに問題を返すだけで、それ以外の処理は行いません。サーバー自体は外部ネットワークへの接続を行わず、テレメトリや分析機能もなく、サードパーティサービスも使用しません。npm/npx によるインストールでは、標準的なパッケージマネージャーの動作として npm レジストリに接続します。MCPB バンドルにはあらかじめインストールされており、それ以上のネットワークアクセスは不要です。詳細は PRIVACY.md、または公開ポリシー https://pierrejanineh.github.io/TechDebtMCP/privacy を参照してください。
貢献
貢献を歓迎します!ガイドラインについては CONTRIBUTING.md、コミュニティ基準については CODE_OF_CONDUCT.md をご覧ください。
リリース
- 最新:
- リリース: GitHub Releases
- ロードマップ: 予定されている機能については ROADMAP.md をご覧ください
- セキュリティ: キャプチャした文字列を
new RegExp()に埋め込む場合はescapeRegExp()(src/utils/regexUtils.ts)を使用する必要があります(issue #128 を参照)。ハンドラーの出力ではbasename()/getRelativePath()を使用し、意図的なメッセージに絶対ファイルシステムパスが漏れるのを防ぎます。また、ファイルシステム操作から取得した生のerr.message文字列は、クライアントに返す前にサニタイズされます(issue #129 を参照)
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。