Groundtruth Mcp について
GroundTruthは、最新のライブラリドキュメントを取得し、記載された指針に基づいてコードを監査するセルフホスト可能なMCPサーバー兼CLIです。ライブラリの公式資料やリポジトリに基づく情報を必要とする開発者やコーディングエージェント向けです。
主な機能
- 01ライブラリの最新ドキュメント取得
- 02複数のパッケージレジストリでライブラリを検索
- 03修正リンク付きのソースコード監査
- 04ベストプラクティスと移行ガイドの検索
- 05互換性確認とライブラリ比較
- 06MCPツールとCLIコマンドを提供
活用シーン
- 01コーディング中に最新の指針を確認
- 02プロジェクト依存関係のベストプラクティスを調査
- 03コードの問題と文書に基づく修正方法を特定
- 04ライブラリのアップグレード前に変更を確認
MCP 対応
ドキュメント、検索、監査、互換性、移行などのツールに加え、リソースとプロンプトをMCPクライアントに公開します。同じ機能をCLIからも利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @groundtruth-mcp/gt-mcpGT_GITHUB_TOKENシークレットGitHub API token for higher rate limits (raises from 60 to 5000 req/hr)GT_CACHE_DIRDisk cache directory (default ~/.gt-mcp-cache)GT_LOG_LEVELLog level written to stderr: debug, info, warn or error (default info)ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
14掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| query | string | はい | プレーンテキストのユーザー意図。例:'use gt for react'、'find issues'、'migrate next from 14 to 15'、'best practices for fastapi'。 |
| projectPath | string | いいえ | プロジェクトレベルの意図(自動スキャン、監査)に使用する任意のプロジェクトディレクトリ。デフォルトは現在の作業ディレクトリです。 |
詳細
コーディングエージェントが求めたときに取得する、最新の公式ドキュメント。
GroundTruth は、セルフホスト可能な MCP サーバー兼コマンドラインツールです。モデルは学習時に得た情報をもとにコードを書くため、React 19 で ref が通常のプロパティになった後もコンポーネントを forwardRef でラップしたり、Next.js で非同期になった cookies() を同期的に呼び出したり、Tailwind v4 で @import "tailwindcss" に置き換えられた @tailwind ディレクティブを出力したりします。GroundTruth は、要求時にエージェントへライブラリ独自のドキュメントを提供します。llms.txt、Markdown として取得したドキュメントサイト、または GitHub リポジトリを読み込み、質問に答えるセクションを順位付けし、回答を返す前にトピックが網羅されているかを確認します。また、107以上のパターンでソースコードを監査し、検出事項ごとに現在の修正方法へのリンクを示します。お使いのマシン上で動作します。アカウントも API キーも不要で、独自のレート制限もありません。
インストール(60秒)
Node.js 24 以降が必要です。
Claude Code
claude mcp add gt -- npx -y @groundtruth-mcp/gt-mcp@latest
Cursor、Claude Desktop、Windsurf および mcpServers ブロックを使用するその他のクライアント(.cursor/mcp.json、claude_desktop_config.json、~/.codeium/windsurf/mcp_config.json):
{
"mcpServers": {
"gt": {
"command": "npx",
"args": ["-y", "@groundtruth-mcp/gt-mcp@latest"]
}
}
}
VS Code(.vscode/mcp.json):
{
"servers": {
"gt": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@groundtruth-mcp/gt-mcp@latest"]
}
}
}
その他の MCP クライアントでは、stdio サーバーとして npx -y @groundtruth-mcp/gt-mcp@latest を実行してください。
コマンドライン(同じツールを使用でき、MCP クライアントは不要です):
npm install -g @groundtruth-mcp/gt-mcp
gt-mcp bp nextjs caching
@latest を指定すると、npx は次回のセッション開始時に新しいリリースを取得します。新しいバージョンがある場合、ツールの応答に1行の通知が表示されます(GT_NO_UPDATE_CHECK=1 で確認を無効にできます)。
任意:GitHub トークン
GroundTruth は GitHub から README、リリースノート、移行ガイド、コード例を読み込みます。トークンがない場合、GitHub のリクエスト上限は1時間あたり60件です。追加のスコープを設定していないトークンを使うと、上限が5,000件になり、gt_examples でコード検索も利用できます。
claude mcp add gt -e GT_GITHUB_TOKEN=ghp_yourtoken -- npx -y @groundtruth-mcp/gt-mcp@latest
JSON 設定では、args の隣に "env": { "GT_GITHUB_TOKEN": "ghp_yourtoken" } を追加してください。
提供されるもの
14 個のツールがあります。それぞれ 1 つの役割を担い、CLI コマンドとしても使えます。
| ツール | CLI | 機能 |
|---|---|---|
gt_dispatch | ask | 「drizzle のマイグレーションに gt を使って」のような自然言語のリクエストを、適切なツールと引数に振り分けます |
gt_resolve_library | resolve | 名前でライブラリを検索し、見つからない場合は npm、PyPI、crates.io、Go モジュールを検索します |
gt_get_docs | docs | トピックごとの最新ドキュメントを取得します。ドキュメントの URL も指定できます |
gt_best_practices | bp | ライブラリのパターン、アンチパターン、設定ガイダンスを提供します |
gt_auto_scan | scan | マニフェストを読み込み、各依存関係のベストプラクティスを取得します |
gt_search | search | ライブラリに依存しないトピックを検索します。OWASP、MDN、web.dev、W3C、AI プロバイダーのドキュメント、Google APIs が対象です |
gt_audit | audit | ソースファイルをスキャンし、修正へのリンクとともに file:line 形式で問題を報告します |
gt_changelog | changelog | アップグレード前にリリースノートを確認できます |
gt_compat | compat | MDN browser-compat-data と caniuse に基づいて、ブラウザーとランタイムのサポート状況を確認できます |
gt_compare | compare | 2 つまたは 3 つのライブラリを並べて比較します |
gt_examples | examples | GitHub から実例のコードを取得します |
gt_migration | migrate | バージョン間のマイグレーションガイドと破壊的変更を確認できます |
gt_batch_resolve | batch | 1 回の呼び出しで最大 20 個のライブラリを解決します |
gt_snippets | snippets | ライブラリとバージョンごとにランキングされたコードスニペットを、ディスクにキャッシュします |
サーバーは 2 つの MCP リソース(library-registry、library-docs)と 8 つのプロンプト(audit-my-project、upgrade-check、best-practices-scan、compare-libraries、security-check、migration-guide、find-examples、dependency-audit)も公開します。
ツール名を知っている必要はありません。自然言語で尋ねてください。
use gt for nextjs
use gt for drizzle migrations
gt audit
use gt to check WCAG focus indicators
use gt for OpenTelemetry setup
find all issues and fix with gt
または、ツールを直接呼び出してください。
gt_resolve_library({ libraryName: "nestjs" })
gt_get_docs({ libraryId: "nestjs/nest", topic: "guards" })
gt_best_practices({ libraryId: "vercel/next.js", topic: "caching" })
gt_auto_scan({ projectPath: "." })
gt_search({ query: "OWASP SQL injection prevention" })
gt_audit({ projectPath: ".", categories: ["security", "accessibility"] })
gt_changelog({ libraryId: "vercel/next.js", version: "15" })
gt_compat({ feature: "CSS container queries", environments: ["safari"] })
gt_compare({ libraries: ["prisma", "drizzle-orm"], criteria: "TypeScript support" })
gt_examples({ library: "hono", pattern: "middleware" })
gt_audit
プロジェクトを確認し、18 カテゴリーにわたる 107 以上のパターンを実行して、各問題を file:line 形式で報告し、その後、信頼できる情報源から修正方法を取得します。
gt_audit({ categories: ["all"] }) // all 18 categories
gt_audit({ categories: ["security", "node"] }) // OWASP + Node.js
gt_audit({ categories: ["python", "security"] }) // Python OWASP scan
gt_audit({ categories: ["accessibility"] }) // WCAG AA
gt_audit({ categories: ["typescript", "react"] }) // type safety + React rules
| カテゴリー | チェック内容 |
|---|---|
security | XSS、SQL インジェクション、コマンドインジェクション、SSRF、パストラバーサル、ハードコードされた認証情報、CORS ワイルドカード |
accessibility | alt テキストの欠落、div への onClick、アイコンのみのボタン、ラベルのない入力、outline: none |
react | forwardRef(React 19)、useFormState の名称変更、key としての index、条件付きフック |
nextjs | 同期的な cookies/headers/params(Next.js 16)、Tailwind v3 ディレクティブ、メタデータの欠落 |
typescript | any 型、非 null アサーション、@ts-ignore、未処理の Promise |
performance | 遅延読み込みの欠落、useEffect によるデータ取得、Suspense 境界の欠落 |
layout | CLS の原因となる画像、モバイルでの 100vh、font-display の欠落 |
node | 本番環境での console.log、同期的な fs 操作、未処理のコールバック |
python | f-string による SQL インジェクション、eval/exec、subprocess の shell=True、pickle.loads |
| その他 | mobile、css、vue、svelte、angular、testing、seo、i18n、api |
出力例:
## [CRITICAL] SQL built via template literal
Category: security | Severity: critical | Count: 2
Fix: db.query('SELECT * FROM users WHERE id = $1', [userId])
Files:
- src/db/users.ts:47
- src/api/search.ts:23
Live fix: OWASP SQL Injection Prevention Cheat Sheet
gt_auto_scan
プロジェクトのルートを指定します。マニフェストとロックファイルを読み込んで、使用しているライブラリとそのバージョンを特定し、主要なライブラリから順にそれぞれのベストプラクティスを返します。デフォルトの出力は約 15K 文字です。
package.json、deno.json、requirements.txt、pyproject.toml、Cargo.toml、go.mod、pom.xml、build.gradle、build.gradle.kts、composer.json、Gemfile、pubspec.yaml を読み込みます。
gt_search
1 つのライブラリに該当しないものはすべて対象です。
| 分野 | トピック |
|---|---|
| セキュリティ | OWASP Top 10、SQL インジェクション、XSS/CSP、CSRF、HSTS、CORS、JWT、OAuth 2.1、WebAuthn、SSRF、API セキュリティ |
| アクセシビリティ | WCAG 2.2、WAI-ARIA、キーボードナビゲーション |
| パフォーマンス | Core Web Vitals、画像の最適化、Web フォント、Speculation Rules |
| Web API | Fetch、Workers、WebSocket、WebRTC、IndexedDB、Web Crypto、Intersection Observer |
| CSS | Grid、Flexbox、Container Queries、View Transitions、Cascade Layers、:has()、Subgrid |
| AI プロバイダー | Claude、OpenAI、Gemini、Mistral、Cohere、Groq、LangChain、LlamaIndex |
| Maps、Analytics、Ads、Cloud、Firebase、Vertex AI、YouTube、Gmail、Sheets | |
| インフラストラクチャ | Docker、Kubernetes、GitHub Actions、Terraform、Cloudflare Workers |
CLI
gt-mcp <command> は同じ 14 個のツールをプロセス内で実行し、回答を出力します。引数なしで実行した場合、gt-mcp はこれまでどおり stdio MCP サーバーになります。
gt-mcp docs react useEffect # live docs for one topic
gt-mcp bp nextjs caching # best practices
gt-mcp search "OWASP SSRF prevention"
gt-mcp audit . # audit the current project
gt-mcp scan . # best practices for every dependency
gt-mcp compat "CSS container queries"
gt-mcp ask "how do I paginate with drizzle" # let gt_dispatch pick the tool
gt-mcp call gt_compare '{"libraries":["prisma","drizzle-orm"]}'
echo '{"libraryName":"drizzle"}' | gt-mcp call gt_resolve_library -
| コマンド | 説明 |
|---|---|
tools | すべてのコマンド、そのツール、引数を一覧表示します(機械処理向けの出力には --json を指定します) |
call <tool> [<json>|-] | JSON 引数で任意のツールを呼び出します。- を指定すると stdin から読み込みます |
help [command] | ツールの入力スキーマから生成された、コマンドのフラグを表示します |
--json | テキストの代わりに、完全な CallToolResult を JSON として出力します |
終了コード:0 は成功、1 はツールエラー、2 は使用方法のエラーです。問題が発生しない限り、stderr にはログを出力しません(コマンドでは GT_LOG_LEVEL の既定値は warn です)。サーバーのフラグも引き続き使用できます:--version、--health、--routing-table、--help。
パフォーマンス
同一のハーネスを使用し、1 台のマシンで公開済みの 7.5.0 と 8.0.0 を測定しました。ネットワークの計測値は、接続環境とドキュメントサイトによって異なります。
| 測定項目 | 7.5.0 | 8.0.0 | 変化 |
|---|---|---|---|
gt-mcp --version | 1,130 ms、194 MB | 40 ms、54 MB | 28 倍高速 |
| 起動から MCP の準備完了まで | 1,074 ms | 186 ms | 5.8 倍高速 |
gt_best_practices Next.js キャッシュ、キャッシュなし | 6,893 ms | 259 ms | 27 倍高速 |
| 翌日の同じ呼び出し(キャッシュ経過時間 20 時間) | 6,684 ms | 92 ms | 73 倍高速 |
新しいセッションで gt_search を再実行 | 86 ms | 2 ms | 43 倍高速 |
セッションあたり、回答あたりのトークン数が減少します:
| 測定項目 | 7.5.0 | 8.0.0 |
|---|---|---|
tools/list、セッションごとに課金 | 23,638 バイト | 11,560 バイト(-51%) |
| ツールの説明 | -75% | |
| ドキュメントまたはベストプラクティスの回答あたりのワイヤーバイト数 | 半減(重複する structuredContent を削除) | |
gt_auto_scan の既定の出力 | 約 60K 文字 | 約 15K 文字 |
gt_dispatch の返信 | 2.7K 文字 | 0.9K 文字 |
テキストではなく structuredContent を表示するクライアントでは、回答のより多くの部分がモデルに届きます:
| ツール | 7.5.0 | 8.0.0 |
|---|---|---|
gt_compat | 220 文字 | サポート表全体 |
gt_examples | 142 文字 | 3.5K 文字 |
処理時間の内訳:バイナリはサーバーを遅延読み込みし、Node のコンパイルキャッシュを使用する小さなブートストラップです。ドキュメントページは Markdown としてリクエストされ、リーダーサービスはフォールバックとしてのみ使用されます。また、キャッシュ済みページは stale-while-revalidate 方式で提供されます。最長 7 日前のページをすぐに返し、バックグラウンドで更新します。
仕組み
- 解決。 ライブラリ名を、厳選されたレジストリ、次に npm、PyPI、crates.io、Go モジュールと照合します。
- キャッシュ。 エントリー数と文字数に上限を設けたインメモリ LRU を確認し、次に
~/.gt-mcp-cacheのディスクキャッシュを確認します。 - 取得。 ソースを順に試し、最初に見つかった有用なソースを使用します。
llms.txt/llms-full.txt。メンテナーが LLM 向けに公開しているファイルです。ネストされたllms.txtは、ライブラリ独自のインデックスを解決します。Accept: text/markdownによるコンテンツネゴシエーションを介した、Markdown 形式のドキュメントページ(サイトが対応している場合)。Next.js のキャッシュページは、HTML では 715 KB、Markdown では 16 KB です。- HTML ページを直接 Markdown に変換します。
- GitHub:README、ドキュメントファイル、リリース。GitHub でホストされているライブラリでは、GitHub 全体の
llms.txtではなく、ライブラリ独自の README を読み込みます。 - Jina リーダー。直接取得に失敗した場合、または 1.5 秒後に開始するヘッジ付きフォールバックです。
- サニタイズ。 プロンプトインジェクションフィルターと SSRF ガードを適用し、ナビゲーションや定型文を除去します。
- ランク付け。 BM25 で各セクションをトピックに照らしてスコア付けし、そのトピックに言及しているセクションでトークン予算を満たします。
- 確認。 エビデンスゲート(以下参照)が、回答でトピックをカバーしているかを判断します。
- 回答。 ランク付けされた抜粋を、ソース URL、取得日、トピックのカバー率とともに返します。
取得レイヤーは接続を 60 秒間維持し、同一の呼び出し元間で進行中のリクエストを 1 つに共有し、呼び出しごとのキャンセルと GT_TOOL_TIMEOUT_MS の期限を尊重します。また、404 とサイズ超過の本文をキャッシュして再試行を防ぎ、失敗が繰り返されたホストは一定時間スキップします。
勘ではなく、エビデンス
あらゆるドキュメントツールで起こりうる失敗は、自信満々に見当違いの回答をすることです。行レベルセキュリティについて尋ねたのに、ツールが Postgres のランディングページを返し、モデルがそこからもっともらしい内容を書いてしまいます。
GroundTruth は、取得したコンテンツを質問と照合してから返します。この確認では、トピックの用語がいくつ含まれるか、何回出現するか、見出しやコードブロック内にあるかを数えます。リンク先や URL のクエリ文字列はカウントしないため、ナビゲーションにたまたまトピックが含まれている 404 ページは合格しません。
- カバー率が低い場合は、最初に読み込めたページを返すのではなく、トピックを絞った取得をもう一度行います。
- カバー率がゼロの場合は、該当なしであることを明示して返します。 確認したソース、そのページが実際にカバーしている内容の概要、次に試すべきことが提示されます。これを真の否定として扱ってください。
- 成功した回答の末尾には必ず
## Evidenceフッターが付きます。 ソース URL、取得日、トピックのカバー率を示す数値が含まれるため、情報の出所を確認できます。
この確認は同義語を考慮します。rls に関するクエリは「row level security」と記載されたページで満たされます。また、「migration」を「upgrade guide」に展開して見つかったページも、文字どおりの単語がないことを理由に不合格にはなりません。
7.5.0 と 8.0.0 の精度:
| 確認項目 | 7.5.0 | 8.0.0 |
|---|---|---|
| 212 件の汎用クエリコーパスにおけるライブラリの誤検出数 | 94 | 0 |
| ライブラリコーパスでの正しい検出数 | 217 / 217 | |
| 14 個すべてのツールを対象としたライブ 23 項目マトリクス | 17 / 23 | 23 / 23 |
どちらのルーティングコーパスもテストスイートで実行されます。
カバレッジ
21 の言語エコシステムにわたる厳選された 793 のライブラリに加え、レジストリにないものはすべて npm、PyPI、crates.io、Go modules に自動的にフォールバックします。
リリース 8.0.0 では、Python、データ・AI ツール、Java、Kotlin と Spring、.NET、Go、Rust、Ruby、PHP、Swift、Dart と Flutter、Elixir、C と C++、インフラストラクチャ、データベース、オブザーバビリティ、さらに JavaScript と TypeScript のライブラリなど、195 のライブラリが追加されました。既存の 598 件すべてをライブで検証し、壊れていたドキュメントのルート 35 件を修正し、移転したドキュメントサイト 115 件を更新し、約 190 件の llms.txt インデックスを確認して追加しました。厳選した URL テーブル(2,638 件の URL)も再確認しました。
| エコシステム | 例 |
|---|---|
| JavaScript / TypeScript | Next.js、React、Tailwind CSS、shadcn/ui、TanStack Query、Zustand、Hono、NestJS、tRPC、Vite、Vitest、Playwright |
| Python | Django、FastAPI、Flask、Pydantic、SQLAlchemy、Celery、NumPy、Pandas、Polars、PyTorch、scikit-learn |
| Java / Kotlin | Spring Boot、Hibernate、Quarkus、Micronaut、Ktor、Jetpack Compose、JUnit、Mockito |
| .NET | ASP.NET Core、Entity Framework Core、.NET MAUI、xUnit.net、Serilog |
| Go / Rust | Gin、Echo、Fiber、GORM、Tokio、Axum、Actix Web、Serde、sqlx |
| Ruby / PHP / Elixir | Ruby on Rails、Sidekiq、RSpec、Laravel、Livewire、Symfony、Phoenix、Ecto、Oban |
| モバイル | Flutter、Riverpod、SwiftUI、Alamofire、React Native、Expo |
| C / C++ | CMake、Clang / LLVM、OpenCV、gRPC |
| データベース | PostgreSQL、Redis、MongoDB、SQLite、ClickHouse、Elasticsearch、Prisma、Drizzle ORM |
| インフラストラクチャ | Docker、Kubernetes、Helm、Terraform、Pulumi、Ansible、Cloudflare Workers |
| オブザーバビリティ | OpenTelemetry、Prometheus、Grafana、Grafana Loki、Sentry |
| AI | Claude API、OpenAI SDK、Gemini API、Vercel AI SDK、LangChain Python、HuggingFace Transformers |
完全な一覧は、レジストリのソースにあります:src/sources/registry.ts。
セキュリティ
GroundTruth は信頼できない Web コンテンツを取得してモデルに渡すため、取得経路を堅牢化しています。
- SSRF ガードは、プライベート、ループバック、リンクローカル、ULA の各範囲をブロックし、リダイレクト先もチェックします。IP リテラル URL は、
100.100.100.200とfd00:ec2::254のクラウドメタデータ、NAT64、6to4 を含む完全なブロックリストと照合します。 - プロンプトインジェクションサニタイザーは、スキャン前に HTML エンティティをデコードし、ゼロ幅文字と双方向テキスト制御文字を除去してから、オフセットマップを使って一致した範囲そのものをマスキングします。これはベストエフォートのパターンベースのマスキングです。取得したドキュメントは信頼できない入力として扱ってください。
- トークンは発行元のオリジンから外に出ません。 リダイレクトの場合も含め、
GT_GITHUB_TOKENとGT_JINA_API_KEYが別のオリジンに転送されることはありません。 - 監査パターンは ReDoS に安全です。 最悪ケースの入力処理時間は 9.5 秒から 1 ミリ秒になりました。
- HTTP モードはデフォルトで
127.0.0.1にバインドし、HostとOriginを検証し、ベアラートークンを定数時間で比較します。 - ユーザーデータはディスクに保存されません。 ディスクキャッシュに保存されるのは、ハッシュ化されたキーで管理される取得済みドキュメントであり、プロンプトやツール入力ではありません。
脆弱性は、GitHub Security Advisories を通じて非公開で報告してください。対象範囲と脅威モデルについては、SECURITY.md を参照してください。
HTTP と Docker
GT_HTTP_PORT を設定すると、GroundTruth は stdio の代わりに Streamable HTTP を提供します。MCP 仕様 2026-07-28 に準拠しており、2025 年頃のクライアントにも引き続き対応します。
| パス | 用途 |
|---|---|
/mcp | MCP エンドポイント(POST、GET、DELETE) |
/health | キャッシュディレクトリの確認を含むヘルス JSON |
/metrics | Prometheus メトリクス |
ローカルのみ、ループバック限定:
GT_HTTP_PORT=3100 npx -y @groundtruth-mcp/gt-mcp@latest
127.0.0.1 にバインドします。GT_AUTH_TOKEN がない場合は、ローカルからの呼び出しに対して認証なしで起動し、警告をログに出力します。トークンを設定すると、/health と /metrics を含むすべてのパスで Authorization: Bearer <token> が必要です。
Docker:
docker build -t gt-mcp .
export GT_AUTH_TOKEN="$(openssl rand -hex 32)"
docker run -d --name gt -p 127.0.0.1:3100:3100 -e GT_AUTH_TOKEN gt-mcp
claude mcp add --transport http gt http://localhost:3100/mcp --header "Authorization: Bearer $GT_AUTH_TOKEN"
イメージのサイズは 277 MB で、特権を持たない gt ユーザーとして実行され、コンテナ内では 0.0.0.0 にバインドされるため、GT_AUTH_TOKEN がないと起動しません。ヘルスチェックではトークンを送信します。-p 127.0.0.1: のプレフィックスを付けると、ホストのループバックにポートが限定されます。他のマシンにも公開する場合は、このプレフィックスを削除してください。
**リバースプロキシの背後で使用する場合:**サーバーは平文の HTTP を使用します。プロキシで TLS を終端し、公開ホスト名を GT_HTTP_ALLOWED_HOSTS に追加してください。そうしないと、そのホスト名を含むリクエストは 403 になります。ループバック以外にバインドする場合、GT_AUTH_TOKEN がないとサーバーは起動しません。
**セッション:**デフォルトではステートレスです。GT_HTTP_STATEFUL=1 を設定すると、2025 年頃のクライアントごとに専用セッションが作成され、リクエストがない状態が 30 分続くと終了します。
認証済みの呼び出し元は、サーバーに公開 URL を取得させたり、プロセスが読み取れる任意のディレクトリに対して gt_audit や gt_auto_scan を実行させたりできます。読み取られたくないものは、コンテナにマウントしないでください。
設定
すべての設定は任意です。数値や列挙値が無効な場合、暗黙に既定値へフォールバックせず、起動時にエラーになります。
| 変数 | デフォルト | 用途 |
|---|---|---|
GT_HTTP_PORT | 未設定 | このポートで Streamable HTTP 経由の MCP を提供します。stdio の代わりに使用します |
GT_HTTP_HOST | 127.0.0.1 | HTTP のバインドアドレス。ループバック以外のアドレスには GT_AUTH_TOKEN が必要です |
GT_HTTP_ALLOWED_HOSTS | 未設定 | HTTP サーバーが受け入れる追加の Host/Origin 値をカンマ区切りで指定します |
GT_HTTP_STATEFUL | 未設定 | 1 を指定すると、2025 年頃の HTTP クライアントごとに専用セッションを作成します |
GT_AUTH_TOKEN | 未設定 | /mcp、/health、/metrics で必要な Bearer トークン |
GT_GITHUB_TOKEN | 未設定 | GitHub API トークン。1 時間あたりのリクエスト数が 60 回から 5,000 回になり、gt_examples のコード検索が有効になります |
GT_JINA_API_KEY | 未設定 | Jina Reader キー。ページのレンダリングに匿名利用時のレート制限が適用されなくなります |
GT_CACHE_DIR | ~/.gt-mcp-cache | ディスクキャッシュのディレクトリ |
GT_CACHE_TTL_MS | 1800000 | デフォルトのキャッシュ有効期間 |
GT_SWR_STALE_TTL_MS | 3600000 | 有効期限切れ後もキャッシュ済みページを提供できる期間 |
GT_TOKEN_LIMIT | 8000 | デフォルトの回答サイズ(トークン数) |
GT_MAX_TOKEN_LIMIT | 20000 | 呼び出しで指定できる tokens 値の上限 |
GT_TOOL_TIMEOUT_MS | 55000 | ツール呼び出しごとの期限 |
GT_FETCH_TIMEOUT_MS | 15000 | 外部への HTTP リクエストごとのタイムアウト |
GT_MAX_CONCURRENT_FETCHES | 12 | 同時に実行できる外部リクエスト数 |
GT_CONCURRENCY | 8 | gt_auto_scan での並列ライブラリ取得数(最大 12) |
GT_DEEP_FETCH_MAX_PAGES | 8 | 最初のページでトピックが見つからない場合に読み込むリンク先ページ数 |
GT_DEEP_FETCH_RELEVANCE_THRESHOLD | 0.3 | 深掘り取得を省略する、最初のページのトピック関連度(0~1) |
GT_DEEP_FETCH_TIMEOUT_MS | 25000 | 深掘り取得 1 回あたりの時間予算 |
GT_CIRCUIT_BREAKER_THRESHOLD | 3 | ホストをスキップするまでの連続失敗回数 |
GT_CIRCUIT_BREAKER_RESET_MS | 60000 | 失敗中のホストをスキップする期間 |
GT_LOG_FORMAT | text | text または json。ログは stderr に出力されます |
GT_LOG_LEVEL | info(CLI コマンドでは warn) | debug、info、warn、error |
GT_NO_UPDATE_CHECK | 未設定 | 1 を指定すると、npm レジストリの更新チェックと通知を省略します |
GT_NO_WATERMARK | 未設定 | 1 を指定すると、通知行と不可視のウォーターマークを削除します |
NODE_DISABLE_COMPILE_CACHE | 未設定 | 1 を指定すると、ディスク上のコンパイルキャッシュを省略します |
gt-mcp --help を実行すると、同じ一覧が表示されます。
7.x からのアップグレード
8.0.0 には、互換性を破る変更が 4 つあります。Node 24 以降でテキストコンテンツを読み取る Stdio ユーザーは、いずれの影響も受けません。
| 変更 | 対応方法 |
|---|---|
HTTP モードのデフォルトのバインド先が 127.0.0.1 になりました(7.x ではすべてのインターフェースにバインド) | 外部に公開するには、GT_HTTP_HOST=0.0.0.0 と GT_AUTH_TOKEN を設定してください。Docker イメージではホストがすでに設定されているため、トークンが必要です。 |
Host または Origin が外部のリクエストは 403 になります | 公開ホスト名を GT_HTTP_ALLOWED_HOSTS に追加してください。 |
Prose ツールは structuredContent を返さなくなりました | テキストコンテンツを読み取ってください。回答全体が含まれています。gt_resolve_library、gt_batch_resolve、gt_dispatch は構造化された結果を引き続き返します。 |
| Node.js 24 以降 | Node をアップグレードしてください。 |
内部の変更点には、MCP TypeScript SDK v2(@modelcontextprotocol/server)、tools/list のキャッシュヒント、HTTP モードの修正(7.5.0 では最初の HTTP リクエストにしか応答しませんでした)もあります。本番環境の依存パッケージ数は 169(27 MB)から 13(7.7 MB)に減り、Docker イメージのサイズは 566 MB から 277 MB になりました。全変更一覧:CHANGELOG.md。
Context7 との比較
Context7 は優れた製品です。違いは次のとおりです。
| GroundTruth | Context7 | |
|---|---|---|
| ホスティング | セルフホスト可能(stdio)+ HTTP モード | クラウドバックエンド、ローカル MCP クライアント |
| レート制限 | なし | 月 1,000 件まで無料(5,000 件は 1 シートあたり $10) |
| トランスポート | Stdio + Streamable HTTP | Stdio + Streamable HTTP |
| ソースの優先順位 | llms.txt、Markdown ドキュメント、HTML、GitHub、リーダーによるフォールバック。クエリ時に取得 | 独自のクロールパイプラインを備えたベクターデータベース |
| 回答の検証 | すべてのトピッククエリにエビデンスゲートを適用。検証できない場合は明示的に見つからなかったと通知 | なし |
| ツール | 特化型ツール 14 個 | ツール 2 個 |
| コード監査 | 107 以上のパターン、18 カテゴリ、ファイルと行番号、ライブ修正 | なし |
| 自由形式検索 | OWASP、MDN、AI ドキュメント、Google API、ウェブ標準 | ライブラリのドキュメントのみ |
| 変更履歴、互換性、比較、例、移行 | あり | なし |
| MCP リソース+プロンプト | リソース 2 個、プロンプト 8 個 | なし |
| ロックファイルの検出 | ロックファイルから正確なバージョンを読み取り | なし |
| ライブラリ | 厳選された 793 以上+npm/PyPI/crates.io/Go へのフォールバック | 非公開(「数千」と主張) |
| API キーが必要 | いいえ | いいえ |
Context7 はドキュメントをベクターデータベースにインデックス化しており、高速ですが、新しいリリースへの追従には遅れがあります。GroundTruth はクエリ時にソースから取得し、そのトピックについて何も見つからなかった場合はモデルに伝えます。
貢献
ライブラリの追加は、id、name、docsUrl、およびプロジェクトが公開している場合は llmsTxtUrl を指定して、src/sources/registry.ts にプルリクエストを送ってください。
pnpm install
pnpm typecheck
pnpm test # 2063 tests across 267 files
pnpm build
CI では Node 24 と 26 でテストスイートを実行します。Issue やリクエストはこちら:github.com/rm-rf-prod/GroundTruth-MCP/issues。
リファレンス
| 項目 | 場所 |
|---|---|
| ツールのスキーマとパラメーター | 任意の MCP クライアントで tools/list、gt-mcp tools、または src/tools/ |
| ライブラリの全一覧 | src/sources/registry.ts |
| 監査ルール、18 カテゴリ | src/sources/audit-patterns.ts |
| ルーティングテーブル | gt-mcp --routing-table |
| ヘルス、テレメトリー、サーキットブレーカーの状態 | gt-mcp --health、または HTTP モードの /health |
| リリース履歴 | CHANGELOG.md |
Star 履歴
ライセンス
Elastic License 2.0。無料で使用、セルフホスト、拡張できます。できないことは、マネージドサービスとして提供することだけです。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。