Skip to main content
Glama

Tunnel Manager

CLI または API | MCP | エージェント

PyPI - Version MCP Server PyPI - Downloads GitHub Repo stars GitHub forks GitHub contributors PyPI - License GitHub GitHub last commit (by committer) GitHub pull requests GitHub closed pull requests GitHub issues GitHub top language GitHub language count GitHub repo size GitHub repo file count (file type) PyPI - Wheel PyPI - Implementation

バージョン: 3.1.0

ドキュメント — API、CLI、MCP、そしてエージェントインターフェースにわたるインストール、デプロイ、使用法は、 公式ドキュメント に管理されています。


Related MCP server: mcp-ssh

概要

Tunnel Manager は、リモートホストへのSSHトンネルを作成し、Agentic AI向けのMCPサーバーとしてホストするために直接インターフェースする、本番グレードのエージェントおよび Model Context Protocol (MCP) サーバーです。


主要な機能

  • 統合されたアクションルーティングMCPツール: メソッドを最適化されたトグル可能なツールモジュールにグループ化することで、LLMコンテキストにおけるトークンオーバーヘッドを最小化し、ツールの肥大化を排除します。

  • エンタープライズグレードのセキュリティ: Eunomiaポリシー、OIDCトークン委任、および詳細な実行コンテキスト追跡を包括的にサポートします。

  • 統合グラフエージェント: Agent Control Protocol (ACP) と標準Webインターフェース (AG-UI) をサポートする組み込みのPydantic AIエージェント。

  • ネイティブテレメトリとトレーシング: すぐに使えるOpenTelemetryエクスポートとネイティブのLangfuseトレーシング。


CLI または API

このエージェントは、リモートホストへのSSHトンネルを作成し、Agentic AI向けのMCPサーバーとしてホストするAPIをラップしています。プログラム的にも、統合された実行エントリポイントを介しても操作できます。

基盤となるAPIラッパー、拡張スキーマバインディング、開発者SDKリファレンスの使用方法の詳細な手順は、docs/index.md に管理されています。


MCP

このサーバーは、動的なアクションルーティングツールを利用して、トークンオーバーヘッドを最適化し、IDE互換性を最大化します。

利用可能なMCPツール

ライブMCPサーバーから自動生成 — 手動で編集しないでください。

凝縮されたアクションルーティングツール (MCP_TOOL_MODE=condensed)

MCPツール

トグル環境変数

説明

tm_files

FILETOOL

リモートホストでの高度なファイル操作。

tm_hosts

HOSTTOOL

ローカルホストエイリアスインベントリを管理します。

tm_inventory

INVENTORYTOOL

YAMLホストグループに対する一括インベントリ操作。

tm_operations

OPERATIONSTOOL

操作ライフサイクルとセッション管理。

tm_remote

REMOTETOOL

共有接続パラメータを使用したシングルホストSSH操作。

tm_security

SECURITYTOOL

セキュリティスキャンとコンプライアンス。

tm_system

SYSTEMTOOL

SSHによるリモートシステムインテリジェンス。

tunnel_ingest_hosts

INGESTTOOL

管理対象のSSHインベントリをリスト表示し、epistemic-graph KGにプッシュします。

冗長な1:1 APIマッピングツール (MCP_TOOL_MODE=verbose または both)

MCPツール

トグル環境変数

説明

tunnel_manager_add_host

HOST_MANAGERTOOL

add_host 操作を呼び出します。

tunnel_manager_get_host

HOST_MANAGERTOOL

エイリアスでホスト設定を取得し、呼び出し元が権限を持たないエイリアスを拒否します。

tunnel_manager_list_hosts

HOST_MANAGERTOOL

呼び出し元が権限を持つホストエイリアスをリスト表示し、シークレットは編集されます。

tunnel_manager_load_inventory

HOST_MANAGERTOOL

load_inventory 操作を呼び出します。

tunnel_manager_remove_host

HOST_MANAGERTOOL

remove_host 操作を呼び出します。

tunnel_manager_save_inventory

HOST_MANAGERTOOL

save_inventory 操作を呼び出します。

8つのアクションルーティングツール · 6つの冗長な1:1ツール。各ツールは、その <DOMAIN>TOOL トグルが false に設定されていない限り有効です。MCP_TOOL_MODE はサーフェスを選択します (**intent デフォルト* — 6つの動詞ツール、必要に応じてロードされる詳細セット · condensed アクションルーティング · verbose 1:1 · both)。自動生成 — 手動で編集しないでください。*

詳細なツールスキーマ、パラメータ形状、検証制約は、docs/usage.md に保存されています。

動的ツール選択と可視性

このMCPサーバーは、実行時の動的なツールセット選択と可視性フィルタリングをサポートしています。これにより、LLMのコンテキストウィンドウを肥大化させないために、公開するツールのセットを制限できます。

ツールフィルタリングは、複数の入力チャネルを介して設定できます:

  • CLI引数: 起動時に --tools または --toolsets (または無効化対応の --disabled-tools と --disabled-toolsets) を渡します。

  • 環境変数: 標準の環境変数を定義します:

    • MCP_ENABLED_TOOLS / MCP_DISABLED_TOOLS

    • MCP_ENABLED_TAGS / MCP_DISABLED_TAGS

  • HTTP SSEリクエストヘッダー: トランスポート初期化中にカスタムヘッダーを渡します:

    • x-mcp-enabled-tools / x-mcp-disabled-tools

    • x-mcp-enabled-tags / x-mcp-disabled-tags

  • HTTP SSEリクエストクエリパラメータ: トランスポート接続URLに直接クエリパラメータを追加します:

    • ?tools=tool1,tool2

    • ?tags=tag1

クエリ文字列またはパラメータが指定されると、LLMフリーの ナレッジグラフ解決レイヤー (DynamicToolOrchestrator を使用) が、クエリの意図を既知のツールタグ、名前、または説明と照合し、安全なフォールバックと自動化された24時間バックグラウンドキャッシュ更新を行います。


MCP設定例

コネクタ焦点の [mcp] エクストラをインストールします。 例では tunnel-manager[mcp] を使用して、 agent-utilities[mcp] を介して FastMCP / FastAPI を追加します。必要な Agent Utilities コア は引き続き epistemic-graph[full] を保持します。[agent-runtime] エクストラはさらに モデルオーケストレーションを有効にします。

stdio トランスポート (ローカルIDE — Cursor、Claude Desktop、VS Code)

{
  "mcpServers": {
    "tunnel-manager-mcp": {
      "command": "uvx",
      "args": [
        "--from",
        "tunnel-manager[mcp]",
        "tunnel-manager-mcp"
      ],
      "env": {
        "MCP_TOOL_MODE": "intent",
        "FILETOOL": "True",
        "HOSTTOOL": "True",
        "INGESTTOOL": "True",
        "INVENTORYTOOL": "True",
        "OPERATIONSTOOL": "True",
        "REMOTETOOL": "True",
        "SECURITYTOOL": "True",
        "SYSTEMTOOL": "True",
        "TUNNEL_IDENTITY_FILE": "~/.ssh/id_ed25519",
        "TUNNEL_INVENTORY_GROUP": "all",
        "TUNNEL_KG_INGEST": "true",
        "TUNNEL_KNOWN_HOSTS": "~/.ssh/known_hosts",
        "TUNNEL_MANAGER_HEALTH_AGGREGATE_S": "3600",
        "TUNNEL_MANAGER_HEALTH_INGEST": "true",
        "TUNNEL_MANAGER_HOSTS": "r510,r710,r820,rw710",
        "TUNNEL_MAX_THREADS": "6",
        "TUNNEL_PARALLEL": "False",
        "TUNNEL_REMOTE_PORT": "22"
      }
    }
  }
}

ランタイム参照には、GraphOS などのエイリアス対応ランチャーが必要です。他の ランチャーは、それらのエントリを省略し、解決された値を独自の ランタイムシークレット境界を介して注入する必要があります。

Streamable-HTTP トランスポート (ネットワーク / 本番)

{
  "mcpServers": {
    "tunnel-manager-mcp": {
      "command": "uvx",
      "args": [
        "--from",
        "tunnel-manager[mcp]",
        "tunnel-manager-mcp",
        "--transport",
        "streamable-http",
        "--port",
        "8000"
      ],
      "env": {
        "TRANSPORT": "streamable-http",
        "HOST": "127.0.0.1",
        "PORT": "8000",
        "MCP_TOOL_MODE": "intent",
        "FILETOOL": "True",
        "HOSTTOOL": "True",
        "INGESTTOOL": "True",
        "INVENTORYTOOL": "True",
        "OPERATIONSTOOL": "True",
        "REMOTETOOL": "True",
        "SECURITYTOOL": "True",
        "SYSTEMTOOL": "True",
        "TUNNEL_IDENTITY_FILE": "~/.ssh/id_ed25519",
        "TUNNEL_INVENTORY_GROUP": "all",
        "TUNNEL_KG_INGEST": "true",
        "TUNNEL_KNOWN_HOSTS": "~/.ssh/known_hosts",
        "TUNNEL_MANAGER_HEALTH_AGGREGATE_S": "3600",
        "TUNNEL_MANAGER_HEALTH_INGEST": "true",
        "TUNNEL_MANAGER_HOSTS": "r510,r710,r820,rw710",
        "TUNNEL_MAX_THREADS": "6",
        "TUNNEL_PARALLEL": "False",
        "TUNNEL_REMOTE_PORT": "22"
      }
    }
  }
}

または、url で事前デプロイされた Streamable-HTTP インスタンスに接続します:

{
  "mcpServers": {
    "tunnel-manager-mcp": {
      "url": "http://localhost:8000/tunnel-manager-mcp/mcp"
    }
  }
}

レビュー済みコンテナイメージを最小権限のstdio子プロセスとして実行します (リスナーや 公開ポートなし):

docker run -i --rm \
  --read-only \
  --cap-drop=ALL \
  --security-opt=no-new-privileges \
  --pids-limit=256 \
  --tmpfs /tmp:rw,noexec,nosuid,nodev,size=64m \
  -e TRANSPORT=stdio \
  -e MCP_TOOL_MODE=intent \
  -e FILETOOL=True \
  -e HOSTTOOL=True \
  -e INGESTTOOL=True \
  -e INVENTORYTOOL=True \
  -e OPERATIONSTOOL=True \
  -e REMOTETOOL=True \
  -e SECURITYTOOL=True \
  -e SYSTEMTOOL=True \
  -e TUNNEL_IDENTITY_FILE=~/.ssh/id_ed25519 \
  -e TUNNEL_INVENTORY_GROUP=all \
  -e TUNNEL_KG_INGEST=true \
  -e TUNNEL_KNOWN_HOSTS=~/.ssh/known_hosts \
  -e TUNNEL_MANAGER_HEALTH_AGGREGATE_S=3600 \
  -e TUNNEL_MANAGER_HEALTH_INGEST=true \
  -e TUNNEL_MANAGER_HOSTS=r510,r710,r820,rw710 \
  -e TUNNEL_MAX_THREADS=6 \
  -e TUNNEL_PARALLEL=False \
  -e TUNNEL_REMOTE_PORT=22 \
  registry.example.invalid/tunnel-manager@sha256:<digest> tunnel-manager-mcp

コンテナ化されたネットワークHTTPの場合、認証されたTLSイングレス (または 直接サーバーTLS)、正確な MCP_ALLOWED_HOSTS、そしてオペレーター所有のデプロイプロファイルを通じた 正確な信頼プロキシCIDRポリシーを提供します。ジェネレーターは、 認証されていない非ループバックリスナーを生成しません。

コード読み取り環境サーフェス (MCP_TOOL_MODE + パッケージ変数) から自動生成 — 手動で編集しないでください。

追加のデプロイオプション

tunnel-manager は、ローカルのstdioプロセスまたはコンテナとして、またはリモートの ネットワーク境界の背後で実行できます。 デプロイガイド に 詳細なトランスポート契約が記載されています。

  • ローカルコンテナ — レビュー済みの不変イメージを、リスナーや公開ポートのない 最小権限のstdio子プロセスとして起動します。

  • リモートURL — オペレーター提供の認証済みHTTPSイングレスを介して接続します。 そのURL、送信ID参照、信頼プロファイル、正確な MCP_ALLOWED_HOSTS を AgentConfig に保持します。


インベントリ

tunnel-manager は、短いホストエイリアス (例: edge-node) をSSH接続詳細にマッピングする 単一の共有YAML インベントリ から動作します。すべてのエコシステムサーフェスは 同じファイル を読み取ります — HostManager API、tunnel-manager CLI、MCPサーバー、 container-manager-mcp (その cm_* ホストエイリアス)、そして ssh-bootstrap スキル — そのため、 フリートを一度定義するだけです。

  • 場所 — ~/.config/agent-utilities/inventory.yml (.yml 推奨)。同じパスにある従来の inventory.yaml は、.yml が存在しない場合にも引き続き読み取られるため、既存の インストールは動作し続けます。TUNNEL_INVENTORY で上書きします。

  • 管理 は inventory サブコマンドで行います:

    tunnel-manager inventory init     # write a commented inventory.yml template (--force to overwrite)
    tunnel-manager inventory doctor   # validate hosts/groups; --fix migrates legacy .yaml -> .yml
    tunnel-manager inventory show     # print the resolved path + host/group summary

完全なスキーマ、すべてのホストフィールド、コピーペーストテンプレート、上書きオプションは、 インベントリガイド にあります。


環境変数

パッケージ環境変数

変数

例

説明

HOST

127.0.0.1

PORT

8000

TRANSPORT

stdio

オプション: stdio、streamable-http、sse

ENABLE_OTEL

True

OTEL_EXPORTER_OTLP_ENDPOINT

http://localhost:8080/api/public/otel

OTEL_EXPORTER_OTLP_PUBLIC_KEY

secret-injected

OTEL_EXPORTER_OTLP_SECRET_KEY

secret-injected

OTEL_EXPORTER_OTLP_PROTOCOL

http/protobuf

EUNOMIA_TYPE

none

オプション: none、embedded、remote

EUNOMIA_POLICY_FILE

mcp_policies.json

EUNOMIA_REMOTE_URL

http://eunomia-server:8000

TUNNEL_IDENTITY_FILE

~/.ssh/id_ed25519

DEBUG

False

PYTHONUNBUFFERED

1

TUNNEL_REMOTE_HOST

—

デフォルトのリモートホスト(例: 198.51.100.10)

TUNNEL_REMOTE_PORT

22

デフォルトのSSHポート

TUNNEL_USERNAME

—

デフォルトのSSHユーザー名

TUNNEL_PASSWORD_REF

—

env://、vault://、secret://、または sqlite:// 参照

TUNNEL_KNOWN_HOSTS

~/.ssh/known_hosts

独立して検証されたサーバーホストキー

TUNNEL_CERTIFICATE

—

SSH証明書ファイルへのパス

TUNNEL_PROXY_COMMAND

—

ジャンプホスト/踏み台接続用のSSH ProxyCommand

TUNNEL_INVENTORY

—

インベントリファイルへのパス(デフォルトはXDG設定パス)

TUNNEL_INVENTORY_GROUP

all

対象とするインベントリホストグループ

TUNNEL_PARALLEL

False

ホスト操作を並列実行する

TUNNEL_MAX_THREADS

6

TUNNEL\_PARALLEL=True の場合の最大ワーカースレッド数

TUNNEL_MAX_COMMAND_CHARS

65536

TUNNEL_MAX_OUTPUT_BYTES

1048576

TUNNEL_MAX_TRANSFER_BYTES

268435456

TUNNEL_MAX_FLEET_HOSTS

1000

TUNNEL_MAX_CONCURRENCY

64

XDG_CONFIG_HOME

—

インベントリ解決用のベース設定ディレクトリ(デフォルトは ~/.config)

HOSTTOOL

True

グループ化された condensed サーフェスのトグル。register\_<tag>\_tools レジストラごとに1つ。

REMOTETOOL

True

INVENTORYTOOL

True

OPERATIONSTOOL

True

SYSTEMTOOL

True

FILETOOL

True

SECURITYTOOL

True

INGESTTOOL

True

KG取り込みツール(SSHインベントリを epistemic-graph に一覧表示)

TUNNEL_KG_INGEST

true

list でのデフォルト有効なベストエフォートのインベントリ取り込み

TUNNEL_MANAGER_HEALTH_INGEST

true

デフォルト有効なベストエフォートのネットワークシグナル傾向の取り込み

TUNNEL_MANAGER_HEALTH_AGGREGATE_S

3600

サンプルが1つの :HealthTrend ノード/ホスト/シグナルに集約されるウィンドウ(秒)

TUNNEL_MANAGER_HOSTS

r510,r710,r820,rw710

プローブ/導出するカンマ区切りのインベントリエイリアス(デフォルト: 全インベントリ)

TUNNEL_MANAGER_HEALTH_NOTIFY_URL

—

ネットワーク異常通知用のベストエフォートWebhook

継承されたエージェントユーティリティ変数(すべてのコネクタに適用)

変数

例

説明

MCP_TOOL_MODE

intent

ツールサーフェス: intent | condensed | verbose | both

MCP_ENABLED_TOOLS

—

カンマ区切りのツール許可リスト

MCP_DISABLED_TOOLS

—

カンマ区切りのツール拒否リスト

MCP_ENABLED_TAGS

—

カンマ区切りのタグ許可リスト

MCP_DISABLED_TAGS

—

カンマ区切りのタグ拒否リスト

MCP_CLIENT_AUTH

—

送信MCP子認証: oidc-client-credentials | basic | none

OIDC_CLIENT_ID

—

OIDCクライアントID(サービスアカウント認証)

OIDC_CLIENT_SECRET_REF

secret://identity/oidc-client-secret

OIDCサービスアカウントのランタイムシークレット参照

MCP_BASIC_AUTH_USERNAME

—

HTTP Basic ユーザー名(MCP_CLIENT_AUTH=basic)

MCP_BASIC_AUTH_PASSWORD_REF

secret://identity/mcp-basic-password

HTTP Basic 認証のランタイムシークレット参照(MCP_CLIENT_AUTH=basic)

MCP_URL

http://localhost:8000/mcp

エージェントが接続するMCPサーバーのURL

PROVIDER

openai

エージェントのLLMプロバイダー

MODEL_ID

gpt-4o

エージェントのモデルID

ENABLE_WEB_UI

True

AG-UI Webインターフェースを提供する

パッケージ44個 + 継承変数14個。.env.example + 共有エージェントユーティリティセットから自動生成 — 編集しないでください。

サーバーが読み取るすべての変数を目的別にグループ化しています。コピー&ペースト用の出発点として .env.example を参照してください。

SSH接続と認証情報

変数

説明

デフォルト

TUNNEL_IDENTITY_FILE

SSH秘密鍵へのパス

~/.ssh/id_ed25519

TUNNEL_USERNAME

SSHユーザー名

—

TUNNEL_PASSWORD_REF

env://、vault://、secret://、または sqlite:// SSHパスワード参照

—

TUNNEL_KNOWN_HOSTS

独立して検証されたSSHサーバーキーのトラストストア

~/.ssh/known_hosts

TUNNEL_CERTIFICATE

SSH証明書へのパス

—

TUNNEL_REMOTE_HOST

デフォルトのリモートホスト

—

TUNNEL_REMOTE_PORT

デフォルトのリモートSSHポート

22

TUNNEL_PROXY_COMMAND

ジャンプホスト用のSSH ProxyCommand

—

インベントリと並列性

変数

説明

デフォルト

TUNNEL_INVENTORY

共有インベントリへのパス(.yml推奨、.yamlはレガシーフォールバック)

~/.config/agent-utilities/inventory.yml

TUNNEL_INVENTORY_GROUP

デフォルトのインベントリホストグループ

—

TUNNEL_PARALLEL

一括操作を並列実行

—

TUNNEL_MAX_THREADS

SSHワーカースレッドの最大同時実行数

—

XDG_CONFIG_HOME

インベントリの解決に使用するベース設定ディレクトリ

~/.config

MCPサーバー / トランスポート

変数

説明

デフォルト

TRANSPORT

stdio、streamable-http、またはssse

stdio

HOST

バインドホスト(HTTPトランスポート)

127.0.0.1

PORT

バインドポート(HTTPトランスポート)

8000

MCP_TOOL_MODE

ツールサーフェス:condensed、verbose、またはboth

condensed

MCP_ENABLED_TOOLS / MCP_DISABLED_TOOLS

カンマ区切りのツール許可/拒否リスト

—

MCP_ENABLED_TAGS / MCP_DISABLED_TAGS

カンマ区切りのタグ許可/拒否リスト

—

DEBUG

詳細ログ出力

False

PYTHONUNBUFFERED

バッファリングなしの標準出力(コンテナ内で推奨)

1

ツールトグル

各アクションルーティングツールは、トグル環境変数(falseに設定)で個別に無効化できます。 完全なリストは上記の利用可能なMCPツールテーブルにあります (HOSTTOOL、REMOTETOOL、INVENTORYTOOL、OPERATIONSTOOL、 SYSTEMTOOL、FILETOOL、SECURITYTOOL)。

テレメトリとガバナンス

変数

説明

デフォルト

ENABLE_OTEL

OpenTelemetryエクスポートを有効化

True

OTEL_EXPORTER_OTLP_ENDPOINT

OTLPコレクターエンドポイント

—

OTEL_EXPORTER_OTLP_PUBLIC_KEY / OTEL_EXPORTER_OTLP_SECRET_KEY

OTLP認証キー

—

OTEL_EXPORTER_OTLP_PROTOCOL

OTLPプロトコル(例:http/protobuf)

—

EUNOMIA_TYPE

認可モード:none、embedded、remote

none

EUNOMIA_POLICY_FILE

組み込みポリシーファイル

mcp_policies.json

EUNOMIA_REMOTE_URL

リモートEunomiaサーバーURL

—

エージェントランタイム(フル[agent]ランタイムのみ)

変数

説明

デフォルト

MCP_URL

エージェントが接続するMCPサーバーのURL

http://localhost:8000/mcp

PROVIDER

LLMプロバイダー(例:openai)

openai

MODEL_ID

モデルID(例:gpt-4o)

gpt-4o

ENABLE_WEB_UI

AG-UI Webインターフェースを提供

True

エージェント

このリポジトリには、完全統合されたPydantic AI Graph Agentが含まれています。Agent Control Protocol (ACP) を介して通信し、Agent Web UI (AG-UI) およびターミナルインターフェースとシームレスに連携します。

Agent CLIの実行

対話型コマンドラインエージェントを起動するには:

# Set credentials
export TUNNEL_IDENTITY_FILE="your_value"
export DEBUG="your_value"
export PYTHONUNBUFFERED="your_value"

# Run the agent server
tunnel-manager-agent --provider openai --model-id gpt-4o

Docker Composeオーケストレーション

以下のdocker/agent.compose.ymlは、Agent、Web UI、ターミナルインターフェースをまとめて設定します:

version: '3.8'

services:
  tunnel-manager-mcp:
    image: example/tunnel-manager:mcp
    container_name: tunnel-manager-mcp
    hostname: tunnel-manager-mcp
    restart: always
    env_file:
      - ../.env
    environment:
      - PYTHONUNBUFFERED=1
      - HOST=0.0.0.0
      - PORT=8000
      - TRANSPORT=streamable-http
    ports:
      - "8000:8000"
    healthcheck:
      test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/health')"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 10s
    logging:
      driver: json-file
      options:
        max-size: "10m"
        max-file: "3"

  tunnel-manager-agent:
    image: example/tunnel-manager@sha256:<digest>
    container_name: tunnel-manager-agent
    hostname: tunnel-manager-agent
    restart: always
    depends_on:
      - tunnel-manager-mcp
    env_file:
      - ../.env
    command: [ "tunnel-manager-agent" ]
    environment:
      - PYTHONUNBUFFERED=1
      - HOST=0.0.0.0
      - PORT=9002
      - MCP_URL=http://tunnel-manager-mcp:8000/mcp
      - PROVIDER=${PROVIDER:-openai}
      - MODEL_ID=${MODEL_ID:-gpt-4o}
      - ENABLE_WEB_UI=True
      - ENABLE_OTEL=True
    ports:
      - "9002:9002"
    healthcheck:
      test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:9002/health')"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 10s
    logging:
      driver: json-file
      options:
        max-size: "10m"
        max-file: "3"

詳細なグラフノードアーキテクチャの説明、カスタムスキル設定、エージェントトレースガイドはdocs/deployment.mdで参照できます。


セキュリティとガバナンス

エンタープライズ対応のagent-utilitiesコア上に直接構築されており、標準のセキュリティパラメータを完全にサポートしています:

アクセス制御とポリシー適用

  • Eunomiaポリシー: きめ細かいポリシー駆動のツール認可。none、ローカルembedded(mcp_policies.json)、または集中型remoteモードをサポート。

  • OIDCトークンデリゲーション: Web UI / ACP → Agent → MCP の認証ユーザー資格情報のフローに対応したRFC 8693トークン交換に準拠。

  • スコープ付き資格情報: 実行コンテキストは特定の呼び出し元IDに制限されます。

ランタイムセキュリティグリッド

機能

機能性

有効化

ツールガード

ヒューマンインザループ検証による機密性検査

デフォルトで有効

プロンプトインジェクション防御

入力スキャン、繰り返し監視、再帰ループブロック

デフォルトで有効

コンテキスト安全ガード

スタックループ検出とコンテキストオーバーフロー事前警告

デフォルトで有効


インストール

実行したい内容に合ったエクストラを選択してください:

エクストラ

インストール内容

使用する場合

tunnel-manager[mcp]

コネクタ特化型MCPサーバー(agent-utilities[mcp] — FastMCP/FastAPI + epistemic-graph[full])

MCPサーバーのみを実行する場合(最小インストール/イメージ)

tunnel-manager[agent]

エージェントランタイム(agent-utilities[agent-runtime,logfire] — モデルオーケストレーション + epistemic-graph[full])

統合エージェントを実行する場合

tunnel-manager[all]

すべて(mcp + agent + logfire)

開発 / 両方のサーフェス

# Connector-focused MCP server (includes the shared graph engine)
uv pip install "tunnel-manager[mcp]"

# Agent runtime (adds model orchestration to the shared graph engine)
uv pip install "tunnel-manager[agent]"

# Everything (development)
uv pip install "tunnel-manager[all]"      # or: python -m pip install "tunnel-manager[all]"

コンテナイメージ(:mcp vs :agent)

1つのマルチステージdocker/Dockerfileが、--targetで選択される2つの適切なサイズのイメージをビルドします:

イメージタグ

ビルドターゲット

内容

エントリポイント

example/tunnel-manager:mcp

--target mcp

tunnel-manager[mcp] — コネクタ特化型、epistemic-graph[full]を含む。モデルオーケストレーションスタックなし

tunnel-manager-mcp

example/tunnel-manager@sha256:<digest>

--target agent(デフォルト)

tunnel-manager[agent] — エージェントランタイム、モデルオーケストレーション + epistemic-graph[full]

tunnel-manager-agent

docker build --target mcp   -t example/tunnel-manager:mcp    docker/   # connector-focused MCP server
docker build --target agent -t example/tunnel-manager:agent-local docker/   # agent runtime

docker/mcp.compose.ymlはコネクタ特化型の:mcpサーバーを実行し、docker/agent.compose.ymlは同一配置の:mcpサイドカーとともにエージェント(immutable agent digest)を実行します。

ナレッジグラフデータベース(epistemic-graph)

[mcp]と[agent]の両方が、必須のAgent Utilitiesコア依存関係(epistemic-graph[full])を通じてepistemic-graphエンジンを搭載しています。[mcp]エクストラはサーバーをコネクタ特化型に保ち、[agent]はさらにモデルオーケストレーションを有効にします。ローカルデプロイではバンドルされたエンジンを使用できます。本番環境や共有状態の場合は、epistemic-graphを専用データベースサービスとして実行し、ランタイムがそれを使用するように設定してください。デプロイレシピ(シングルノード + Raft HA)、接続設定、アーキテクチャ図はepistemic-graphデプロイメントガイドに文書化されています。


ドキュメント

完全なドキュメントは公式ドキュメントサイトとして公開されており、インストール、デプロイ、日常運用の推奨リファレンスです。

ページ

内容

インストール

pip、ソース、エクストラ、ビルド済みDockerイメージ

インベントリ

共有inventory.yaml — デフォルトの場所、作成方法、形式、オーバーライド

デプロイ

MCPおよびエージェントサーバーの実行、Compose、Caddy + Technitium、環境設定

使用方法

MCPツール、HostManager / Tunnel API、CLI

概要

エコシステムの役割、分散SSHスウォームスケーリング、MCP設定

Teleportアーキテクチャ

証明書、プロキシ、クロスOS接続モデル

コンセプト

コンセプトレジストリ(CONCEPT:TUN-*)

AGENTS.mdは正規のコントリビューター/エージェントガイダンスです。

メンテナー

プロジェクトのコントリビューターチームによって保守されています。パッケージメタデータは、個人のIDではなく意図的にロールアドレスを使用しています。


コントリビュート

コントリビューションを歓迎します!プルリクエストを送信する前に、ローカルチェックを実行してコード品質を確保してください:

  • ruff format .でコードをフォーマット

  • ruff check .でコードをリント

  • mypy .で型安全性を検証

  • pytestでテストスイートを実行

agent-utilities-deploymentでデプロイ

このパッケージを統合された agent-utilities-deployment ワークフローでプロビジョニングしてください。インストール済みパッケージ、編集可能ソース、またはイミュータブルコンテナのパスを選択し、AgentConfig にはランタイムのシークレットと TLS プロファイルの参照のみを記録し、doctor、登録、ポリシー、可観測性、ロールバックのゲートを実行します。エージェントに 「tunnel-manager を agent-utilities-deployment でデプロイ」 と依頼してください。

インストールモード

コマンド

インストール済みパッケージ

uv tool install "tunnel-manager[mcp]"、次に tunnel-manager-mcp を実行

編集可能ソース

uv pip install -e ".[agent]"、次に tunnel-manager-mcp を実行

イミュータブルコンテナ

オペレーターが選択したオーケストレーターを通じて registry.example.invalid/tunnel-manager@sha256:<digest> をデプロイ

リポジトリには、デプロイプロファイル、認証情報の値、証明書パス、環境固有のエンドポイントは埋め込まれていません。これらは実行時に AgentConfig と設定済みのシークレットプロバイダーを通じて提供してください。

管理対象ケイパビリティ契約

このパッケージは、専門手順を参照ワークフローとして保持した、コンパクトな標準スキルサーフェスを提供します。現在の MCP ツール、スキルメタデータ、connector_manifest.yml、オントロジー、マッピング、シェイプ、フィクスチャ、マイグレーション、ツールスキーマのフィンガープリント、および認証メタデータは、1 つのバージョン管理されたケイパビリティ契約を構成します。これらをまとめて検証してください。古いツール名や過去のタスク別スキルラッパーに依存しないでください。

ランタイムのエンドポイント、認証情報、証明書の信頼、テナント ID、保持、および可観測性ポリシーはデプロイ時の入力であり、パッケージ化された値になることはありません。ネットワークトランスポート、コネクタの取り込み、GraphOS 委任、またはトレースエクスポートを有効にする前に、構成、信頼、およびプライバシー を参照してください。

Available Tools

8 tools
tm_filesAdvanced File OperationsC
Destructive

Advanced file operations on remote hosts.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoPermission mode (recursive_ops/chmod).755
groupNoGroup (recursive_ops/chown).
host1NoFirst host (diff_compare).
host2NoSecond host (diff_compare).
ownerNoOwner (recursive_ops/chown).
actionYesAction: 'recursive_ops', 'content_search', 'watch', 'diff_compare', 'backup'
sourceNoSource path (recursive_ops).
patternNoSearch pattern (content_search).
durationNoMonitor duration secs (watch).
passwordNoSSH password.
usernameNoSSH username.
file_pathNoFile path to compare (diff_compare).
operationNoOperation type: copy, move, delete, list, chmod, chown (recursive_ops).
recursiveNoRecursive search (content_search).
backup_destNoBackup destination (backup).
compressionNoEnable compression (backup).
destinationNoDestination path (recursive_ops/copy/move).
incrementalNoIncremental backup (backup).
max_resultsNoMax results (content_search).
remote_hostNoRemote host.
watch_pathsNoPaths to monitor (watch).
backup_pathsNoPaths to backup (backup).
search_pathsNoDirectories to search (content_search).
identity_fileNoSSH identity file path.
case_sensitiveNoCase-sensitive (content_search).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

The description does not add behavioral context beyond the annotations. Annotations already indicate destructiveHint=true, but the description fails to mention that operations may modify or delete files, require SSH credentials, or have side effects. With annotations present, the description should still provide safety or prerequisite details.

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

Conciseness2/5

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

The description is extremely short (one sentence), but it fails to convey essential information. Conciseness should not come at the cost of usefulness. Every sentence should add value; this sentence is generic and does not help the agent select or invoke the tool effectively.

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

Completeness1/5

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

Given the tool's complexity (25 parameters, 5 actions, output schema exists), the description is severely incomplete. It does not mention the supported actions, prerequisites (SSH credentials), or how to combine parameters. An output schema exists but is not referenced. The description leaves the agent with no guidance on how to operate the tool.

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?

Although schema coverage is 100% with parameter descriptions, the tool's description does not summarize which parameters correspond to which action. With 25 parameters and multiple actions, the description should group parameters or list actions, but it just repeats the title. Baseline for high coverage is 3, but the lack of structural guidance reduces clarity.

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 states 'Advanced file operations on remote hosts', which indicates the tool's domain (files on remote hosts) and implies operations, but lacks a specific verb-resource pair. It distinguishes from sibling tools like tm_hosts or tm_inventory, so a clear domain is established.

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?

No guidance is provided on when to use this tool versus alternatives. The description does not specify contexts like 'for file management, use this; for host management, use tm_hosts'. An agent must infer from the name and schema alone, which is insufficient.

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

tm_hostsHost ManagementC
Destructive

Manage the local host alias inventory.

ParametersJSON Schema
NameRequiredDescriptionDefault
portNoSSH port.
userNoUsername.
aliasNoHost alias.
actionYesAction: 'list', 'add', 'remove'
hostnameNoReal hostname or IP.
passwordNoPassword (if no key).
identity_fileNoPath to private key.
proxy_commandNoProxy command.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.5/5.0
Behavior2/5

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

The annotations already indicate destructiveHint=true, but the description does not elaborate on the destructive nature (e.g., removing hosts permanently) or other behavioral traits like authentication requirements or system changes. It adds no value beyond the annotations.

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

Conciseness3/5

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

The description is a single short sentence, which is concise but under-specified. It lacks critical information such as the available actions or the fact that it modifies local configuration. It is appropriately sized for a simple tool but incomplete for the complexity of 8 parameters.

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?

Given the tool has 8 parameters, a required 'action' parameter, and a destructive annotation, the description is too minimal. It does not mention the three actions (list, add, remove) or the potential impacts. Even with an output schema, the description fails to provide essential operational context.

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 input schema has 100% description coverage, so each parameter is already documented. The description ('Manage...') does not add any additional meaning or context about how parameters relate. The baseline is 3 since the schema does the heavy lifting.

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

Purpose3/5

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

The description states 'Manage the local host alias inventory,' which identifies the resource but uses the vague verb 'manage.' It does not specify the actions (list, add, remove) or how the tool operates. The title 'Host Management' provides context, but the description alone is insufficient to clearly distinguish the tool's specific function from siblings like tm_inventory.

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 provides no guidance on when to use this tool versus alternatives such as tm_remote or tunnel_ingest_hosts. There are no explicit when-to-use or when-not-to-use conditions, leaving the agent to infer usage from the action parameter and sibling names.

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

tm_inventoryInventory OperationsC
Destructive

Bulk inventory operations against YAML host groups.

ParametersJSON Schema
NameRequiredDescriptionDefault
cfgNoLocal SSH config path (copy_ssh_config).
cmdNoShell command (run_command).
keyNoShared key path (configure_key_auth)./app/.ssh/id_ed25519
groupNoTarget group.all
lpathNoLocal file path (send_file).
rpathNoRemote file path (send_file/receive_file).
actionYesAction: 'configure_key_auth', 'mesh_bootstrap', 'run_command', 'copy_ssh_config', 'rotate_key', 'send_file', 'receive_file'
key_pfxNoPrefix for new keys (rotate_key)./root/.ssh/id_
rmt_cfgNoRemote config path (copy_ssh_config)./root/.ssh/config
timeoutNoCommand timeout in seconds.
key_typeNoKey type: rsa or ed25519.ed25519
parallelNoRun parallel.
inventoryNoYAML inventory path (default: $XDG_CONFIG_HOME/agent-utilities/inventory.yaml)./root/.config/agent-utilities/inventory.yml
max_threadsNoMax threads.
lpath_prefixNoLocal dir prefix (receive_file).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.5/5.0
Behavior2/5

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

Annotations provide destructiveHint=true, but the description adds no behavioral context beyond that. It does not disclose what is destroyed, safety precautions, or any side effects. The description relies solely on the annotations for transparency.

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

Conciseness3/5

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

The description is terse (one sentence) and front-loaded with key terms. However, given the tool's complexity (15 parameters, multiple actions), it is too brief and could benefit from a structured overview.

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?

Despite having an output schema and 15 parameters, the description fails to provide a high-level explanation of the tool's actions or typical use cases. It is insufficient for an agent to fully understand the tool's capabilities without inspecting the schema extensively.

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 100%, so each parameter has a description. The tool-level description adds no additional meaning beyond the schema. It is adequate but not enhanced.

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

Purpose3/5

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

The description 'Bulk inventory operations against YAML host groups' is somewhat vague, using the generic term 'operations' without specifying the types of actions. The title 'Inventory Operations' also lacks specificity. It indicates the resource (YAML host groups) and bulk nature, but does not clearly define the tool's purpose relative to siblings.

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 tm_hosts or tm_operations. The description does not mention context, prerequisites, or exclusions, leaving the agent to infer usage from the action parameter alone.

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

tm_operationsOperation ManagementC
Destructive

Operation lifecycle and session management.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesAction: 'start', 'get_progress', 'cancel', 'get_metrics', 'list_sessions'
detailsNoAdditional details (start).
total_stepsNoTotal steps (start).
operation_idNoOperation ID (get_progress/cancel/get_metrics).
operation_typeNoType of operation (start).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, so the description does not need to repeat that. However, it adds no further behavioral context beyond 'lifecycle and session management,' which is adequately covered by the annotations.

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

Conciseness2/5

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

The description is only 5 words, which is too terse. While concise, it sacrifices informativeness and does not earn its place given the tool's complexity.

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?

Despite having an output schema and annotations, the description is too brief to cover the tool's multiple actions and use cases. It fails to explain how to use the action parameter or what each action entails.

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 coverage is 100%, so all parameters are documented in the schema. The description adds no additional parameter information, so it meets the baseline without adding value.

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

Purpose3/5

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

The description states the tool manages operation lifecycle and sessions, which is a general purpose. It distinguishes from siblings like tm_files or tm_hosts, but lacks specificity about the exact actions (start, cancel, etc.) that are available.

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?

No guidance is provided on when to use this tool versus alternatives. The description does not mention prerequisites, context for each action, or when to prefer sibling tools.

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

tm_remoteRemote SSH OperationsC
Destructive

Single-host SSH operations with shared connection params.

ParametersJSON Schema
NameRequiredDescriptionDefault
cfgNoSSH config path./root/.ssh/config
cmdNoShell command (run_command).
keyNoKey path (test_key_auth/setup_passwordless).
hostNoRemote host.
lcfgNoLocal SSH config (copy_ssh_config).
portNoPort.
rcfgNoRemote SSH config (copy_ssh_config)./root/.ssh/config
userNoUsername.
lpathNoLocal file path (send_file/receive_file).
proxyNoTeleport proxy.
rpathNoRemote file path (send_file/receive_file).
actionYesAction: 'run_command', 'send_file', 'receive_file', 'check_ssh', 'test_key_auth', 'setup_passwordless', 'copy_ssh_config', 'rotate_key', 'remove_host_key'
id_fileNoPrivate key path./app/.ssh/id_ed25519
new_keyNoNew private key path (rotate_key).
timeoutNoCommand timeout in seconds.
key_typeNoKey type: rsa or ed25519 (setup_passwordless/rotate_key).ed25519
passwordNoPassword.
certificateNoTeleport certificate.
known_hostsNoKnown hosts path (remove_host_key)./root/.ssh/known_hosts

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, so the agent knows operations may be destructive. The description adds no further behavioral context (e.g., that actions like remove_host_key modify remote host keys, or that some operations require authentication). Minimal value beyond annotations.

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

Conciseness3/5

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

Single sentence is concise but overly minimal. It lacks front-loading of key information (e.g., list of actions or critical parameters). Every word earns its place, but additional context would improve usability without adding bloat.

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?

With 19 parameters and multiple actions, the description is too sparse. It does not explain the variety of actions, how to use shared parameters, or typical usage patterns. Even with an output schema, the description fails to provide sufficient context for effective tool selection and invocation.

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 100% (all 19 parameters have brief descriptions). The tool description adds no extra meaning; it only says 'shared connection params.' Baseline is 3 as schema does the heavy lifting, but description does not enhance understanding of parameters.

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?

Description states 'Single-host SSH operations with shared connection params,' which clearly indicates the tool is for SSH actions on one remote host. It distinguishes from siblings like tm_files (local files) or tm_hosts (host management) by specifying SSH and single-host focus. However, it could list the specific actions (e.g., run_command, file transfer) for greater clarity.

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 only implies usage for SSH-related tasks on a single host. No exclusion criteria, prerequisites, or comparisons with sibling tools are provided.

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

tm_securitySecurity AuditingC
Read-onlyIdempotent

Security scanning and compliance.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoSecurity areas to audit (security_audit).
actionYesAction: 'security_audit', 'compliance_check', 'vulnerability_scan', 'access_control_audit'
passwordNoSSH password.
standardNoCompliance standard: cis_benchmark, pci_dss, hipaa (compliance_check).cis_benchmark
usernameNoSSH username.
scan_typeNoScan type: basic, package, config (vulnerability_scan).basic
remote_hostYesRemote host to audit.
identity_fileNoSSH identity file path.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds no behavioral context beyond confirming a read-only, idempotent operation. It fails to disclose that the tool requires SSH access (evident from schema but unmentioned) or to elaborate on side effects of scanning. The description does not add value beyond the annotations.

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

Conciseness3/5

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

The description is extremely short (5 words), which is concise but risks under-specification. It front-loads no critical details like supported actions or security implications. While brevity is valued, the lack of structure (no bullet points, no separation of concerns) reduces clarity.

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?

Despite having an output schema (not shown) and 8 parameters, the description covers almost nothing. It omits the tool's return values, SSH authentication requirements, and the specific actions it can perform. A complete description should at least hint at the action types (e.g., 'supports security_audit, compliance_check, etc.') to unify with the schema.

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 100%, so the structured data already documents each parameter's meaning. The description 'Security scanning and compliance' adds no additional semantics for parameters. Baseline 3 applies since the description does not compensate or elaborate beyond the schema.

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

Purpose3/5

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

The description 'Security scanning and compliance' broadly matches the tool name and title, but it lacks a specific verb+resource combination. It vaguely groups scanning and compliance without defining distinct outcomes. Sibling tools (e.g., tm_files, tm_remote) imply a security focus, but the description does not differentiate this tool from potential security-related siblings.

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?

No guidance is provided on when to use this tool versus alternatives. The description does not mention when not to use it, prerequisites, or preferred contexts. For a tool requiring SSH credentials and offering multiple action types, this omission hampers correct selection.

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

tm_systemSystem IntelligenceA
Read-onlyIdempotent

Remote system intelligence via SSH.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesAction: 'get_info', 'discover_services', 'analyze_logs', 'network_topology'
passwordNoSSH password.
patternsNoSearch patterns (analyze_logs).
usernameNoSSH username.
log_pathsNoLog file paths (analyze_logs).
remote_hostYesRemote host.
identity_fileNoSSH identity file path.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds that it uses SSH for intelligence, which aligns but doesn't elaborate on behaviors like connection handling or authentication requirements. It doesn't contradict annotations.

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 sentence that front-loads the core purpose. It is concise and avoids fluff, though slightly more context could improve it without harming conciseness.

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 presence of an output schema, annotations covering safety, and full schema coverage, the description is adequate but lacks details on SSH prerequisites, security considerations, or limitations. It could be more complete without being verbose.

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 coverage is 100% with all 7 parameters described. The description itself adds no additional parameter-level meaning beyond what's already in the schema. Baseline score of 3 is appropriate.

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 'Remote system intelligence via SSH' clearly states the tool's purpose: to gather intelligence from remote systems over SSH. This verb+resource pattern effectively distinguishes it from sibling tools like tm_files (file operations) or tm_hosts (host management).

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 provides minimal guidance on when to use this tool versus alternatives. It does not specify prerequisites, exclusions, or context. The name and description imply it's for system intelligence, but explicit usage guidance is lacking.

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

tunnel_ingest_hostsIngest Hosts to Knowledge GraphC
Read-onlyIdempotent

List the managed SSH inventory and push it into the epistemic-graph KG.

Maps each alias → a typed :Host node (+ :HostGroup / :SshKey and their :inGroup / :usesKey links). Best-effort: no-ops cleanly when no KG engine is reachable.

ParametersJSON Schema
NameRequiredDescriptionDefault
groupNoHostGroup name to attach the ingested hosts to.all

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior1/5

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

The description's claim to 'push it into the epistemic-graph KG' suggests a write operation, contradicting the annotation readOnlyHint=true. Annotations indicate no modifications, while the description implies data ingestion. This is a clear annotation contradiction, lowering the score to 1.

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 first sentence stating the core purpose and the second providing behavioral detail. Every word is necessary, and critical information is front-loaded.

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 output schema exists and schema coverage is high, the description covers the main action and best-effort behavior. However, it fails to explain the group parameter's role and does not differentiate from sibling tools, leaving gaps for an agent choosing among related tools.

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 100% for the single parameter, so baseline is 3. The description does not add any meaning beyond the schema's description of the 'group' parameter; it omits explaining its role in attaching hosts to a host group.

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 states a specific action: 'List the managed SSH inventory and push it into the epistemic-graph KG.' This clearly identifies the verb and resource. However, it does not explicitly differentiate itself from sibling tools like tm_inventory or tm_hosts, which may have overlapping functionality.

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 mentions 'Best-effort: no-ops cleanly when no KG engine is reachable,' which implies safe usage but does not specify when to use this tool versus alternatives like tm_inventory for direct inventory listing or tm_hosts for host management. No explicit when-not or alternative guidance is given.

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. 8 tool updatesv2.0.1
    • First observedtm_files
    • First observedtm_hosts
    • First observedtm_inventory
    • First observedtm_operations
    • First observedtm_remote
    • First observedtm_security
    • First observedtm_system
    • First observedtunnel_ingest_hosts

TDQS

B3/5.0

Scored across 8 tools

Disambiguation3/5

Most tools have distinct purposes (e.g., files, security, system intelligence), but tm_hosts and tm_inventory overlap in managing host inventory, and tm_remote may conflict with tm_files and tm_system. The outlier tunnel_ingest_hosts is distinct but not clearly related.

Naming Consistency3/5

Seven tools use the 'tm_' prefix, but one uses 'tunnel_', breaking consistency. The naming pattern is noun-based without clear verb-noun structure, which is acceptable but not ideal.

Tool Count5/5

Eight tools is a well-scoped set for remote host management, covering operations, inventory, security, and system intelligence without being overwhelming.

Completeness4/5

Covers file operations, SSH sessions, inventory, security, and system intelligence. Minor gaps like individual host CRUD (e.g., create/delete alias) might exist, but bulk operations and KG ingestion fill some needs.

Maintenance

ActivityActive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers