ToolMesh
OfficialToolMesh — AIエージェントに安全なシステム操作を。
AIエージェントとエンタープライズシステムの間に欠けていた制御レイヤー。ToolMeshは、制御不能なAIツール呼び出しを、管理可能で監査可能なプロセスへと変貌させます。あらゆるREST APIやMCPサーバーを、数ヶ月ではなく数分で接続します。
30行のYAML。サーバー構築は不要。
実際には、MCPサーバーはラップしているREST APIの一部しか公開しておらず、すぐに限界に達します。ToolMeshでは、ラッパーレイヤーを.dadlファイルに置き換えることができます。これは、あらゆるREST APIをMCPツールとして記述するための宣言型YAMLフォーマットです。構築、デプロイ、保守が必要なラッパーサーバーは不要です。
Current: Claude → ToolMesh → MCP Server → REST API
With DADL: Claude → ToolMesh → REST API (via .dadl file)YAMLを手書きする必要はありません。LLMに依頼してください。Claude、GPT、Geminiなど、DADL仕様を理解しているモデルであれば、数秒で動作する.dadlファイルを生成します。必要なものを記述し、ファイルをconfig/dadl/に配置するだけで完了です。
「GitHub API用のDADLを作成して。リポジトリの一覧表示、Issueのオープン、プルリクエストの作成ができるようにして。」
10秒で完了。フォーマットを理解しているあらゆるLLMで動作します。
また、単にツール呼び出しを転送するだけのMCPゲートウェイとは異なり、ToolMeshは本番環境で真に必要とされる機能を追加します:
クレデンシャルセキュリティ — シークレットは実行時に注入され、プロンプトやLLMクライアントの設定には決して含まれません
認可 — ユーザー → プラン → ツール単位のきめ細かな制御 (OpenFGA)
入出力ゲート — JSポリシーにより機密データをブロックし、レスポンスをフィルタリング
監査証跡 — すべてのツール呼び出しを構造化ログまたはクエリ可能なSQLiteに記録
Related MCP server: MCPGate
6つの柱
柱 | 機能 | 基盤 |
Any Backend | 30行のDADLでMCPサーバー全体を代替。既存のMCPサーバーのプロキシも可能。 | Go MCP SDK + DADL (.dadlファイル) |
Code Mode | 15個のMCPサーバーを同時に使用?ToolMeshなしでは不可能。Code Modeで50,000トークン以上を約1,000トークンに削減。 | AST解析によるツール呼び出し |
Credential Store | シークレットは実行時に注入。プロンプトやLLMクライアント設定には一切含まれない。 | Executorパイプラインによるリクエストごとの注入 |
OpenFGA | きめ細かな認可(ユーザー → プラン → ツール)。例:無料ユーザーは読み取り専用、プロはすべて許可。 | OpenFGA |
Gate | 実行前に機密データをブロックし、レスポンス内のPIIをマスキング。 | goja |
Audit | すべてのツール呼び出しを記録・クエリ可能。「エージェントが何をしたか」をSQLで回答。 | slog / SQLite |
デモを試す
インストール前にToolMeshを試したいですか?パブリックデモインスタンスに接続してください。Dockerも設定もAPIキーも不要です:
demo.toolmesh.io — ToolMesh経由のHacker News API。Claude Desktop、Claude Code、ChatGPTで動作します。ログイン: dadl / toolmesh。
クイックスタート
# Clone
git clone https://github.com/DunkelCloud/ToolMesh.git
cd ToolMesh
# Configure
cp .env.example .env
# IMPORTANT: Set a password — without it, all requests are rejected:
# TOOLMESH_AUTH_PASSWORD=my-secret-password
# Or set an API key for programmatic access:
# TOOLMESH_API_KEY=my-api-key
# Optional: local overrides (build locally, enable OpenFGA, HTTPS proxy, ...)
# cp docker-compose.override.yml.example docker-compose.override.yml
# # then edit docker-compose.override.yml — picked up automatically by Docker Compose
# Start (runs in bypass mode by default — no authz required)
docker compose up -d
# Verify it's running (default port: 8123)
curl http://localhost:8123/health
# MCP endpoint: http://localhost:8123/mcp
# Note: Most MCP clients require HTTPS — see TLS section belowTLS(重要)
ToolMesh自体はプレーンなHTTPを提供します。Claude Desktopを含むほとんどのMCPクライアントはHTTPSを必須としており、http:// URLを拒否します。ToolMeshの前にTLS終端を行うリバースプロキシが必要です:
オプション | 推奨用途 |
Caddy | パブリックドメインでのセルフホスト — Let's Encrypt証明書を自動適用 |
Cloudflare Tunnel | ポート開放不要、ゼロコンフィグTLS |
nginx / Traefik | 既存のスタックに組み込む場合 |
ローカル開発のみの場合、claude_desktop_config.jsonを手動で編集することでTLSをバイパスできます(GUIはhttps://を強制します)。
Claude Desktopへの接続
Claude DesktopのMCP設定に追加してください:
{
"mcpServers": {
"toolmesh": {
"url": "https://toolmesh.example.com/mcp"
}
}
}TLSプロキシなしのローカル開発用:
{
"mcpServers": {
"toolmesh": {
"url": "http://localhost:8123/mcp"
}
}
}Claude.aiへの接続(カスタムコネクタ)
ToolMeshはリモートアクセスのためにPKCE S256を用いたOAuth 2.1をサポートしています。config/users.yamlでユーザーを設定し、パブリックHTTPS URLをMCPエンドポイントとして使用してください。
認証
ToolMeshは、独立して、または組み合わせて使用できる2つの認証方式をサポートしています。すべてのOAuth状態(トークン、認証コード、クライアント)はRedisに永続化され、サーバー再起動後も保持されます。
OAuth 2.1(インタラクティブログイン)
config/users.yamlでbcryptハッシュ化されたパスワードを使用してユーザーを定義します:
users:
- username: admin
password_hash: "$2a$10$..."
company: dunkelcloud
plan: pro
roles: [admin]bcrypt対応のユーティリティでパスワードハッシュを生成します:
htpasswd -nbBC 10 "" "my-password" | cut -d: -f2シングルユーザー設定の場合、TOOLMESH_AUTH_PASSWORDがフォールバックとして機能します。TOOLMESH_AUTH_USER、TOOLMESH_AUTH_PLAN、TOOLMESH_AUTH_ROLES(デフォルト:owner、pro、admin)でIDを設定してください。
APIキー(プログラムによるアクセス)
config/apikeys.yamlでbcryptハッシュ化されたキーを使用してAPIキーを定義します:
keys:
- key_hash: "$2a$10$..."
user_id: claude-code-user
company_id: dunkelcloud
plan: pro
roles: [tool-executor]各キーは、独自のプランとロールを持つ個別のユーザーIDにマッピングされ、OpenFGA認可に反映されます。
シングルキー設定の場合、TOOLMESH_API_KEYがフォールバックとして機能します。同じTOOLMESH_AUTH_USER、TOOLMESH_AUTH_PLAN、TOOLMESH_AUTH_ROLES変数がIDを制御します。
DCRレート制限
動的クライアント登録(DCR)は、悪用を防ぐため、IPあたり1時間5回までに制限されています。
認可モード
OPENFGA_MODEはOpenFGA認可を強制するかどうかを制御します:
モード | 動作 |
| すべてのツール呼び出しは認可チェックなしで許可される |
| OpenFGAがユーザー → プラン → ツール認可を強制する( |
まずはbypassで開始し、OpenFGAのブートストラップ後にrestrictへ切り替えてください。
設定
すべての環境変数についてはdocs/configuration.mdを参照してください。
タイムアウト調整
変数 | デフォルト | 説明 |
|
| 下流のMCPサーバーへの呼び出しに対するHTTPクライアントタイムアウト(秒) |
|
| ツール実行タイムアウト(秒) — バックエンド呼び出しのコンテキスト期限 |
より時間のかかるバックエンド(ブラウザベースのWebフェッチャーなど)の場合は、これらを増やしてください:
TOOLMESH_MCP_TIMEOUT=180
TOOLMESH_EXEC_TIMEOUT=180ロギング
ToolMeshはslogによる構造化ロギングを使用します。デフォルトレベルはdebugで、MCPの完全なトレーサビリティをすぐに利用できます。本番環境ではLOG_LEVEL=info以上に設定してください。デバッグログには完全なリクエスト/レスポンスペイロードが含まれるためです。バックエンドごとのデバッグファイル、ログフォーマット、すべてのロギング変数はdocs/configuration.mdに記載されています。
アーキテクチャ
完全なアーキテクチャドキュメントについてはdocs/architecture.mdを参照してください。
┌─────────────────────────────────┐
│ ToolMesh │
│ │
│ Redis · OpenFGA · Audit │
│ Credential Store · JS Gate │
│ │
AI Agent ──MCP──────────▶ │ AuthZ ▸ Creds ▸ Gate ▸ Exec │
│ │
└──┬──────┬───────┬───────┬───────┘
│ │ │ │
MCP Client .dadl .dadl .dadl
│ │ │ │
▼ ▼ ▼ ▼
MCP Stripe GitHub Vikunja
Server API API API外部MCPサーバーの追加
config/backends.yamlを作成または編集します:
backends:
- name: memorizer
transport: http
url: "https://memorizer.example.com/mcp"
api_key_env: "MEMORIZER_API_KEY"クレデンシャルを環境変数として設定します:
CREDENTIAL_MEMORIZER_API_KEY=sk-mem-xxxxx各バックエンドのツールはプレフィックス(例:memorizer_retrieve_knowledge)付きで公開されます。クレデンシャルは実行時にCredentialStoreを介してExecutorによって注入されるため、LLMがAPIキーを見ることはありません。
RESTプロキシモード (DADL)
MCPサーバーが必要なエンドポイントを公開していない場合、.dadlファイルに記述すれば、ToolMeshが直接REST APIを呼び出します。ラッパーサーバーは不要です。両モードは並行して動作します。
config/backends.yamlにRESTバックエンドを追加します:
backends:
- name: vikunja
transport: rest
dadl: /app/dadl/vikunja.dadl
url: "https://vikunja.example.com/api/v1"プライベートIPや自己署名証明書を持つ内部サービスの場合:
backends:
- name: internal-api
transport: rest
dadl: internal.dadl
url: "https://192.168.1.50:8443/api"
allow_private_url: true # allow private/loopback addresses (default: true)
tls_skip_verify: true # accept self-signed certificates (default: false)ClaudeにGitHubのIssueを一覧表示させたいですか?必要なのはこれだけです:
tools:
list_issues:
method: GET
path: /repos/{owner}/{repo}/issues
description: "List issues for a repository"
params:
owner: { type: string, in: path, required: true }
repo: { type: string, in: path, required: true }
state: { type: string, in: query }ToolMeshが認証、ページネーション、リトライ、エラーマッピングを処理します。DADLはベアラートークン、OAuth2、セッション認証、APIキー、自動ページネーション、バックオフ付きリトライ、レスポンス変換、複合ツールなどをサポートしています。
完全な仕様、例、コミュニティレジストリについてはdadl.aiを参照してください。.dadlファイルを最も速く作成する方法は、フォーマットを理解しているLLMに尋ねることです。
Code Mode
15個のMCPサーバーを単一のAIエージェントに接続しますか?ToolMeshなしでは、コンテキストウィンドウが埋まり、クライアントがフリーズするため、単純に動作しません。Code Modeがこれを可能にします。
何百もの個別のツール定義(50,000トークン以上)を公開する代わりに、ToolMeshはlist_toolsとexecute_codeという2つのメタツールを公開します。LLMはコンパクトなTypeScriptインターフェース(約1,000トークン)を受け取り、それに対してJavaScriptを記述します:
const repos = await toolmesh.github_list_repos({ sort: "updated" });
const issues = await toolmesh.github_list_issues({
owner: repos[0].owner.login,
repo: repos[0].name,
state: "open"
});1回のラウンドトリップで複数のAPI呼び出しが可能です。ToolMeshはコードを解析し、ツール呼び出しを抽出して、完全な実行パイプラインを通じてルーティングします。
拡張モデル
ToolMeshは、Goのdatabase/sqlドライバーパターンに触発された、レジストリベースの拡張モデルを使用しています。3つのコンポーネントタイプがinit()登録を通じて拡張可能です:
コンポーネント | ビルトイン | 設定 |
Credential Store |
|
|
Tool Backend |
|
|
Gate Evaluator |
|
|
エンタープライズ拡張(InfisicalStore、VaultStore、Compliance-LLMなど)は計画されており、Goビルドタグを使用して含める予定です:go build -tags enterprise ./cmd/toolmesh。
詳細はdocs/architecture.mdを参照してください。
貢献
CONTRIBUTING.mdを参照してください。
ライセンス
Apache 2.0 — Copyright 2025–2026 Dunkel Cloud GmbH
This server cannot be deployed
Maintenance
Related MCP Connectors
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
- gatewayOAuthai.sealgate
MCP gateway with runtime security policy, tool-call-level control, and audit of agent actions.
AgentGuard — 20-tool AI safety MCP: policy preflight, risk scoring, audit logging, rate limits.
Zero-secret MCP gateway for AI agents: risk-scored, audited calls with human-in-the-loop approval.
Related MCP Servers
AlicenseNot gradedqualityAmaintenanceOpen-source MCP proxy that enforces security policies, content scanning, and audit logging between AI agents and tool servers25AGPL 3.0- AlicenseNot gradedqualityDmaintenanceMCPGate aggregates multiple MCP servers into a single unified endpoint, enabling centralized tool management with granular filtering, automatic namespacing, and observability. Features a real-time web dashboard and optional PostgreSQL-backed audit trails for monitoring and controlling AI tool access across local and remote deployments.6 npmApache 2.0
- AlicenseNot gradedqualityDmaintenanceA secure tool-execution plane for agentic AI that enforces JWT authentication, rate limiting, prompt-injection inspection, and audit logging, while ingesting downstream OpenAPI endpoints as MCP tools.MIT
- FlicenseNot gradedqualityBmaintenanceA production-style MCP gateway that aggregates multiple tool servers into one surface with semantic tool search, RBAC, audit logging, and rate limiting, enabling efficient tool selection for AI agents.-