Skip to main content
Glama

My Cool Proxy

NPM Version

My Cool Proxy は、今日の MCP にあると認識されている多くの問題を解決しようとする Model Context Protocol (MCP) サーバーゲートウェイです。順不同で、以下のような問題があります:

  • ツールの説明がコンテキストウィンドウを肥大化させる: これは、ほとんどのエージェントが MCP と統合する方法の問題です。必要なときにツールを読み込めるようにする抽象化を実装する代わりに、ほとんどのアプリケーションはすべての MCP ツールを一度にコンテキストに読み込みます。これを軽減するために、My Cool Proxy はツールを Lua インタープリターでラップし、ツールを段階的に発見するための高レベルなツールを公開します。詳細は Progressive Disclosure を参照してください。

  • ツールの結果がコンテキストウィンドウを肥大化させる、Bash を使えばいいのでは? MCP ツールを使う代わりに、エージェントは端末コマンドを実行し、bash を使って結果をフィルタリングすることもできます。しかし、それはエージェントが高リスクな操作をより頻繁に実行することを許すことになります。たとえば、エージェントに gh CLI を使って GitHub とやり取りすることを許可した場合、そのエージェントは gh CLI を使って変更や破壊を伴う操作も実行できてしまいます。GitHub MCP Server を使えば、代わりに読み取り専用ツールに簡単に範囲を限定できます。MCP を使用すると、エージェントがアクセスできるツールを厳密に制御できます。これを支援するために、My Cool Proxy ではエージェントに公開するツールを さらにフィルタリング できます。

  • ほとんどの MCP 機能がサポートされていません: 残念ながら、ほとんどのアプリケーションはエージェントに MCP ツールのみを公開し、プロトコルが提供する他の クライアント や サーバー の機能を無視しています。My Cool Proxy は、できるだけ多くのプロトコル機能に対する共通の抽象化レイヤーを目指しており、開発者は MCP 互換のあらゆるアプリケーションで MCP の全機能を利用できます。これは進行中の作業です。詳細は 機能サポート表 を確認してください。

  • 複数のエージェントの設定ファイルを管理するのは面倒です: MCP 互換のアプリケーションを複数使用している場合、それらの間で MCP サーバー設定の同期を維持するという課題にすぐに直面するでしょう。My Cool Proxy は、使用するすべてのサーバーに対する単一の統合ポイントとして機能することでこれを解決し、同期を維持するサーバー数を 1 つだけに減らします。

クイックスタート

0. インストール

CLI ツールとして使用するには、グローバルにインストールします:

npm install -g @karashiiro/my-cool-proxy

または npx で直接実行します:

npx @karashiiro/my-cool-proxy

1. 設定

ゲートウェイは初回実行時にデフォルト設定を自動作成します。設定ファイルを生成するには、一度実行するだけです:

my-cool-proxy  # Creates config and starts (with no servers)

# Find your config location
my-cool-proxy --config-path

次に 設定を編集 して MCP サーバーを追加します。

設定構造の例:

{
  "port": 3000,
  "host": "localhost",
  "mcpClients": {
    "my-server": {
      "type": "http",
      "url": "https://example.com/mcp"
    }
  }
}

または、より完全な出発点として サンプル設定 をコピーします。

2. 実行

# If installed globally
my-cool-proxy

# If running via npx
npx @karashiiro/my-cool-proxy

3. 接続

たとえば Claude Desktop の MCP クライアント設定に追加します:

{
  "mcpServers": {
    "my-cool-proxy": {
      "url": "http://localhost:3000/mcp"
    }
  }
}

4. 使用する

設定した MCP サーバーが支援できるタスクをエージェントに依頼して、実行される様子を見守りましょう!

Related MCP server: MCP Gateway

Progressive Disclosure

このプロキシは、エージェントと複数の MCP (Model Context Protocol) サーバーとの間のゲートウェイとして機能します。エージェントは各 MCP サーバーに個別に接続する代わりに、この単一のプロキシに接続し、統合インターフェースを通じて設定済みのすべてのサーバーにアクセスできます。

エージェントは、利用可能なサーバーやツールについて最小限の知識しか持たない状態から始まります。コンテキストを段階的に構築します:

  1. サーバーの指示を確認する - My Cool Proxy は、設定済みのサーバーとツールの簡単な抜粋を含む小さなプロンプトをプリロードし、エージェントがそれらを使用するように促します。

  2. list-servers を呼び出す - エージェントのコンテキストには、利用可能なすべての MCP サーバーの名前と説明が含まれるようになります (例: "github", "slack", "database")

  3. list-server-tools(server_name) を呼び出す - エージェントのコンテキストが拡張され、その特定のサーバーのすべてのツール名と説明が含まれます

  4. tool-details(server_name, tool_name) を呼び出す - エージェントのコンテキストに、特定のツールの完全なパラメータスキーマ、戻り値の型 (利用可能な場合)、使用例が含まれるようになります

  5. execute(lua_script) を呼び出す - 完全なコンテキストがあれば、エージェントは発見したツールを呼び出す Lua スクリプトを作成できます

すべてのツールとツールの説明を事前にコンテキストに読み込むのではなく、エージェントがそれらのツールが必要だと判断するまでツールの読み込みを延期します。

Lua によるツールチェーン: エージェントは、どのようなツールが存在するかを知ると、単一の execute() 呼び出しで複雑な複数ステップのワークフローを構成でき、中間ツール結果のコンテキストオーバーヘッドを節約できます。Lua ランタイムは、発見されたすべてのサーバーへのアクセスをグローバルとして提供し、ツールは非同期関数として呼び出せます。

逐次ツールチェーン:

local raw_data = api_server.fetch({ id = 123 }):await()
local processed = processor.transform({ input = raw_data }):await()
result(processed)

条件付きロジック:

local status = checker.validate({}):await()
if status.ok then
  result(processor.run({}):await())
else
  result(error_handler.notify({ error = status.message }):await())
end

ループによる反復:

local results = {}
for i = 1, 5 do
  results[i] = worker.process({ index = i }):await()
end
result({ total = #results, data = results })

Gateway Skills

Gateway Skills は、My Cool Proxy による Agent Skills の実装です。これは、エージェントが MCP Resources として読み込める再利用可能なコンテキストドキュメントです。有効にすると、エージェントは次のことができます:

  • ゲートウェイのサーバー指示に自動注入されたプロンプトを介してスキルを発見する (_gateway.list_resources() Lua 組み込み関数を介しても構いません。gw-skill:// URI を探してください)

  • _gateway.read_resource() Lua 組み込み関数を介してスキルコンテンツを読み取る

  • _gateway.invoke_skill_script() Lua 組み込み関数を介してスキルスクリプトを実行する

多くのエージェントはすでに独自のスキルシステムを実装していますが、これらのシステムは高度に断片化されており、複数の別々のエージェントアプリケーション間で同じスキルを再利用することは困難です。skills.sh のような一部のシステムは、アプリケーション間でスキルを明示的にコピーすることでこれを解決していますが、My Cool Proxy はすべてのスキルを独自のスキル管理システムに集中化し、MCP 経由で公開することでこれを解決します。既存のスキルシステムと区別するために、My Cool Proxy はこれらを「Gateway Skills」と呼びます。

Gateway Skills は、エージェントに組み込まれた既存のスキルシステムと競合する可能性があるため、デフォルトでは無効になっています。セットアップオプションについては 設定ガイド を参照してください。

Gateway Skills がこのように実装されている理由についてのより深い設計議論は、設計ドキュメントの このセクション を参照してください。

Web ダッシュボード

My Cool Proxy には、ゲートウェイのアクティビティを監視するためのオプションの Web ダッシュボードが含まれています。有効にすると、別のポートで実行され、以下を提供します:

  • 実行履歴 — 構文ハイライト付きのスクリプトと結果を含む、すべての Lua スクリプト実行を閲覧できます

  • ツール呼び出しログ — 各実行中に呼び出された MCP ツールを確認できます

  • セッションモニタリング — アクティブなセッション、接続されたサーバー、機能を表示できます

  • リアルタイム更新 — 新しい実行が WebSocket を介してダッシュボードにストリーミングされます

設定に dashboard セクションを追加することで有効にできます:

{
  "dashboard": {
    "port": 3100,
    "host": "localhost"
  }
}

その後、ブラウザで http://localhost:3100 にアクセスします。詳細は 設定ガイド を参照してください。

設定

完全な設定リファレンスについては 設定ガイド を参照してください。

MCP Feature Support Table

Feature

Supported?

Details

Tools

✅

My Cool Proxyは、最低限ツールがサポートされていることを想定しています。幸いなことに、MCPをサポートするものはすべてツールをサポートしています。

Prompts

✅

My Cool Proxyは、MCPサーバーからのプロンプトを接続されたクライアントに転送し、エージェントがスクリプト内でそれらを読み込むための_gateway.get_prompt()および_gateway.list_prompts() Lua組み込み関数を提供します。

Resources

✅

My Cool Proxyは、MCPサーバーからのリソースを接続されたクライアントに転送するだけでなく、エージェントがスクリプト内でそれらを読み込むための_gateway.read_resource()および_gateway.list_resources() Lua組み込み関数も提供します。

Server Instructions

✅

My Cool Proxyは、接続されたMCPサーバーの指示の抜粋を自身のサーバー指示に読み込み、また呼び出されたときにlist-serversツールを通じて完全なコピーも送信します。

Discovery Notifications

✅

My Cool Proxyは、接続されたMCPサーバーのツール/プロンプト/リソース変更通知をリッスンして、自身の内部レジストリを自動的に更新し、その後のツール呼び出しに反映されます。

Completions

✅

プロンプト引数とリソーステンプレート変数の補完は、アップストリームサーバーから接続されたクライアントに転送されます。エージェントはLuaスクリプト内で_gateway.complete()を呼び出して、リソーステンプレート変数とプロンプト引数の有効な値を検出することもできます。

Logging

✅

My Cool Proxyは、ロギング通知を接続されたクライアントに転送し、また自身でもログを記録します。

Roots

✅

roots/listリクエストは、アップストリームサーバーからダウンストリームクライアントに転送されます。ダウンストリームクライアントからのnotifications/roots/list_changed通知は、すべてのアップストリームサーバーにファンアウトされます。sampling shimがアクティブな場合、最初の有効なローカルルートがACPエージェントの作業ディレクトリとして使用されます。

Sampling

✅

My Cool Proxyは、ACPを介したサンプリングサポートのシミングをサポートしていますが、これはデフォルトでは無効です。詳細については、設定ドキュメントを参照してください。

Elicitation

⚠️

引き出しリクエスト(フォームおよびURLモード)は、アップストリームサーバーから接続されたクライアントにプロキシされます。ネイティブに引き出しをサポートしないクライアント向けのシムは(現在)利用できません(サンプリングはACPを介してシムできるのとは異なります)。

Progress

✅

アップストリームサーバーからの進捗通知は、接続されたクライアントに転送されます。Luaスクリプトが複数のツールを同時に呼び出すと、その進捗は単一のストリームに集約(合計)されます。

Tasks

⚠️

タスクをサポートするツールの呼び出しはサポートされていますが、ステータス更新を何かに活用することはありません。サンプリング/引き出しタスクは現在サポートされていません。

OAuth 2.0

❌

OAuth 2.0認証チャレンジはまだサポートされていません(今後サポート予定)。

MCP Apps

❌

MCP Appsはまだサポートされていません(今後サポート予定)。

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A meta-server that aggregates multiple MCP servers into a single interface, reducing token usage by 98%+ through progressive tool discovery and direct code execution that processes data between tools without consuming context window space.
    16 npm
    10
    Apache 2.0
  • A
    license
    Not graded
    quality
    F
    maintenance
    A universal gateway that aggregates multiple MCP servers into a single interface while providing advanced token optimization, result filtering, and automated summarization. It enables efficient management of large tool catalogs and reduces context usage by up to 95% for major AI clients.
    33 npm
    16
    MIT
  • F
    license
    A
    quality
    A
    maintenance
    A multiplexing gateway that aggregates multiple MCP servers into a single port, significantly reducing context token usage through a Meta-MCP discovery system. It enables dynamic tool discovery and invocation across various transport protocols including stdio, HTTP, and SSE.
    15
    78
    -
  • A
    license
    A
    quality
    B
    maintenance
    A single MCP server gateway that reduces context bloat by providing progressive tool discovery and invocation, dynamically provisioning downstream servers on demand.
    26
    113 PyPI
    21
    MIT