「MCP Sentinel v1.0」公開:MCPツールスキーマのロックファイル

Dev.to / 2026/5/9

📰 ニュースDeveloper Stack & InfrastructureSignals & Early TrendsTools & Practical Usage

要点

  • MCP Sentinel v1.0.0がリリースされ、MCPツールのスキーマが変化してエージェントが実行時に警告なしで壊れる問題(スキーマドリフト)に対処します。
  • 記事では、MCPツールスキーマは契約(コンソート)であり、パラメータ、必須項目、enum、戻り値の形、説明の変更は、エージェントが何を要求できるかや、いつツールを使うかに影響し得ると強調しています。
  • MCP Sentinel v1.0では、sentinel init / discover / doctor / snapshot / check / diff を含む、より包括的なワークフローが追加され、スキーマ検証を体系化できるようになりました。
  • discovery機能により、一般的な設定場所からMCPに相当するコンフィグを探索し、sentinel.config.jsonへ取り込めるため、オンボーディングの手作業を減らせます。
  • 新しい「doctor」コマンドは、Sentinelが設定を読み取れるかや、サーバーが適切に設定されているかを確認するセットアップチェックを行います(以降の検証フローへ続きます)。

数日前、MCPツールのスキーマのドリフトで遭遇した問題について投稿しました。

要約すると:

MCPサーバーがパラメータを location から city に変更しました。

私のエージェントは location を送り続けていました。

ランタイムまで何も警告してくれませんでした。

その最初のMCP Sentinelは、ただ基本的なアイデアだっただけです:

sentinel init
sentinel snapshot
sentinel check
sentinel diff

それ以来、MCP Sentinel v1.0.0 を出荷しました。

GitHub:

https://github.com/Wannavf/mcp-sentinel

npm:

npm install -g @wannavf/mcp-sentinel

枠組みが少し変わった

元々の問題は、ツールが黙って壊れたので面倒でした。

でもフィードバックの後で、より大事なのはこれだと思うようになりました:

MCPツールのスキーマは契約です。

ツールがパラメータ、必須フィールド、enum値、戻り値の形(return shape)、説明文を変更した場合、それは単なる小さな実装詳細ではありません。

それによって、エージェントが要求できるものが変わります。

さらに、そのツールをエージェントが使うタイミングも変わり得ます。

これは、次のようなMCPサーバーで特に重要です:

databases
filesystems
cloud infrastructure
admin tools
internal APIs

壊れた天気ツールは厄介です。

しかし、黙って変更されたデータベースやインフラ用のツールは、はるかに深刻になり得ます。

v1.0で追加されたもの

最初のバージョンは基本的に:

snapshot
check
diff

v1.0では、より充実したワークフローになりました。

sentinel init
sentinel discover --write
sentinel doctor
sentinel snapshot
sentinel check
sentinel diff

ディスカバリー(Discovery)

Sentinelに、一般的な設定場所からMCPサーバーを見つけるよう依頼できるようになりました:

sentinel discover
sentinel discover --write

MCPの形に合う設定を探し、サーバーをsentinel.config.jsonに取り込むのを手助けできます。

これにより、オンボーディングがより手作業少なくなります。

Doctor(診断)

セットアップ確認が追加されました:

sentinel doctor

Sentinelがあなたの設定を認識できるか、サーバーが正しく設定されているか、ロックファイルが存在するかをチェックします。

何かが動かない理由を推測するのではなく、すぐに健全性(サニティ)チェックが得られます。

ダッシュボード(Dashboard)

端末上のダッシュボードもあります:

sentinel dashboard

または:

sentinel db

設定済みサーバー、スナップショット、チェック、アクティビティ、およびドリフトをローカルで調べられます。

メイン機能ではありませんが、開発中にMCPサーバーをテストする際に役立ちます。

CI

主なユースケースは依然としてCIです。

sentinel check

サーバーがツールの契約を変更した場合、エージェントがランタイムでその破損を発見する前にCIで失敗させられます。

GitHub Actionも用意しています:

name: MCP Schema Check
on: [pull_request]

jobs:
  drift:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: Wannavf/mcp-sentinel@main
        with:
          fail-on: MAJOR

レポート(Reports)

Sentinelは複数の形式で差分(diff)を出力できます:

sentinel diff --format json
sentinel diff --format markdown
sentinel diff --format sarif

SARIFはGitHub Code Scanningにアップロードできます。

トランスポート(Transports)

v1.0は以下をサポートします:

stdio
Streamable HTTP
SSE

stdioの例の設定:

{
  "compatibility": "BACKWARD",
  "failOn": "MAJOR",
  "servers": {
    "filesystem": {
      "transport": "stdio",
      "command": "npx",
      "args": [ "-y", "@modelcontextprotocol/server-filesystem", "."]
    }
  }
}

HTTPの例の設定:

{
  "servers": {
    "remote": {
      "transport": "http",
      "url": "http://localhost:3000/mcp"
    }
  }
}

何を検知するか

Sentinel は変更を MAJORMINOR、または PATCH として分類します。

MAJOR の変更例:

ツールが削除された
必須パラメータが削除された
パラメータの型が変更された
省略可能パラメータが必須になった
制約が強化された
列挙値が削除された
出力フィールドが削除された

より安全な変更例:

省略可能パラメータが追加された
ツールが追加された
列挙値が追加された
説明が更新された

すべての変更を止めることが目的ではありません。

ツール契約の変更を明示的にすることが目的です。

なぜ重要だと思うのか

ロックファイルがない場合:

MCP サーバーの変更
エージェントが後で壊れる
実行時にデバッグする

ロックファイルがある場合:

MCP サーバーの変更
CI がドリフトを検知する
契約(コントラクト)の変更内容を確認する
それを受け入れるかどうかを判断する

これは MCP ツール群に欠けているピースのように感じます。

パッケージマネージャーにはロックファイルがあります。

API には契約があります。

MCP ツールのスキーマにも、レビューのポイントがあるべきです。

試してみる

npm install -g @wannavf/mcp-sentinel

または:

npx -y @wannavf/mcp-sentinel --help

GitHub:

https://github.com/Wannavf/mcp-sentinel

npm:

https://www.npmjs.com/package/@wannavf/mcp-sentinel

特に、データベース、ファイルシステム、インフラストラクチャ、または社内の管理ツールで MCP を使っている方からのフィードバックをぜひいただきたいです。