本文へ移動
AI Dev Lab Japan AI開発ツール、AIコーディングエージェント、M...

MCP Inspectorで自作Serverを検証する前に:proxy token・stdio・HTTP transportの権限を分ける

MCP Inspectorで自作Serverを検証する前に確認するproxy token、stdio、HTTP transport、tool権限の分離ポイント

MCP Serverを自作したあと、最初に開きたくなるのがMCP Inspectorです。tools、resources、promptsをUIで見られ、stdioやHTTPの接続も切り替えられるので、AIコーディング環境へ入れる前の確認にはかなり便利です。

ただし、Inspectorで接続に成功したことは「そのServerを本番権限でAIエージェントへ渡してよい」という意味ではありません。2026年6月13日にMCP Inspector 0.22.0、MCP TypeScript SDK 1.29.0、公式README、MCP transport仕様、draft authorization仕様、security best practicesを確認した範囲では、最初に見るべき論点はServerの便利さではなく、Inspectorへ渡した権限の小ささです。

X/Twitter上ではCodex、Claude Code、MCP、外部コンテキスト、セッションをまたぐ記憶の話題が伸びやすく、MCP Serverを足したい需要は強く見えます。この記事ではその需要を入口にしつつ、技術的な判断は公式一次情報とローカル検証だけに寄せます。MCPの基本はMCPとは何か: Tools・Resources・Promptsと権限設計で扱っているので、ここではInspector検証時のproxy token、localhost binding、stdio、Streamable HTTP、secret、tool実行権限に絞ります。

3行まとめ

VisualInspector検証の3要点接続確認だけで終わらせないための入口です。
Proxy

proxy tokenとlocalhost bindingを最初に確認します。

Transport

stdioとStreamable HTTPで見る権限境界を分けます。

Tools

read-only、dry-run、writeの順に段階を上げます。

Inspectorの価値は、接続できたことではなく、何を許可したかを説明できることにあります。

  • MCP Inspectorは、自作Serverの接続確認だけでなく、AIコーディング環境へ渡す前の権限レビューに使うと価値が出ます。
  • まず確認するのは、proxy token、localhost binding、DANGEROUSLY_OMIT_AUTHを使っていないこと、HOST=0.0.0.0で不用意に外へ開いていないことです。
  • stdioではcommand、env、cwdを検証用に落とし、Streamable HTTPではURL、Origin、Authorization、開発用tokenを本番から分けてからtoolを試します。

この記事でわかること

Visual確認する論点AI clientへ渡す前に見る項目です。
境界

Client UIとProxyを権限境界として見ます。

起動条件

command、arguments、cwd、env、secretを分けます。

HTTP条件

URL、Authorization、Origin、開発用tokenを分けます。

記録

検証結果と未確認項目を残します。

読後の目標は、Inspectorで何を見たかをレビュー可能な形にすることです。

  • MCP InspectorのClient UIとProxyを、単なるローカル画面ではなく権限境界として見る理由
  • proxy token、localhost binding、Origin validationを確認する順番
  • stdio transportでcommand、arguments、cwd、env、secretを分ける具体的な見方
  • Streamable HTTPでURL、Authorization、OAuth、開発用tokenを本番接続から切り離す考え方
  • tools、resources、promptsをInspectorで見るときのread-only、dry-run、writeの段階分け
  • MCP Inspector CLIをsmoke testに使うときの注意点
  • AIコーディングエージェントへ接続する前に残す検証記録

前提知識

VisualInspectorの基本構成画面の裏側で動くものを分けて見ます。
  1. 1Client

    ブラウザでtools、resources、prompts、実行結果を確認します。

  2. 2Proxy

    ブラウザUIとMCP Serverの間で接続を中継します。

  3. 3Server

    stdioではprocess、HTTPではURLの先にある実装へ届きます。

  4. 4Logs

    stdout、stderr、errorにsecretが混ざらないか確認します。

Inspectorは通信を眺めるだけでなく、実行権限や接続先を伴う開発者ツールです。

MCP Inspectorは、MCP Serverをテスト、デバッグするための公式開発者ツールです。公式READMEでは、ReactベースのMCP Inspector Clientと、Node.jsのMCP Proxyの2つで構成されると説明されています。Proxyは、ブラウザUIとMCP Serverをつなぐ橋渡しであり、stdio、SSE、streamable-httpの接続を扱えます。

ここで大事なのは、Proxyが「通信を眺めるだけの道具」ではないことです。stdio Serverを検証するとき、Inspectorは指定したcommandを起動し、そのprocessへJSON-RPCメッセージを送ります。HTTP Serverを検証するときは、指定したURLへ接続します。どちらの場合も、検証UIの裏側には実行権限、環境変数、接続先、token、ログが残ります。

TypeScriptでMCP Serverそのものを作る流れは、TypeScriptでMCPサーバーを作る: Tools・Resources・Promptsの最小構成に回します。GitHub read-onlyのような実装例は、TypeScriptでGitHub read-only MCPサーバーを作るを先に読むと、この記事のsecret分離やtool allowlistの話がつながりやすくなります。

結果: Inspector検証で合格にする条件

Visual合格ラインの確認表接続成功より先に説明できる状態を揃えます。
項目内容見方
Proxy認証random session tokenを使い、tokenを共有ログへ残しません。
Bindinglocalhostで閉じ、理由なく外部へ開きません。
stdio検証用command、cwd、envで起動します。
HTTP検証用URLと検証用Authorizationで接続します。
toolmetadata、read-only、dry-run、承認付きwriteの順で試します。

セキュリティ判断では単純な勝敗ではなく、各条件を説明できることを合格ラインにします。

MCP Inspectorでの最初の合格ラインは、「Serverに接続できた」ではなく、次の条件を説明できることです。

確認項目合格にする状態危ない状態
Proxy認証既定のrandom session tokenを使い、tokenを共有ログへ残さない面倒だから認証を無効化する
Bindinglocalhostで閉じる理由なくHOST=0.0.0.0で開く
stdio検証用command、検証用cwd、検証用envで起動する普段の開発shellと同じsecretを渡す
HTTP検証用URL、検証用Authorizationで接続するproduction endpointに直接つなぐ
toolmetadata表示、read-only、dry-run、承認付きwriteの順に試す初回からwrite toolを実行する
ログtokenや顧客データが出ない形で保存する失敗時のresponse全文をそのまま共有する

ローカルでは次の2つだけ確認しました。help全文は長いので本文には載せませんが、--config--server--cli--transport--server-urlを確認できました。

npm view @modelcontextprotocol/inspector version
npm view @modelcontextprotocol/sdk version
npx -y @modelcontextprotocol/inspector@0.22.0 --help

確認時点の返り値は、@modelcontextprotocol/inspector0.22.0@modelcontextprotocol/sdk1.29.0でした。MCP周辺は更新が速いので、この記事の値は2026年6月13日の確認値として扱ってください。

MCP Inspectorは「接続できた」ではなく「何を許可したか」を見る道具

Visual権限を見る順番tool名だけで安全性を判断しません。
  1. 1Description

    toolの説明が実際の副作用を伝えているか見ます。

  2. 2Input schema

    repo、path、URL、ID、modeを狭める制約を見ます。

  3. 3Separation

    read-onlyとwriteが同じtoolに混ざっていないか見ます。

  4. 4Error

    token、request body、private URLがログへ出ないか見ます。

  5. 5Client

    AI coding clientへ渡す前の承認条件を見ます。

UIにtoolが見えることと、そのtoolをAIへ渡してよいことは別です。

Inspectorを最初に開く目的は、Serverの機能を眺めることではありません。AIコーディング環境へ渡す前に、Serverがどんなcapabilityを公開し、どのtoolが副作用を持ち、どのtransportでどのsecretに届くのかを確認することです。

UIで見えるものと、実際に実行される権限は別物

InspectorのUIでtools一覧が見えても、そのtoolが安全とは限りません。名前がlist_issuesでも、内部で外部APIを広く読んでいるかもしれません。get_fileのようなread系toolでも、対象path、ref、repo、認証scopeが広ければ、社内情報を拾いすぎる可能性があります。

見る順番は次の通りです。

確認項目

  1. tool名とdescriptionが、実際の副作用を説明しているか
  2. input schemaに、対象repo、path、URL、ID、modeなどを狭める制約があるか
  3. read-onlyとwriteが同じtoolに混ざっていないか
  4. 失敗時にtoken、request body、社内path、private URLをログへ出さないか
  5. AIコーディングclient側で承認やallowlistを置ける粒度になっているか

MCP Serverを外部から選ぶ場合は、Server名だけで判断しない方がいいです。MCP Registryや既存Server選定の観点は、MCP Registryからサーバーを選ぶ前にでも整理しています。Inspectorは、その判断を自分の環境で再確認するための入口です。

需要シグナルは採用理由であって、仕様根拠ではない

CodexやClaude CodeでMCPを使いたい、外部コンテキストや永続メモリをつなぎたい、という話題は伸びやすいです。だからこそ、導入したくなる速度に対して、検証と権限レビューを先に置く必要があります。

根拠の置き方

この記事ではX上の投稿を仕様根拠には使いません。MCP Inspectorの挙動は公式READMEとDocs、transportやauthorizationの整理はMCP仕様、危険な権限設計の考え方はsecurity best practicesで確認します。市場の熱量と技術的な安全性は、別の証拠で判断します。

proxy tokenとlocalhost bindingは最初に確認する

VisualProxyで避ける設定便利さより境界を優先します。
DANGEROUSLY_OMIT_AUTH

通常の検証手順として扱いません。

Shared token

固定tokenをチームチャットへ貼りません。

HOST=0.0.0.0

理由なくlocal processの入口を外へ開きません。

localhost

検証中のProxyは手元の境界で閉じます。

Proxy tokenとbindingは、Inspectorで最初に見る小さくて大事な境界です。

MCP InspectorのREADMEでは、Proxy Serverは既定で認証を要求し、起動時にrandom session tokenを生成すると説明されています。InspectorはそのtokenをURLへ埋めた状態でブラウザを開くことがあります。これは邪魔な追加手順ではなく、ブラウザUIからProxyへ到達できる人を絞る境界です。

DANGEROUSLY_OMIT_AUTHを便利設定として扱わない

Inspectorには認証を無効化するためのDANGEROUSLY_OMIT_AUTHがあります。名前の通り、通常の検証手順として使うものではありません。特に、MCP Serverがlocal processを起動する、filesystemを読む、社内APIやGitHubへつなぐ、databaseやticket systemへ届く場合、認証なしのProxyは検証用の穴になります。

避けたい組み合わせは、次の3つです。

避ける条件

設定なぜ避けるか
DANGEROUSLY_OMIT_AUTH=trueProxyへ届いたrequestを誰が出したか分けにくくなる
固定tokenをチームチャットに貼るtokenが検証期間を超えて残りやすい
本番secretを渡した状態でInspectorを共有する検証UIの操作が本番権限の操作になる

どうしても特殊な検証で認証を外す必要があるなら、使い捨てworkspace、使い捨てsecret、localhost限定、短時間起動、終了後のcredential失効までをセットにします。記事として推奨したいのは、認証を外すことではなく、なぜ外さないのかをチームで説明できる状態です。

HOST=0.0.0.0はlocal process executionの面を外に出す

READMEでは、InspectorのProxy ServerとClientは既定でlocalhostにbindするとされています。これは同じマシン上の開発用途としては自然です。一方、HOST=0.0.0.0で全interfaceにbindすると、ネットワーク上の別端末からも到達できる可能性が出ます。

ここで怖いのは、Web UIが見えることだけではありません。stdio Serverを検証している場合、Proxyはlocal commandを起動する側にいます。つまり、外へ開いたProxyは、設定次第でlocal process executionに近い能力を持つ面をネットワークへ見せます。

安全側の判断は単純です。

安全側の条件

  • 個人検証ではlocalhostのまま使う
  • チーム共有のために外へ開かない
  • 共有が必要なら、Inspectorではなく検証ログ、CLI smoke結果、スクリーンショットではなく証跡テキストを共有する
  • 外部接続の可否は、AIコーディングclientのnetwork allowlistやMCP server側の認可で別に管理する

CodexやAIコーディング環境でnetworkを広げる考え方は、Codexにインターネットアクセスを許可する前にのallowlist設計にも通じます。Inspectorのlocalhost bindingも、同じく「どこから届くか」を先に狭める話です。

Origin validationは「ローカルだから不要」ではない

READMEでは、DNS rebinding攻撃を防ぐためにOrigin headerを検証し、既定ではclient originだけを許可すると説明されています。追加のoriginはALLOWED_ORIGINSで設定できます。

許可するOriginの条件

これも、面倒なら広げるという扱いにはしません。開発用の別portからUIを触る必要がある場合だけ、許可するoriginを明示します。*のような広い指定を当然のように使うと、Proxy tokenやlocalhost bindingで作った境界を薄くしてしまいます。

stdio transportではcommand、env、cwdを検証用に落とす

Visualstdioで見る起動条件local processとして何を起動するかを確認します。
項目内容見方
command本番用ではなく検証用の起動commandを使います。
arguments対象repo、mode、configを検証範囲へ絞ります。
cwd読み書きできるdirectoryを検証用workspaceへ寄せます。
env本番secretではなく短命の検証用secretだけを渡します。
stderrログへtokenや内部pathが出ないことを確認します。

stdioではServerのコードだけでなく、起動したprocessが持つ環境も検証対象です。

MCP transport仕様では、stdio transportはclientがMCP Serverをsubprocessとして起動し、stdin/stdoutでJSON-RPCメッセージをやり取りする形です。ServerはstdoutへMCP message以外を書いてはいけず、ログはstderrへ出すべき、とされています。

Inspectorからstdio Serverを起動するときも、この構造は変わりません。つまり、検証UIを開く前に見るべきものは、Serverのコードだけではなく、起動command、arguments、cwd、env、filesystem権限です。

npx @modelcontextprotocol/inspector node build/index.jsの前に見るもの

公式READMEでは、Server repositoryから次のように起動できる例が示されています。

実行前の確認項目

npx @modelcontextprotocol/inspector node build/index.js

記事で勧めたいのは、このcommandをそのまま本番Serverへ向けることではありません。先に検証用configを作ります。

{
  "mcpServers": {
    "local-readonly-dev": {
      "type": "stdio",
      "command": "node",
      "args": ["build/index.js"],
      "env": {
        "GITHUB_TOKEN": "ghp_dev_readonly_dummy",
        "MCP_MODE": "readonly"
      }
    }
  }
}

実際にはtoken値をファイルへ直書きせず、ローカルの安全なsecret管理や環境変数から渡します。ここで伝えたいのは、Server名、mode、token scopeを検証用に分けることです。prodadminに近い名前のenvをInspectorへ渡すなら、その時点で初回検証としては広すぎます。

cwdとfilesystemを狭くする

stdio Serverは、起動されたprocessのcwdやOS権限の影響を受けます。MCP Rootsやclient側のworkspace表示だけで安全になるわけではありません。Inspectorで起動するServerが、親workspace、home directory、SSH config、cloud credential、.env、生成済みlogsを読める状態なら、read toolでも情報を広く拾えます。

検証時は次のように分けます。

検証時の分離項目

項目最初の設定
cwd使い捨ての検証用repoまたはfixture directory
envread-onlyの短命tokenだけ
filesystem対象fixture以外を読まなくても動く構成
network必要なhostだけ許可
logssecretをmaskし、共有前に確認

MCP Serverがfilesystemや外部APIへ届く場合、Inspectorでの成功ログより、読めなかった範囲、渡さなかったsecret、止めたwrite toolを記録する方が大切です。

Streamable HTTP transportではURL、Origin、Authorizationを分けて見る

VisualHTTPで見る接続条件process起動ではなくnetwork境界を見ます。
項目内容見方
URLproduction endpointへ直接つながない検証用URLを使います。
Authorization検証用tokenと本番credentialを分けます。
Origin許可されたOriginからのrequestか確認します。
OAuthscopeとaudienceを検証用途へ絞ります。
Boundary社内network、公開URL、local proxyの境界を分けます。

stdioとHTTPではcredentialの持ち方が違うため、同じ安全確認としてまとめません。

current transport仕様では、標準transportとしてstdioとStreamable HTTPが説明されています。Inspector側は設定でstdio、sse、streamable-httpを扱えますが、HTTP Serverを検証するときはstdioと違う面を見ます。

stdioではlocal processの起動条件が中心でした。Streamable HTTPでは、接続先URL、Authorization header、OAuthやtokenのscope、Origin、CORS、network boundaryが中心になります。

HTTP-based transportでは認可仕様の前提が変わる

MCP draft authorization仕様では、authorizationはMCP実装にとってoptionalであり、HTTP-based transportを使う実装は仕様に従うべき、とされています。一方、stdio transportではこのauthorization仕様に従うのではなく、環境からcredentialを取得する方針が示されています。

つまり、stdioとHTTPでは「どこでcredentialを持つか」が違います。

transportごとの確認項目

transportcredentialの見方最初に確認するもの
stdioprocess envやlocal credentialcommand、cwd、env、filesystem
Streamable HTTPrequestのAuthorizationやOAuthURL、token scope、Origin、server側認可

HTTP ServerをInspectorで見るときは、http://localhost:3000/mcpなのか、社内dev環境なのか、本番URLなのかを最初に固定します。本番URLへ直接つないで、UIでtoolを試すのは避けます。検証用URL、検証用tenant、検証用tokenを作り、write toolはdry-runまたは承認付きの状態で見ます。

URLとAuthorizationを同じメモに貼らない

Inspectorの設定やURL query parameterには、transportやserverUrlを入れられます。ここで注意したいのは、接続先URLとtokenを同じメモ、同じチャット、同じissueに貼らないことです。

共有すべきなのは、次のような情報です。

共有してよい情報

transport: streamable-http
serverUrl: https://mcp-dev.internal.invalid/mcp
auth: dev-only token, read-only scope, expires 2026-06-14
tested tools: tools/list, resources/list, readonly-search
not tested: create-ticket, update-issue, deploy

tokenそのものは共有しません。ログへ出た場合は失効します。Inspectorでの検証結果は、成功したtoolだけでなく、未実行のwrite tool、失敗した認可、意図的に渡さなかったscopeまで残すと、AIコーディングclientへ渡す前のレビューがしやすくなります。

tool実行権限はread-only、dry-run、writeの順で段階的に試す

Visualtool実行のラダー副作用が小さい順に確認します。
  1. Metadata

    tools/list、resources/list、prompts/listだけを見ます。

  2. Read-only

    検証用データに対して読むだけのtoolを実行します。

  3. Dry-run

    write系toolを実際には書き込まないmodeで試します。

  4. Approved write

    人間承認付きで検証環境にだけ書き込みます。

  5. Production

    本番writeは本番client側の承認フローで扱います。

便利なUIであっても、初回からwrite toolを押す手順にはしません。

Inspectorでtools一覧が出たら、すぐに全部実行したくなります。ここで順番を決めておかないと、便利なUIがそのまま危険な手動実行画面になります。

tool説明文とinput schemaだけで安全性を判断しない

toolのdescriptionは、AIエージェントがtoolを選ぶための重要な情報です。しかし、descriptionだけで安全性は決まりません。Inspectorで見るべきなのは、description、input schema、実行結果、失敗時のerror、ログ、外部サービス側の副作用です。

最初のラダーはこれで十分です。

評価基準

  1. metadataだけを見る: tools/listresources/listprompts/list
  2. read-only toolを検証用データで実行する
  3. dry-run付きwrite toolを、実際には書き込まないmodeで実行する
  4. 人間承認付きwriteを検証環境で実行する
  5. 本番writeはInspectorではなく、本番client側の承認フローで扱う

GitHub、Slack、Linear、Jira、Notion、DB、クラウドCLIのように外部状態へ影響するtoolは、Inspectorで直接本番操作をしない設計にします。Inspectorは危険なtoolを発見する場であって、本番writeの操作卓ではありません。

isErrorや失敗responseもレビュー対象にする

成功結果だけを見ると、Serverの危ない挙動を見落とします。失敗時にresponse本文をそのまま返すServerは、API errorにtoken、private URL、request body、顧客IDを混ぜてしまうことがあります。

Inspectorであえて確認したい失敗条件は、次の通りです。

失敗時の確認項目

  • tokenがないとき、どのerrorを返すか
  • 権限が足りないとき、scopeや内部URLを出しすぎないか
  • 存在しないresourceを指定したとき、pathやSQL、stack traceを出さないか
  • write toolをread-only modeで呼んだとき、確実に拒否するか
  • retry時に同じ副作用を二重実行しないか

AIエージェントに渡す前に、成功時の便利さより、失敗時に漏れないこと、止まること、再実行しても壊れないことを確認します。

MCP Inspector CLIは再現性確認に使い、長期運用の代替にしない

VisualCLIの使いどころUIで見た確認を再現手順へ落とします。
  1. 1UI確認

    tools、resources、prompts、errorの見え方を確認します。

  2. 2CLI smoke test

    同じServerへ同じ条件で短い確認を実行します。

  3. 3Record

    passだけでなくblockedにしたtoolも残します。

  4. 4Client operation

    長期運用はclient側の承認、ログ、監査で守ります。

CLIかUIかではなく、どのconfig、secret、toolを実行したかが安全性を決めます。

MCP InspectorにはCLI modeがあります。公式READMEでは、--cliを使ってtools、resources、promptsを操作でき、--method tools/list--method tools/callの例が示されています。UIで一度見た確認を、CI前のsmoke testやローカル再現手順に落とすには便利です。

npx @modelcontextprotocol/inspector --cli --config mcp.dev.json --server local-readonly-dev --method tools/list

ただし、CLIだから安全というわけではありません。CLIも同じServerへ接続し、同じtoolを実行します。安全性は、UIかCLIかではなく、どのconfig、どのtransport、どのsecret、どのtoolを実行したかで決まります。

CLI smoke testで残すもの

チームで扱うなら、最低限この程度は記録します。

記録する項目

date: 2026-06-13
inspector: @modelcontextprotocol/inspector 0.22.0
server: local-readonly-dev
transport: stdio
command: node build/index.js
env: dev readonly token, no production secret
methods:
  - tools/list: pass
  - resources/list: pass
  - readonly-search: pass
blocked:
  - create-issue
  - update-ticket
  - deploy

ここで重要なのは、passした項目だけでなく、blockedにしたtoolを残すことです。AIコーディングclientへ渡すとき、人間のreviewerが「何を確認したか」だけでなく「何を確認していないか」を見られるようになります。

長期運用はInspectorではなくclient側の承認とログで守る

Inspectorは開発者ツールです。チームの通常運用で、毎回Inspectorを開いて手動承認する設計にはしません。通常運用では、AIコーディングclient側のapproval、sandbox、MCP server allowlist、API側のscope、監査ログ、CIのdry-runを組み合わせます。

Inspectorは導入前レビュー、Server更新時の差分確認、incident後の再現確認に使います。日常運用の境界は、InspectorのUIではなく、本番clientとServer側に置きます。

失敗点: 起動できたのに危ない状態

Visual動いてしまう危険パターン成功に見えても見直す状態です。
項目内容見方
本番PAT個人の本番tokenでmanual testが通ってしまいます。
HOST=0.0.0.0local process実行面がnetworkへ出ます。
認証無効Proxy tokenの境界が消えます。
初回write副作用と承認を確認する前に外部状態が変わります。
raw error共有token、URL、内部pathが混ざることがあります。

Inspector検証では、失敗で止まることより、広い権限で成功してしまうことに注意します。

Inspector検証で起きやすい失敗は、エラーで止まることより、うまく動いてしまうことです。接続できた、tool一覧が出た、read toolが動いた、write toolも通った。そこで満足すると、どの権限で通ったのかを見落とします。

よくある危ないパターン

戻し方の基準

パターン何が危ないか戻し方
個人の本番PATをenvに入れるInspectorのmanual testが本番API権限になる検証用tokenを作り直し、既存tokenを失効
HOST=0.0.0.0で共有するlocal process実行面がネットワークへ出るlocalhostに戻し、ログだけ共有
DANGEROUSLY_OMIT_AUTHを常用するProxy tokenの境界が消える既定認証に戻す
write toolを初回から実行する副作用と承認の確認前に外部状態が変わるdry-run modeを作る
error全文を貼るtoken、URL、内部pathが混ざるmaskしてから共有

失敗ログを残すなら、raw responseをそのまま貼るのではなく、status、method、tool名、入力の種類、mask済みerror、対応結果に分けます。秘密情報を含む可能性があるログは、記事、issue、チャットへ貼らないでください。

導入しない方がよいケース

次の条件に当てはまるServerは、少なくともAIコーディング環境へすぐ接続しない方がいいです。

導入を止める条件

  • tool名とdescriptionから副作用が読めない
  • read-onlyとwriteが同じtoolに混ざっている
  • 本番secretがないと起動できない
  • 失敗時にstack traceや内部URLを返す
  • HTTP Serverの認可がなく、network境界だけに依存している
  • stdio Serverが起動時に不要な外部通信やfile scanを行う
  • Inspector用configと本番client用configを分けられない

この段階で止めるのは、後ろ向きな判断ではありません。MCP ServerはAIエージェントが自律的に選び得るtool面です。人間がUIで一回成功しただけでは、エージェント運用時の安全性は確認できません。

実務で使うなら、AI client接続前のチェックリストを残す

Visual接続前チェックリスト検証結果を人間がレビューできる形にします。
項目内容見方
VersionInspectorとServerのversion、commit、build commandを残します。
TransportstdioかStreamable HTTPかを分けて記録します。
Secret検証用tokenだけを使い、本番secretを渡していないことを残します。
Toolsread-only、dry-run、writeの分類を残します。
Logserror、stdout、stderrにsecretが出ないことを残します。
Owner残るリスクと承認者を記録します。

チェックリストは安心の演出ではなく、未確認項目を見えるようにするために残します。

最後に、Inspector検証からAIコーディング環境へ移る前のチェックリストを残します。

接続前の確認項目

項目確認
Inspector version@modelcontextprotocol/inspectorの確認日とversionを書いた
Server versioncommit、package version、build commandを書いた
transportstdioかStreamable HTTPかを分けた
proxy tokentokenを共有せず、認証を無効化していない
bindinglocalhostで閉じ、外部公開していない
secret検証用tokenだけを使い、本番secretを渡していない
toolsread-only、dry-run、writeを分けた
resources読める範囲をfixtureや検証データに限定した
promptspromptに秘密情報や危険な承認省略がない
logserror、stdout、stderrにsecretが出ない
AI clientapproval、sandbox、allowlist、human reviewを別途設定した
rollbacktoken失効、config削除、Server停止の手順がある

個人検証では、この表を短く埋めるだけでも十分です。チーム導入では、owner、対象repo、接続先、許可tool、禁止tool、更新時の再検証担当まで残します。MCP Server Starter Kitのようなテンプレートを使う場合も、テンプレート自体より、このチェックリストを埋められるかを採用条件にしてください。

セキュリティ・コスト注意

Visualリスクが生まれる場所Inspector本体より接続先を見ます。
Secrets

本番secretをInspectorへ渡しません。

Writes

write toolはdry-runと人間承認を持たせます。

HTTP

AuthorizationとOriginを確認します。

stdio

cwd、env、filesystem、networkを検証用に落とします。

Cost

API、CI、model token、DB queryの再実行回数を決めます。

コストや事故は、Inspectorで押したtoolの裏側にある外部サービスから生まれます。

MCP Inspector自体の利用料金より、実際にコストやリスクを作るのは接続先です。GitHub API、社内検索、RAG、DB、チケット更新、クラウド操作、CI再実行、モデルAPI呼び出しなど、toolの裏側で動くものを見ます。

セキュリティ面では、次の原則を外さないでください。

セキュリティ原則

  • 本番secretをInspectorへ渡さない
  • read-onlyから始める
  • write toolはdry-runと人間承認を持つ
  • HTTP ServerはAuthorizationとOriginを確認する
  • stdio Serverはcwd、env、filesystem、networkを検証用に落とす
  • Inspectorの成功結果だけで本番clientへ接続しない

コストの見方

コスト面では、toolの再実行に注意します。Inspectorで何度もtoolを押すと、外部API rate limit、課金API、CI時間、モデルtoken、DB queryが積み上がることがあります。検証用tenantやfixtureを使い、実行回数と上限を決めてから試します。

MCP仕様やAIコーディング環境の更新差分を追いたい場合は、AI Dev Lab Japanのニュースレターで、実務導入に影響がある変更を拾えるようにしています。チームでMCP権限レビューやInspector検証手順を整えたい場合は、お問い合わせから相談できます。

FAQ

Visualよくある判断迷いやすい点を切り分けます。
安全性

InspectorだけでServer全体の安全性は確認しきれません。

stdio / HTTP

単純な優劣ではなく、見る境界が違います。

認証無効

通常の検証手順としては使いません。

CLI

smoke testには便利ですが、長期運用の承認フローではありません。

迷ったら、どのsecretで、どのtoolを、どの範囲へ実行するのかに戻ります。

MCP Inspectorを使えばServerの安全性は確認できますか?

確認できるのは一部です。Inspectorはtools、resources、prompts、transport、実行結果、errorを観察するのに便利ですが、Serverの供給元、依存パッケージ、認証設計、外部API scope、運用時の承認、監査ログまでは別に確認します。

stdioとStreamable HTTPはどちらが安全ですか?

単純な優劣では決まりません。stdioはlocal process、cwd、env、filesystemの影響を強く受けます。Streamable HTTPはURL、Authorization、Origin、OAuth、network境界の影響を受けます。どちらも、検証用secret、read-only、dry-run、承認付きwriteの段階分けが必要です。

DANGEROUSLY_OMIT_AUTHはローカルなら使ってもよいですか?

通常の検証手順としては使わない方がよいです。名前の通り危険側の設定です。使うとしても、使い捨てworkspace、短命token、localhost限定、短時間起動、終了後のcredential失効まで含めた例外対応にします。

Inspector CLIをCIに入れてもよいですか?

read-onlyのsmoke testなら検討できます。ただし、本番secretを渡さず、実行するmethodとtoolを限定し、出力ログをmaskし、write toolはdry-runにしてください。CLIはUIより安全な仕組みではなく、再現性を上げるための入口です。

AIコーディングclientへ接続するタイミングはいつですか?

Inspectorでmetadata、read-only、dry-run、失敗時error、ログ、secret分離を確認し、client側のapproval、sandbox、allowlist、人間レビューを設定してからです。Inspectorで接続できた直後に本番clientへ入れるのは早すぎます。

次に読むなら

参照した主な情報源

  • MCP Inspector Docs: https://modelcontextprotocol.io/docs/tools/inspector
  • MCP Inspector GitHub repository: https://github.com/modelcontextprotocol/inspector
  • MCP Inspector Releases: https://github.com/modelcontextprotocol/inspector/releases
  • MCP Security Best Practices: https://modelcontextprotocol.io/docs/tutorials/security/security_best_practices
  • MCP draft Authorization specification: https://modelcontextprotocol.io/specification/draft/basic/authorization
  • MCP Transports specification 2025-11-25: https://modelcontextprotocol.io/specification/2025-11-25/basic/transports

更新履歴

Visual確認した情報この記事の確認時点です。
  1. 2026-06-13

    MCP Inspector 0.22.0とMCP TypeScript SDK 1.29.0を確認しました。

  2. 仕様

    MCP transports仕様、draft authorization仕様、security best practicesを確認しました。

  3. CLI

    npxでInspector helpを確認し、config、server、cli、transport、server-urlを見ました。

MCPまわりは更新が早いため、確認日とversionを一緒に扱います。

  • 2026-06-13: MCP Inspector 0.22.0、MCP TypeScript SDK 1.29.0、公式Docs、GitHub README、release、MCP transports仕様、draft authorization仕様、security best practicesを確認。npx -y @modelcontextprotocol/inspector@0.22.0 --help--config--server--cli--transport--server-urlを確認しました。