Hermes AgentのMCPを最小権限にする|21ツールを接続前に棚卸しする

Hermes AgentのMCPを最小権限にする|21ツールを接続前に棚卸しする

MCP サーバーを 1 台つなぐだけで、21 個のツールがエージェントへ増えました。その中には検索データの読み取りだけでなく、サイト登録や Sitemap 削除も含まれます。接続できたことと、安全に任せられることは別です。

2026 年 9 月 5 日、Hermes Agent v0.21.0 で Search Console 用 MCP を調べました。今回は新しい連携を増やさず、既存接続の transport とツール一覧を CLI から確認します。

前回から今回への差分

前回のTool・MCP・Plugin・Computer Useの選び方では、外部操作の経路を選びました。今回は MCP を選んだ後に、見せるツールを絞るところまで進めます。

前回完了時今回完了後
MCPを使う場面を判断できます接続先と提供ツールを実測できます
server単位で権限を考えますtool単位の許可リストを作れます
接続成功を確認します書き込み操作を会話へ出さない設計にできます

MCP をまだ追加していない場合は「カタログを先に読む」から始めます。すでに接続済みなら、その章は飛ばせます。接続と呼び出しが正常なら「よくあるエラー」も飛ばせます。

なぜ接続後ではなく接続前に絞るのか

エージェントは、見えているツールから目的に合うものを選びます。削除ツールが不要でも、登録されたままなら選択肢には残ります。承認画面は最後の防壁ですが、不要な操作を最初から隠す方が単純です。

私は権限を三段階で考えます。

MCPサーバー

    ├── 接続を許すか          enabled / transport

    ├── どの道具を見せるか    tools.include / tools.exclude

    └── 実行時に止めるか      trust / approval

              └── 外部サービスの権限

tools.includeはツールの登録範囲を狭めます。trust: untrustedは、読み取り専用と注釈されていない呼び出しを承認対象にします。さらに、Google や GitHub 側のアカウント権限も残ります。どれか 1 つで全部を守る構造ではありません。

用語表

用語ここでの意味
MCP外部のツールサーバーとエージェントを接続する規格です
transportstdioまたはHTTPで接続する経路です
discovery接続時にサーバーからツール定義を取得する処理です
include登録するツールだけを指定する許可リストです
exclude指定したツールを登録対象から外す拒否リストです
trust書き込み系ツールを承認対象にする信頼区分です
readOnlyHintサーバーが示す読み取り専用の注釈です

まずCLIと接続先を確認する

Hermes Agent v0.21.0 のmcpサブコマンドには、listtestconfigurecataloginstallなどがあります。

hermes mcp --help

確認した出力の要点です。

{serve,add,remove,rm,list,ls,test,configure,config,login,reauth,picker,catalog,install}

次に、設定済みサーバーを一覧にします。

hermes mcp list

2026 年 9 月 5 日の実行では、search-consoleが stdio transport で有効になっていました。表示には server 名、transport、tool filter、status が並びます。ここで覚えのない接続があれば、先へ進む前に設定元を確認します。

21ツールを実際に列挙する

testは疎通だけでなく、discovery で見つけたツール名も返します。

hermes mcp test search-console

実行結果は接続成功で、21 個のツールを検出しました。

Testing 'search-console'...
Auth: none
✓ Connected (10005ms)
✓ Tools discovered: 21

一覧にはanalytics_queryinspection_inspectのような読み取り操作がありました。一方で、sites_managesitemaps_deleteindexing_submitも含まれます。検索実績を読むだけの定期処理なら、この 3 つを常時見せる理由はありません。

接続時間の10005msは今回の実測値です。毎回同じ時間になるわけではありません。成功判定では、秒数よりConnectedと検出数を見ます。

許可リストは用途から作る

日次の検索レポートなら、最初は読み取りに必要な関数だけで足ります。Hermes の対話式設定は、現在の選択を保ったままツールを切り替えられます。

hermes mcp configure search-console

私なら、検索分析用として次の候補から始めます。

sites_list
analytics_query
analytics_compare
analytics_anomalies
inspection_inspect
seo_audit
site_health_check

これは Search Console MCP が公開した 21 個のうち、今回の読み取り用途に合う候補です。Sitemap の送信や削除、site property の変更、Indexing API への送信は外します。後で必要になった時だけconfigureを開き直します。

YAML ではtools.includeが許可リストです。server 固有の command や資格情報を記事へ写さず、tool policy だけを示すと次の形になります。

tools:
  include:
    - sites_list
    - analytics_query
    - analytics_compare
    - analytics_anomalies
    - inspection_inspect
    - seo_audit
    - site_health_check
  resources: false
  prompts: false

includeexcludeを同時に指定すると、公式仕様ではincludeが優先されます。私は両方を重ねません。許可する名前だけを読み返せる形にします。

設定を保存した後、起動中の Hermes セッションでは次を実行します。

/reload-mcp

設定を読み直し、利用可能なツール一覧を更新する操作です。再読み込み後に許可したツールだけが残っていることを確認します。設定ファイルの変更だけで、起動済みの一覧も変わったとは判断しません。

信頼できないサーバーは実行時にも止める

ツール名を絞っても、外部サーバーの実装が説明どおりとは限りません。自分で管理していない接続にはtrust: untrustedを使います。

trust: untrusted

この設定では、readOnlyHint: trueが付かないツール呼び出しに承認が必要です。ただし、注釈はサーバー自身が返します。公式リファレンスも、虚偽の注釈を前提に境界を考えるよう示しています。そこで、許可リスト、実行時承認、外部アカウントの最小権限を重ねます。

無人 cron では、承認待ちが処理停止になります。だからといって承認を外すのではなく、cron 専用 profile に読み取り専用の資格情報と tool filter を置く方が追いやすいです。対話用 profile と同じ接続を使い回さない設計が合います。

カタログを先に読む

新規導入では、install より先に catalog を読みます。

hermes mcp catalog

Hermes の公式カタログは、Nous Research が review して取り込んだ manifest を掲載します。ただし、掲載済みでも外部コードは動きます。公式ドキュメントは、manifest のsourceinstall.bootstraptransport.commandを確認してから導入するよう求めています。

導入後は、同じ 3 つのコマンドで確認できます。

hermes mcp list
hermes mcp test search-console
hermes mcp configure search-console

listで設定状態を見て、testで実際の提供ツールを読み、configureで公開範囲を狭めます。この順番なら、接続できない状態と権限が広すぎる状態を分けて調べられます。

よくあるエラー

症状原因対処
serverはenabledなのにツールが出ません接続失敗、またはfilterで全toolを外していますhermes mcp test search-consoleでdiscovery結果を確認します
想定より多くのツールが見えますincludeが未設定ですhermes mcp configure search-consoleで必要な名前だけを選びます
excludeしたtoolが残りますincludeもあり、そちらが優先されていますpolicyをincludeだけに統一します
OAuth後も呼び出しが止まりますtoken未保存やheadless callback失敗が考えられますLinearの場合は、新しいterminalからhermes mcp login linearを実行します
cronが承認待ちで終わりません書き込み系toolが無人処理へ残っています読み取り専用profileへ分け、toolと外部権限を絞ります
testは通るのに操作が失敗しますdiscovery成功とAPI権限は別です外部serviceのaccount権限と対象resourceを確認します

MCP の数より、公開した操作の範囲を管理します。今回の接続は 1 台でしたが、検出されたツールは 21 個でした。私は server 名だけで安全性を判断せず、実際の tool list を読み、日次処理に必要な読み取り操作だけを残します。

一次情報

資料確認した内容
Hermes Agent公式ドキュメント: MCPcatalog、install、configure、stdioとHTTP、tool選択の流れ
Hermes Agent公式: MCP Config Referenceincludeとexcludeの優先、trust、readOnlyHint、timeoutの仕様
Hermes Agent公式source: optional-mcps公式catalogでreview済みmanifestを管理する場所
Model Context Protocol公式仕様: Security Best PracticesMCP実装で考慮する攻撃経路と安全対策
この記事をシェア