Skip to main content
Glama

DevTwin MCP

AIコーディングエージェントに、ローカル開発環境のライブで構造化された理解を与えます。

DevTwin は Model Context Protocol (MCP) サーバーで、AI コーディングエージェントの中心的な問いに対して答えを返します: この開発者の環境はなぜ違うのか、壊れているのか、あるいは不健全なのか?

プロジェクトのテクノロジーを検出し、インストール済みランタイムのバージョンをプロジェクトが実際に要求するものと照合し、依存関係とロックファイルの状態を検査し、必要なローカルサービス (Postgres、Redis、...) を見つけてそれらが実行中かどうかを確認し、ポートと Git の状態をチェックし、それらすべてを構造化されたエビデンスベースの診断に変換します -- 環境をクラウドバックエンドに送信することも、シークレット値をモデルに公開することもありません。

目次

Related MCP server: devscope

DevTwin が存在する理由

  • AI コーディングエージェントはコードをよく読めますが、コードが実際に実行される環境に対しては盲目です。

  • 「npm test が自分のマシンで失敗するのはなぜ?」という問題は、通常コードとは無関係です -- Node のバージョン不一致、実行されていないサービス、またはインストールされていない依存関係が原因です。

  • DevTwin は、シニアエンジニアが手作業で収集するであろう同じシグナル -- node --version、git status、lsof -i :5432、docker ps -- を、推測ではなく構造化されたツール呼び出しとしてエージェントに提供します。

FAQ: Claude CLI にはすでにシェルがあるのに、なぜ MCP が必要なのか?

これは通常、開発者が最初に抱く質問であり、もっともな質問です。すでに Bash ツールを持つ Claude Code のようなクライアントでは、node --version、docker ps、lsof -i :5432 などを直接実行するよう依頼するだけでよく、MCP サーバーは不要です。DevTwin が埋めるギャップは「そもそもできるかどうか」ではなく、次の点です:

DevTwin なし (生の Bash)

DevTwin あり

エージェントは何でも実行でき、破壊的なコマンドでさえ、意図せず実行し得ます。

任意の実行はゼロ -- 読み取り専用/安全なチェックのみの固定許可リスト。 セキュリティモデル を参照。

セッションごとに異なる調査方法を選び、エコシステムのエッジケース (Gradle wrapper vs. システム Gradle、.nvmrc vs. package.json engines) を見逃す可能性があります。

すべてのエコシステムに対して、毎回同じ厳選されたテスト済みチェック。

cat .env のようなコマンドが、実際のシークレット値をそのまま会話に引き込む可能性があります。

構造的にシークレット値を返すことはありません -- 存在/不在のみ。 プライバシーモデル を参照。

シェルツールを持つクライアントでのみ機能します (Claude Desktop では不可、一部の IDE プラグインでも不可)。

シェルの有無にかかわらず、あらゆる MCP クライアントで機能します。

1 つの障害を診断するのに約 6 回の個別ラウンドトリップ。

1 回の呼び出し。 実例 を参照。

Claude CLI に特化した正直な回答: すでに Bash があるため、DevTwin の利点は「これまで持っていなかった機能」よりも小さく -- 安全性の保証と一貫した構造化出力であり、まったく新しいアクセスではありません。それが無料ではない理由でもあります -- 接続に実際にかかるコストと、それが価値を持つタイミングについては トークンコスト を参照してください。

採用前に検討する価値のある質問がさらにいくつかあります:

「これは手順が増えただけの doctor スクリプト (make doctor、bin/setup) ではないのか?」 概念的にはその通りです -- 成熟したリポジトリの多くはすでに手書きで 1 つ持っています。DevTwin の違いは、ほとんどのリポジトリにはそれがないこと、エコシステムごとに良いものを書くのは実際の作業であること、その出力は人間が読むプレーンテキストではなくエージェントが推論できる構造化 JSON であること、そして同じ 10 個のツールが、プロジェクトごとに独自の慣習と盲点を持つ特注スクリプトではなく、すべてのリポジトリで同一に機能することです。

「Claude / Claude Code でしか動かないのか?」 いいえ。DevTwin は標準の Model Context Protocol を話します -- あらゆる MCP 互換クライアント (Claude Desktop、Cursor、Windsurf など) が同じ方法で接続できます。Claude 固有のものは何もありません。

「依存しても安全か -- 積極的にメンテナンスされているか?」 Alpha ステータス であり、新しいプロジェクトです -- 依存するワークフローで信頼する前に、コードを読んでください (短いです)。他の新しい開発ツールの依存関係と同じように。

「間違ったことを提案したり、悪い推奨事項を自動的に実行したりする可能性はあるか?」 ここにあるツールは recommendations 文字列を実行しません -- それらはエージェント (またはあなた) が読んで判断するための単なるテキストです。dev_check だけが何かを実行する唯一のツールであり、それも固定許可リストに対して自身が認識したコマンドのみです -- セキュリティモデル を参照してください。

「ホームに電話したり、テレメトリをどこかに送信したりするのか?」 いいえ。独自のネットワーク呼び出しはゼロです -- ローカルファーストアーキテクチャ を参照してください。

「MCP サーバーに自分のマシンで何らかのコマンドを実行してほしくない。」 10 個のツールのうち 9 個は純粋に読み取り専用です (ファイル読み取り、バージョンチェック)。dev_check だけが何かを実行し、それも DevTwin 自身がプロジェクトファイルから認識し、許可リストに対してチェックし、shell=False とタイムアウト付きで実行するコマンドのみです -- それが正確に何を許可し、何を許可しないかは セキュリティモデル を参照してください。

利点

  • 誤診断の減少。 DevTwin がないと、障害をデバッグするエージェントはコードを読んで推測するしかなく、実際には Node のバージョン不一致や停止したデータベースが原因である問題に対して、コード修正を提案することがよくあります。DevTwin は推測ではなく真実を提供します。

  • 多数の呼び出しではなく 1 回の呼び出し。 単一の dev_health 呼び出しで、約 10 個の基盤となるチェック (ランタイムバージョン、依存関係の状態、サービス、ポート、Git) を 1 つの構造化されたスコア付き結果にまとめます -- エージェントが毎回 12 回の個別シェルラウンドトリップを行い、生の CLI 出力を解析する代わりに。

  • 毎回同じチェック。 エコシステムごとの正確なチェック (Gradle wrapper vs. システム Gradle、.nvmrc vs. package.json engines、...) は一度エンコードされるため、エージェントがたまたま実行しようと思いついたものに依存するのではなく、セッション間で診断が一貫します。

  • エージェントにシェルを渡すより安全。 任意のコマンド実行も、破壊的な操作も、決してありません -- セキュリティモデル を参照してください。

  • シークレットに触れることはありません。 シークレットに見える環境変数は存在の有無のみチェックされ、値が読み取られたり返されたりすることはありません -- プライバシーモデル を参照してください。

  • エージェントにシェルがない場所でも機能。 Bash ツールを持たない MCP クライアント (一部の IDE アシスタント、制限されたエージェント) でも、この機能をゼロではなく利用できます。

トークンコスト

推定ではなく実際の数値 -- このサーバー自身の MCP ツールスキーマ (mcp.list_tools()) と実際の dev_health() レスポンスから直接測定し、標準の約 4 文字 = 1 トークンの近似を使用しています。

トークンを消費するのは 2 つの異なるタイミングで、コストは大きく異なります:

タイミング

何が起こるか

コスト

クライアントが DevTwin に接続した瞬間

10 個すべてのツールスキーマ (名前、説明、パラメータ) が、そのセッションのすべてのリクエストに追加されます -- ツールが呼び出されるかどうかに関係なく。これは DevTwin に固有ではなく、あらゆる MCP サーバーに当てはまります。

毎ターン約 1,400 トークン

ツールが実際に呼び出されたときのみ

その 1 つのツールの JSON レスポンスがコンテキストに 1 回追加されます。

呼び出しあたり約 120〜200 トークン (見つかった問題の数によって異なります)

ツールごとのスキーマ内訳 (測定値):

ツール

スキーマサイズ

約トークン

dev_detect

440 chars

~110

dev_health

500 chars

~125

dev_drift

470 chars

~117

dev_explain_failure

793 chars

~198

dev_project_info

523 chars

~130

dev_dependencies

507 chars

~126

dev_services

507 chars

~126

dev_check

771 chars

~192

dev_prepare

645 chars

~161

dev_precommit

481 chars

~120

合計 (10 ツールすべて)

5,637 chars

約 1,400

正直な結論: 環境の問題にそれ以外触れないセッションでの単発の診断では、生の Bash の方が総トークン数で安くなることがあります -- 約 1,400 トークンの固定スキーマ税が、複数のシェルコマンドを 1 回の呼び出しに置き換えることによる節約を上回ることが多いためです。両側の実際の数値については、以下の比較例を参照してください。

DevTwin のケースは、1 つのセッションで環境に関する質問が増えるほど強くなります (固定税は一度だけ支払われ、以降の質問は DevTwin では約 150 トークン、生の Bash では毎回数百トークン以上) -- そしてその真の利点は生のトークン数ではなく、一貫性、安全性、そして Bash ツールを持たない MCP クライアントで動作することです。利点 と 正直なトレードオフ を参照してください。

実用的な意味: DevTwin はユーザー全体ではなくプロジェクトごとに登録し、固定税が実際に役立つセッションでのみ支払われるようにしてください -- 別のプロジェクトでの使用 を参照してください。

正直なトレードオフ

DevTwin は安定した環境での日常使用ツールではありません -- 書くすべての関数で「Postgres が実行中か」を再確認する必要は誰にもありません。これは非常時用ツールです: 特定の瞬間 (新規クローン、謎のビルド失敗、コミット直前) に高い価値を発揮し、それ以外の時間はアイドル状態です。それが意図された使用パターンであり、欠点ではありません。

  • トークンオーバーヘッドは、接続された瞬間から毎ターン支払われます。使用するかどうかに関係なくです -- 実際の測定値はトークンコストを参照してください。

  • 単発の質問でトークン数が必ずしも有利になるわけではありません。一貫性、安全性、シェルを持たないクライアントへの到達性で勝ります -- 利点を参照してください。

  • エージェントがすでに完全に管理下にあるリポジトリへのシェルアクセスを持ち、環境ドリフトがほとんどない場合、DevTwinはそこでは不要かもしれません。

  • DevTwinが最も力を発揮するのは、共有/オンボーディング用リポジトリ、信頼度が低いまたはシェルなしのエージェント設定、そして「何を確認すればいいのか」自体が難しいマルチエコシステムのモノレポです。

DevTwinあり vs. なし:具体例

エージェントに「npm test が失敗するのはなぜ?」と尋ね、実際の原因がNodeバージョンの不一致とPostgresが起動していないことだとします。

DevTwinなし(生のBashを使うエージェント)-- 正しい手順を1コマンドずつ推測する必要があります:

cat package.json                      # spot "engines": {"node": ">=20"}
node --version                        # v16.20.0 -- mismatch found
grep -i "pg\|postgres" package.json   # spot the Postgres dependency
cat .env                              # risk: may print a real secret into context
lsof -i :5432                         # nothing listening
docker ps                             # check if it's in a container instead

6回の往復、エージェントが自分で考え出さなければならない調査経路、ステップ4で会話に秘密情報が漏れる現実的なリスク、そしておよそ400〜800トークンのコマンド+出力テキスト(ファイルサイズや実行中のDockerコンテナ数によって変動)。

DevTwinありなら、1回の呼び出しで:

dev_health()
{
  "status": "error",
  "summary": "2 issues found: runtime drift, service down",
  "issues": [
    "Node 16.20.0 installed, project requires >=20 (from package.json engines)",
    "Postgres required (found in docker-compose.yml) but not running on 5432"
  ],
  "recommendations": [
    "nvm install 20 && nvm use 20",
    "docker compose up -d postgres"
  ]
}

同じ結論、応答は約150トークン -- さらに、そのターンですでに支払われている約1,400トークンの固定スキーマ税が加わります(トークンコストを参照)。6回の呼び出しが1回になり、秘密情報が漏れる可能性はゼロ、セッションごとに変わる自由形式の調査ではなく、毎回まったく同じキュレーション済みチェックが実行されます。

これで可能になる質問の例

  • 「開発環境をチェックして。」

  • 「Kotlinプロジェクトのビルドが失敗するのはなぜ?」

  • 「このリポジトリに対してNodeバージョンは正しい?」

  • 「アプリがPostgresに接続できないのはなぜ?」

  • 「環境がこのリポジトリの期待値からドリフトしていない?」

  • 「コミットする前に何を実行すべき?」

  • 「このリポジトリをクローンしたばかり -- 実行するには何が必要?」

言語別の例

サポートされているエコシステムごとに1行:実際に尋ねる質問、その回答のためにDevTwinがチェックする内容、dev_check が認識するテスト/ビルドコマンド。

エコシステム

質問の例

チェックされる内容

認識されるコマンド

Python

「このリポジトリにPythonバージョンは合っている?」

python/python3 と .python-version または pyproject.toml [project.requires-python] の比較;uv/pip/poetry/pipenv + ロックファイル

pytest、ruff check .、mypy .

Node.js

「npm test が失敗するのはなぜ?」

node と .nvmrc/.node-version/package.json engines の比較;npm/pnpm/yarn/bun + ロックファイル

npm test(または pnpm test/yarn test/bun test)、<mgr> run lint

JVM(Java + Kotlin + Android)

「新規クローン後にAndroidアプリがビルドできないのはなぜ?」

java/kotlinc バージョン;Gradleラッパーバージョンとインストール済みの比較;Mavenラッパー;Androidプロジェクトでは特に: ANDROID_HOME/ANDROID_SDK_ROOT、または local.properties の sdk.dir とそのパスが実際に存在するか

./gradlew test、./mvnw test

Go

「このリポジトリにGoバージョンは合っている?」

go と go.mod で要求されるバージョンの比較

go test ./...、go build ./...

Rust

「cargo build が失敗するのはなぜ?」

rustc と rust-toolchain[.toml] のチャンネルの比較

cargo test

.NET

「dotnet build が失敗するのはなぜ?」

dotnet SDKの存在とバージョン

dotnet test

Swift(iOS/macOS)

「iOSビルドが失敗するのはなぜ?」

swift/xcodebuild と Package.swift のtools-versionの比較;CocoaPods/SPMロックファイルの状態

swift test(SPMプロジェクトのみ)

Ruby

「bundle exec rspec が失敗するのはなぜ?」

ruby と .ruby-version の比較;Bundler + Gemfile.lock

bundle exec rspec、bundle exec rake test

PHP

「PHPアプリが起動に失敗するのはなぜ?」

php と composer.json の require.php の比較;Composer + composer.lock

composer test、vendor/bin/phpunit

汎用(フォールバック)

「このリポジトリは上記のどの言語にも該当しない -- 何がわかる?」

Makefile/Taskfile.yml/justfile/Dockerfile/composeサービス

make test、task test、just test

アーキテクチャ

1つのMCPサーバー、多数のエコシステムアダプター -- 言語ごとに別々のサーバーではありません。

MCP server -> core (workspace/detector/health/drift/diagnostics) ->
adapters (python/node/jvm/go/rust/dotnet/swift/ruby/php/generic) ->
system inspection (os/process/ports/env/fs/docker) ->
service detection (postgres/redis/generic)

詳細は docs/architecture.md を参照してください。新しい言語アダプターの追加方法:docs/adapters.md。

サポートされているエコシステム

エコシステム

検出元

チェックされるランタイム

パッケージマネージャー

Python

pyproject.toml、requirements.txt、uv.lock、poetry.lock、Pipfile、.python-version

python/python3

uv、pip、poetry、pipenv

Node.js

package.json、ロックファイル、.nvmrc、.node-version

node

npm、pnpm、yarn、bun

JVM(Java + Kotlin)

pom.xml、build.gradle[.kts]、.java/.kt ソース

java、kotlinc

Gradle(ラッパー対応)、Maven(ラッパー対応)

Go

go.mod、go.sum、go.work

go

go modules

Rust

Cargo.toml、rust-toolchain[.toml]

rustc

cargo

.NET

*.csproj/*.fsproj/*.vbproj、*.sln、global.json

dotnet

NuGet

Swift(iOS/macOS)

Package.swift、*.xcodeproj、*.xcworkspace、Podfile

swift、xcodebuild

SPM、CocoaPods

Ruby

Gemfile、*.gemspec、.ruby-version

ruby

Bundler

PHP

composer.json

php

Composer

汎用(フォールバック)

Makefile、Taskfile.yml、justfile、Dockerfile、composeファイル

--

make/task/just/docker

特定のアダプターに一致しないプロジェクトでも、汎用アダプターから有用な出力が得られます -- DevTwinは認識できないプロジェクトに対して何も返さないことはありません。

インストール

uv pip install devtwin-mcp
# or
pip install devtwin-mcp

このリポジトリのクローンに対するローカル開発については、docs/development.md を参照してください。

MCPクライアント設定

正確な設定構文はクライアントによって異なります -- お使いのクライアントのドキュメントを参照してください。一般的に、DevTwinはstdio MCPサーバーとして次のように起動されます:

{
  "mcpServers": {
    "devtwin": {
      "command": "devtwin"
    }
  }
}

クローンからのローカル開発用(パッケージをインストールしない場合):

{
  "mcpServers": {
    "devtwin": {
      "command": "uv",
      "args": ["run", "--directory", "/absolute/path/to/devtwin-mcp", "devtwin"]
    }
  }
}

MCP Inspectorでツールの検出を確認:

npx @modelcontextprotocol/inspector uv run devtwin

別のプロジェクトでの使用(他の開発者向け)

DevTwinは単一のバイナリです -- 任意の数のプロジェクトを同じインストールに向けることができ、プロジェクトごとの再インストールは不要です。2つのスコープがあります:

スコープ

読み込まれる場所

使用タイミング

プロジェクト(推奨デフォルト)

このリポジトリ内のみ

デフォルトの選択 -- 理由はトークンコストを参照

ユーザー

すべてのプロジェクト、すべてのセッション

ほとんどのリポジトリでDevTwinを使うようになったら

プロジェクトスコープ -- プロジェクトルートに .mcp.json を配置:

{
  "mcpServers": {
    "devtwin": {
      "command": "/absolute/path/to/devtwin-mcp/.venv/bin/devtwin"
    }
  }
}

またはClaude Code CLIを使用:

claude mcp add devtwin /absolute/path/to/devtwin-mcp/.venv/bin/devtwin --scope project

ユーザースコープ:

claude mcp add devtwin /absolute/path/to/devtwin-mcp/.venv/bin/devtwin --scope user

追加後、クライアントを再起動(またはMCPサーバーに再接続)してから、通常の質問をするだけです -- これで可能になる質問の例 を参照してください。

モノレポのヒント: 複数のプラットフォーム(例:Android + iOS + バックエンド)が混在するリポジトリでは、リポジトリルートではなく特定のサブフォルダーに向けて質問してください -- 例:「android/ アプリのヘルスをチェックして」。混在リポジトリのルートでの dev_detect は、見つかったすべてのエコシステムを報告します。これは一度は役立ちますが、対象を絞ったチェックにはノイズが多いです。

ツールリファレンス

すべてのツールは {status, summary, data, issues, recommendations} を返します。status は ok、warning、error、unknown のいずれかです。

Tool

Class

Description

dev_detect

read-only

証拠に基づく高速なファイルベースのプロジェクト/エコシステム検出。

dev_health

read-only

ランタイム、依存関係、サービス、Git 状態を組み合わせた 0〜100 の完全なヘルススコア。

dev_drift

read-only

必要なランタイム/ツールのバージョンと実際にインストールされているバージョンを比較します。

dev_explain_failure

read-only

指定されたエラーメッセージを、順位付けされた証拠に基づく根本原因に診断します。

dev_project_info

read-only

詳細なプロジェクト検査: ランタイム、ビルドツール、コマンド、OS、Git。

dev_dependencies

read-only

エコシステムごとの依存関係/ロックファイルの状態。

dev_services

read-only

必要なローカルサービス (Postgres、Redis、compose サービス) とその実行状態。

dev_check

safe execution

認識されたテスト/リントコマンド (例: pytest、./gradlew test) をタイムアウト付きで実行します。

dev_prepare

plans only

クローンしたばかりのリポジトリの準備計画を作成します。実行は一切行いません。

dev_precommit

read-only

コミット準備完了サマリー: Git 状態、ヘルス、ステージングされたシークレット風ファイル。

セキュリティモデル

  • 任意のコマンド実行はありません。 execute_shell ツールは存在しません。 dev_check は、DevTwin 自身がプロジェクトファイルから認識したコマンドのみを、 許可リストと照合し、shell=False と タイムアウト付きで実行します。

  • 破壊的な操作は一切行いません。 DevTwin は git reset --hard、 rm -rf、kill -9、docker compose down、ロックファイルの削除、 または .env の変更を決して実行しません。

  • dev_prepare は計画のみを行います。 提案されたすべてのステップを分類し (read_only/safe/requires_approval/dangerous)、自身では一切実行しません。

詳細: docs/security.md。

プライバシーモデル

  • 環境変数は、名前がシークレットに見える場合 (PASSWORD、TOKEN、SECRET、API_KEY、 PRIVATE_KEY、ACCESS_KEY、AUTH、CREDENTIAL など) に存在のみが チェックされます。値が返されることはありません。

  • .env ファイルは変数名のみがスキャンされます。

  • dev_precommit は、シークレット風のステージングされたファイル名にフラグを立てますが、 その内容を読み取ったり報告したりすることはありません。

ローカルファーストアーキテクチャ

  • サーバーコンポーネント、アカウント、独自のネットワーク呼び出しはありません。検査対象の ローカルコマンド (git、docker、言語ツールチェーン) のみを使用します。

  • 報告されるすべての情報は、実行中のマシン上にすでにあるファイルとプロセスから取得されます。

開発

uv sync --all-extras
uv run pytest
uv run ruff check .
uv run mypy src
uv run devtwin

完全なワークフローについては docs/development.md を参照してください。

コントリビューション

CONTRIBUTING.md を参照してください。新しい言語エコシステム の追加が最も一般的なコントリビューションです。テンプレートは docs/adapters.md を、実際にマージされた例は src/devtwin/adapters/swift.py、 ruby.py、および php.py を参照して、あなたの実装のモデルにしてください。

ロードマップ

  • 追加のエコシステムアダプター: Elixir、Dart、Scala、 C/C++ (CMake/Bazel/Buck)、Nix (追加方法は docs/adapters.md を参照)

  • 追加のサービス検出器 (MySQL/MariaDB、MongoDB、Kafka、RabbitMQ)

  • CI 設定に対するより詳細なドリフト比較 (例: GitHub Actions のランタイムマトリックス)

  • セッション内のツール呼び出し間での高コストなチェックのオプションのローカルキャッシュ

ライセンス

Apache-2.0 -- LICENSE を参照してください。

Available Tools

10 tools
dev_checkA

Run recognized project checks (tests/lint) detected from project files, e.g. pytest, ./gradlew test, npm test, cargo test. Only commands DevTwin itself recognized are ever executed (never an arbitrary string), each with a timeout. Pass run to restrict to a subset of the recognized commands (call dev_project_info first to see what's available).

ParametersJSON Schema
NameRequiredDescriptionDefault
runNo
workspaceNo.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly states that only DevTwin-recognized commands are ever executed (never arbitrary strings) and that each command has a timeout, which is valuable safety information. It doesn't mention side effects or output specifics, but the core behavioral constraints are transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, front-loaded with the core purpose, then safety details, then usage guidance. Every sentence earns its place with specific, actionable information and no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has an output schema, so return values are documented separately. The description covers safety, usage flow, and available options, but omits any mention of the workspace parameter and doesn't clarify behavior when no checks are recognized. Given the tool's complexity and the availability of an output schema, these are minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains the 'run' parameter (restrict to a subset of recognized commands) and directs the agent to dev_project_info to see valid values. However, the 'workspace' parameter is completely unaddressed; an agent might not know it represents the working directory. The explanation for 'run' is helpful but not comprehensive for both parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool runs recognized project checks (tests/lint) with concrete examples (pytest, gradlew test, npm test, cargo test). It uses a specific verb 'Run' and a well-defined resource, distinguishing it from sibling tools like dev_detect or dev_health which have different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description advises calling dev_project_info first to discover available commands and to use the 'run' parameter to restrict execution to a subset. This provides clear context and a specific prerequisite, though it doesn't explicitly contrast with alternatives or state when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dev_dependenciesC

Dependency state per detected ecosystem: package manager, lockfile presence/consistency signals, dependency counts, and whether packages appear installed locally (e.g. node_modules/, .venv/).

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNo.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description alone must disclose behavior. It describes output content but does not state whether the tool is read-only, scans the filesystem, requires network access, or has side effects. It also omits any performance or error implications. The behavior is not transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no filler. It front-loads the key concept and lists specifics efficiently. While it could be slightly more structured with an explicit verb, it is economical and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has one undocumented parameter and no annotations. Even though an output schema exists (which may clarify return values), the description omits critical context about the workspace parameter and how ecosystems are detected. It is incomplete for an agent to call correctly without further inference.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter 'workspace' has zero schema description coverage (0%), and the description does not mention it at all. The agent has no idea what workspace does, how it affects the results, or what values are acceptable. The description fails to compensate for the undocumented schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reports dependency state per ecosystem, listing specific data points (package manager, lockfile, counts, local install). It is specific about content, though it lacks an explicit action verb like 'get' or 'list'. It does not differentiate from siblings, but the purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives like dev_detect, dev_health, or dev_drift. No mention of context that would trigger this tool, no exclusions, and no mention of alternatives. The agent must infer when to call it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dev_detectB

Detect what kind of project lives at workspace: languages, ecosystems, and the evidence (files) behind each detection. Fast, file-based only.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNo.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral disclosure burden. It adds two meaningful traits: 'file-based only' (implying read-only, local operation) and 'fast' (performance). However, it lacks depth—no mention of error handling, what happens if the workspace is invalid, or whether it caches results. It provides some transparency but not comprehensive context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no fluff. It leads with the core purpose, then appends the behavioral notes. Every word contributes; nothing is redundant or unnecessary. This is an exemplary concise structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one optional parameter, output schema exists), the description covers the essentials: what it does, the parameter, and some behavior. However, it omits usage context—when to choose this over siblings—and lacks deeper behavioral details like edge cases or side effects. It is adequate for basic use but not fully complete without referencing alternatives.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, so the description must compensate. It explains 'workspace' as the location where the project lives, which clarifies the parameter's role. The default '.' is also consistent. While it doesn't detail accepted path formats, for a single optional parameter this is sufficient and adds meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'detect' and the resource 'project at workspace', and specifies the outputs: languages, ecosystems, and evidence files. It distinguishes itself from a tautology and conveys a specific capability, though it does not explicitly contrast with sibling tools like dev_project_info.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this tool versus alternatives. The phrase 'Fast, file-based only' hints at scope and performance but does not state when a developer should pick this over siblings such as dev_health or dev_project_info, nor does it mention exclusion criteria or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dev_driftA

Compare expected project state (required runtime/tool versions from project files) against what's actually installed locally. Reports each mismatch as a structured drift item.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNo.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It uses non-mutating verbs ('compare', 'reports') which strongly imply a read-only operation, but it does not explicitly state that it does not modify anything or disclose any side effects, permissions, or limitations. The lack of explicit transparency is a moderate gap for a tool that could potentially access local installations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no unnecessary words. It front-loads the core comparison action and then specifies the output format. Every word contributes to understanding the tool's function and result.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with a single optional parameter, an output schema, and no annotations, the description provides sufficient context to call it correctly. The purpose and result are clear, and the workspace parameter is implied. It could mention edge cases (e.g., invalid workspace) or what happens when no drift is found, but the output schema likely covers the return structure, so the description is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema describes 'workspace' with a default but no description, and schema description coverage is 0%. The description's mention of 'project files' and 'installed locally' gives context that the workspace parameter specifies which directory to inspect, but it does not explicitly describe the parameter's purpose or acceptable values. It adds some meaning but does not fully compensate for the missing schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's verb (compare), resource (expected vs installed project state), and outcome (reports mismatch as structured drift items). It distinguishes itself from sibling tools by specifying the exact comparison of required runtime/tool versions against local installations, which is not ambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the intended use case (detecting version drift) but does not explicitly state when to prefer this tool over alternatives, nor does it mention any exclusions or conditions. With many siblings, explicit routing would be helpful, but the core purpose is clear enough that an agent can infer appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dev_explain_failureA

Diagnose a development failure. Give it the error/output text (and optionally the command that produced it); it cross-references project type, runtimes, services, ports, and dependencies to rank likely root causes with evidence -- never asserting certainty beyond the evidence.

ParametersJSON Schema
NameRequiredDescriptionDefault
commandNo
workspaceYes
error_messageYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that the tool 'cross-references project type, runtimes, services, ports, and dependencies' and that it 'ranks likely root causes with evidence'. It also clarifies a behavioral trait: 'never asserting certainty beyond the evidence'. This is transparent about the tool's inductive reasoning and its limitation. The description doesn't mention any destructive actions or side effects, but the name suggests (and the description confirms) it is purely diagnostic. Given the lack of annotations, this is a good level of transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, with the main purpose and inputs at the front. It packs a lot of information: the input, the cross-referencing behavior, the output (ranked root causes with evidence), and a critical limitation ('never asserting certainty beyond the evidence'). No fluff, every clause earns its place. The structure is clear: first sentence states the action, second expands on internals and output.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (diagnostic reasoning tool with multiple input parameters and an output schema), the description covers the core functionality well: it explains what the tool does, what it takes, and what it returns. The output schema exists (though not provided in the input schema here, but the signal says 'Has output schema: true'), so the description doesn't need to detail return values. The main missing piece is explicit mention of the 'workspace' parameter – it is implied by 'project type, runtimes, services' but not directly stated as an input. Other than that, the description is complete enough for an agent to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, so the description must compensate for the parameters. The description mentions 'error/output text' and 'command that produced it' and 'workspace' implicitly. It doesn't explicitly name the workspace parameter, but it says 'cross-references project type, runtimes, services, ports, and dependencies' which implies the workspace is the project context. The description adds value by explaining what the parameters are used for (error_message as the primary input, command as optional context). It does not cover all parameter semantics in detail (e.g., format of workspace), but given the high-level nature, it provides enough meaning beyond the schema's bare property names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: diagnose a development failure. It specifies the inputs (error/output text, optionally the command) and the output (ranks likely root causes with evidence). The verb 'diagnose' and the resource 'development failure' are specific, and the description distinguishes it from siblings by focusing on failure analysis rather than detection, health, or project info.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells the agent when to use this tool: when you have error/output text and optionally the command that produced it. It implies that the tool is for diagnosing failures, not for general health checks or detection. While it doesn't explicitly name alternatives, the context signals and sibling names (dev_check, dev_detect) suggest it's for failure analysis, and the description gives a clear condition for invocation. This is a strong usage guideline, essentially 'use this when you have error text and want root cause analysis'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dev_healthA

Full environment health check: combines project detection, runtime versions, dependency state, required services, ports, and Git state into a 0-100 health_score with concrete issues and recommendations.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNo.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full responsibility for behavioral disclosure. It does convey that the tool is non-mutating (a 'check' that produces a score and issues), implying a read-only operation, but it stops short of explicitly stating side-effect-free behavior, performance implications, or what happens if the workspace doesn't exist. It also doesn't describe the structure of the 'issues and recommendations' it returns, though an output schema is present. The overall intent is clear, but some behavioral specifics are left to inference.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, densely informative sentence that front-loads the core purpose ('Full environment health check') and immediately enumerates the covered areas. Every element earns its place—no filler, no repetition. It is compact while conveying both scope and outcome, making it highly efficient for an agent to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description provides a good high-level overview of functionality and output, and the presence of an output schema relieves it of fully explaining return values. However, it omits any guidance on the `workspace` parameter (its purpose and valid values), which is necessary for correct invocation. It also doesn't mention prerequisites (e.g., must be inside a project) or how to interpret the health score beyond 'issues and recommendations'. For a tool that combines many aspects, these gaps are moderate, leaving the description slightly incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is one parameter, `workspace` (default '.'), and the schema provides zero description coverage (0%). The tool description never mentions this parameter or explains its meaning (e.g., directory path, project root). Although the name is somewhat self-explanatory and there is a sensible default, the description fails to compensate for the missing schema documentation. The agent is left to infer what value to pass, which is a notable gap for a parameter that affects the scope of the health check.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('health check') applied to the environment, lists the concrete aspects it combines (project detection, runtime versions, dependency state, services, ports, Git state), and defines the single 0-100 health_score output. It unambiguously distinguishes itself from narrower sibling tools like dev_dependencies or dev_services by being a 'Full environment health check' that aggregates many dimensions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies a comprehensive, one-stop check by explicitly enumerating what it covers, which signals when to use it (when a holistic overview is needed). However, it does not explicitly exclude alternatives (e.g., 'use dev_dependencies for dependency-only checks') nor call out situations where a narrower tool is preferred. This is clear context without exclusions, so a 4 is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dev_precommitA

Read-only commit-readiness summary: Git status (dirty/staged/conflicts), project health, and staged files that look like secrets. Never commits, stages, or modifies anything.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNo.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Since no annotations are provided, the description carries the full burden. It explicitly states 'Read-only' and 'Never commits, stages, or modifies anything.' This fully discloses the tool's side-effect-free nature, which is the critical behavioral trait. The description goes beyond a simple purpose statement by reassuring the agent of safety.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences, with the core purpose front-loaded. The first sentence states what it does, the second reinforces the read-only guarantee. No fluff or redundant details; every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the tool's purpose, scope, and behavioral safeguards. An output schema exists, so return values are presumed documented elsewhere. The only notable gap is the undocumented 'workspace' parameter, which prevents the description from being fully complete for a drop-in usage understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has one parameter ('workspace') with 0% description coverage, and the tool description does not mention it at all. This leaves the agent to infer that 'workspace' refers to a path, but there is no explicit guidance, default behavior, or allowed values. The description fails to compensate for the missing schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb+resource: 'Read-only commit-readiness summary' and details the specific checks (Git status, project health, secrets). It also explicitly states what it never does, which distinguishes it from mutation tools. The purpose is unambiguous and distinct from sibling dev_* tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied by the name and description: it is for checking commit readiness, presumably before committing. However, the description does not explicitly state when to use this tool versus its siblings (e.g., dev_health, dev_check) or provide any exclusion criteria. It offers clear context but no explicit comparisons.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dev_prepareA

Produce a preparation plan for a (likely newly-cloned) repository: ordered steps to align runtimes, start required services, install dependencies, and run the project's build/test commands. This tool NEVER executes anything -- it only plans, and classifies each step's blast radius (read_only/safe/requires_approval/dangerous) for the caller.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNo.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full behavioral burden. It explicitly states 'This tool NEVER executes anything -- it only plans' — a critical guarantee that prevents an agent from expecting side effects. It also discloses the output behavior (classifying each step's blast radius). This is thorough and transparent for a planning tool with zero side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose and then the key behavioral caveat. Every clause adds value: scope, typical use case, and the critical non-execution guarantee. No filler, no redundancy. It is concise and well-structured for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given its simplicity (one optional param, no execution), the description is almost complete. It covers what the plan includes (steps, blast radius classification) and what it never does. The output schema exists, so return details are covered implicitly. Minor omission: it doesn't specify the format or granularity of the plan, but that is not essential for invocation. Overall, an agent can confidently call this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has a single optional 'workspace' parameter with 0% description coverage, so the description must compensate. It does not directly explain 'workspace', but the purpose 'for a repository' implies the workspace is the repository path. Since the parameter is simple, optional, and has a sensible default, the lack of explicit parameter explanation is a minor gap. This warrants a middle score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Produce a preparation plan'), a specific resource ('repository'), and the scope ('align runtimes, start services, install deps, run build/test'). It also explicitly disclaims execution, which clearly distinguishes it from sibling tools like dev_check or dev_detect that likely run commands. The purpose is unambiguous and differentiated without needing to name siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage — 'for a (likely newly-cloned) repository' — and clarifies it is for planning, not execution. However, it does not explicitly state when to prefer this over sibling tools (e.g., dev_check for actual validation, dev_services for service management). The context is present but no alternatives or exclusions are given, so guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dev_project_infoA

Detailed project inspection: detected ecosystems, runtimes (installed vs required), build tools, test/build commands, environment variables in use, OS info, and Git state. Broader and slower than dev_detect.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNo.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the scope of inspection and a performance characteristic (slower), but does not explicitly state read-only behavior, required permissions, or potential side effects. The word 'inspection' implies non-mutating, yet it is not stated outright.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences that are front-loaded with the purpose and a detailed list, followed by a comparative note. Every word earns its place, with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value details are already covered. The description specifies a rich set of inspected aspects and includes a performance caveat. It does not explain the workspace parameter's role, but that is captured under parameter semantics. Overall, the description gives sufficient context for an agent to decide to call the tool and understand its high-level behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the description does not mention the 'workspace' parameter at all. The parameter name is self-explanatory, but the description adds no contextual meaning about what value to provide (e.g., project root path) or how it affects the inspection.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb 'inspection' with a specific resource ('project') and enumerates concrete content: ecosystems, runtimes, build tools, commands, environment variables, OS info, Git state. It also differentiates from dev_detect by noting 'broader and slower', making the purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly contrasts with dev_detect ('Broader and slower than dev_detect'), giving a comparative usage cue. It implies choosing this tool when depth is needed over speed, though it does not list explicit when-not-to-use conditions or mention any other sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dev_servicesA

Local service detection: which services (Postgres, Redis, and compose-defined services) this project appears to need, whether each is currently running/listening, and the evidence behind that conclusion.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNo.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses that the tool performs local detection, checks whether services are running/listening, and provides evidence, which implies a read-only, non-destructive operation. However, it does not state that it has no side effects, does not start services, or what happens if services are missing. It is more transparent than a bare 'detect services' but still lacks explicit safety details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, dense sentence that front-loads the core purpose ('Local service detection') and packs in the three key outputs (needed services, running status, evidence). There is no filler or irrelevant information, making it highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema exists (though not detailed here), so return values need not be explained. The description covers the essential scope: which services, whether running, and evidence. It omits explicit clarification of the 'workspace' parameter and any limitations, but for a detection tool with a single optional parameter, it is close to complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has one parameter 'workspace' with a default of '.' and zero description coverage (0%). The description does not mention the parameter at all, leaving the agent to infer that it refers to the project directory. The name and default give some hint, but the description adds no semantic value beyond the schema, and the schema itself provides no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('detection') and resource ('services'): it identifies which services (Postgres, Redis, compose-defined) the project needs, whether they are running, and provides evidence. This clearly distinguishes it from sibling tools like dev_dependencies (dependencies) or dev_health (health status).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit guidance on when to use this tool versus alternatives. It does not mention any conditions, alternatives, or exclusions. An agent would have to infer from the title and sibling names that this is about service detection, but there is no explicit routing or 'use this when' statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 10 tool updatesv0.1.0
    • First observeddev_check
    • First observeddev_dependencies
    • First observeddev_detect
    • First observeddev_drift
    • First observeddev_explain_failure
    • First observeddev_health
    • First observeddev_precommit
    • First observeddev_prepare
    • First observeddev_project_info
    • First observeddev_services

TDQS

A3.8/5.0

Scored across 10 tools

Disambiguation5/5

Each tool targets a distinct aspect of the development environment: detection, health, drift, failure diagnosis, project info, dependencies, services, checks, preparation, and precommit. Even similar tools like dev_detect and dev_project_info are clearly differentiated by scope and speed. There is no ambiguous overlap that would cause an agent to select the wrong tool.

Naming Consistency5/5

All tool names follow the consistent pattern `dev_` + lower_snake_case, using descriptive verbs or nouns (detect, health, drift, explain_failure, etc.). The naming convention is uniform and predictable, with no mixing of camelCase or inconsistent verb styles.

Tool Count5/5

With 10 tools, the server is well-scoped and each tool serves a clear purpose within the domain of development environment analysis and preparation. The count is within the ideal range and avoids both bloat and insufficient coverage.

Completeness5/5

The tool set covers the full lifecycle for a diagnostics/preparation server: detection, health assessment, drift checking, failure explanation, dependency and service checks, test execution, preparation planning, and precommit readiness. No obvious gaps exist for the stated purpose, and the tools work together to provide comprehensive environment insight.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Zero-config MCP server that gives AI coding assistants a real-time diagnostic snapshot of your local dev environment. Detects framework, running services, recent errors, git state, and provides a health diagnosis in one call.
    3
    5 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to detect development environments, install missing tools, scan local code projects, and generate visual reports.
    4 npm
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables LLM clients to inspect local development environment, including Docker container health, pnpm workspace integrity, and stuck process diagnosis.
    4
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables LLM clients to inspect local dev environments—Docker container health, pnpm workspace integrity, and stuck process detection—without manual terminal copy-pasting.
    MIT