Skip to main content
Glama
kstrikis
by kstrikis

LLM 応答 MCP サーバー

複数の AI エージェント間の共同討論を可能にし、ユーザーのプロンプトについて議論して合意に達することを可能にするモデル コンテキスト プロトコル (MCP) サーバー。

概要

このプロジェクトでは、次の主な機能を使用して、LLM 間のマルチターン会話を容易にする MCP サーバーを実装します。

  1. セッションベースのコラボレーション- LLMは討論セッションの参加者として登録できます

  2. 審議による合意形成- LLMは合意に達するために長時間の議論に参加できる

  3. リアルタイムのレスポンス共有- すべての参加者がお互いの投稿を閲覧し、返信することができます

サーバーは、次の 4 つの主要なツール呼び出しを提供します。

  1. register-participant : LLMが最初の応答でコラボレーションセッションに参加できるようにします

  2. submit-response : LLMが討論中にフォローアップの回答を提出できるようにします

  3. get-responses : LLMがセッション内の他のLLMからのすべての応答を取得できるようにします。

  4. get-session-status : LLMが登録待機期間が完了したかどうかを確認できるようにします。

これにより、複数の AI エージェント (「Council of Ephors」など) がユーザーの質問について長時間にわたって審議し、確固たる合意に達するまで互いに議論するシナリオが可能になります。

Related MCP server: Agent Orchestration

インストール

# Install dependencies
bun install

発達

# Build the TypeScript code
bun run build

# Start the server in development mode
bun run dev

MCP Inspectorによるテスト

このプロジェクトには、MCP サーバーのテストとデバッグを行うツールであるMCP Inspectorのサポートが含まれています。

# Run the server with MCP Inspector
bun run inspect

inspectスクリプトはnpxを使用して MCP Inspector を実行し、ブラウザで MCP サーバーと対話するための Web インターフェイスを起動します。

これにより、次のことが可能になります。

  • 利用可能なツールとリソースを調べる

  • 異なるパラメータによるテストツール呼び出し

  • サーバーの応答を表示する

  • MCPサーバーの実装をデバッグする

使用法

サーバーは 2 つのエンドポイントを公開します。

  • /sse - MCPクライアントが接続するためのServer-Sent Eventsエンドポイント

  • /messages - MCPクライアントがメッセージを送信するためのHTTPエンドポイント

MCPツール

参加者登録

コラボレーション セッションの参加者として登録します。

// Example tool call
const result = await client.callTool({
  name: 'register-participant',
  arguments: {
    name: 'Socrates',
    prompt: 'What is the meaning of life?',
    initial_response: 'The meaning of life is to seek wisdom through questioning...',
    persona_metadata: {
      style: 'socratic',
      era: 'ancient greece'
    } // Optional
  }
});

サーバーは、最後の参加者が参加してから3秒間の登録期間を待ってから応答します。応答にはすべての参加者の最初の応答が含まれるため、各LLMは登録期間の終了時に他の参加者の意見に即座に応答できます。

送信応答

討論中にフォローアップの回答を送信します。

// Example tool call
const result = await client.callTool({
  name: 'submit-response',
  arguments: {
    sessionId: 'EPH4721R-Socrates', // Session ID received after registration
    prompt: 'What is the meaning of life?',
    response: 'In response to Plato, I would argue that...'
  }
});

レスポンスの取得

討論セッションからのすべての回答を取得します。

// Example tool call
const result = await client.callTool({
  name: 'get-responses',
  arguments: {
    sessionId: 'EPH4721R-Socrates', // Session ID received after registration
    prompt: 'What is the meaning of life?' // Optional
  }
});

回答には参加者全員の投稿が時系列順に表示されます。

セッションステータスの取得

登録待機期間が経過していないか確認します。

// Example tool call
const result = await client.callTool({
  name: 'get-session-status',
  arguments: {
    prompt: 'What is the meaning of life?'
  }
});

共同討論フロー

  1. LLMは、プロンプトに対する最初の回答で参加者として登録します。

  2. サーバーは最後の登録後3秒間待機してから応答を送信します。

  3. 登録期間が終了すると、参加者全員に最初の回答の概要が送られます。

  4. 参加者はその後、お互いの意見に応じてフォローアップの回答を提出することができる。

  5. 議論は参加者が合意に達するか、最大ラウンド数に達するまで続けられる。

ライセンス

マサチューセッツ工科大学

EC2へのデプロイ

このプロジェクトには、EC2 またはその他のサーバー環境への簡単なデプロイを可能にする Docker 構成が含まれています。

前提条件

  • Amazon Linux 2 または Ubuntu を実行する EC2 インスタンス

  • ポート 62887 で受信トラフィックを許可するように構成されたセキュリティ グループ

  • インスタンスへのSSHアクセス

展開手順

  1. リポジトリを EC2 インスタンスにクローンします。

    git clone <your-repository-url>
    cd <repository-directory>
  2. デプロイメント スクリプトを実行可能にします。

    chmod +x deploy.sh
  3. デプロイメント スクリプトを実行します。

    ./deploy.sh

スクリプトは次のようになります。

  • DockerとDocker Composeがまだインストールされていない場合はインストールします。

  • Dockerイメージをビルドする

  • コンテナをデタッチモードで起動する

  • MCP サーバーにアクセスできる公開 URL を表示します

手動展開

手動でデプロイする場合:

  1. Docker イメージをビルドします。

    docker-compose build
  2. コンテナを起動します。

    docker-compose up -d
  3. コンテナが実行中であることを確認します。

    docker-compose ps

サーバーへのアクセス

展開されると、MCP サーバーは次の場所からアクセスできるようになります。

  • http://<ec2-public-ip>:62887/sse - SSEエンドポイント

  • http://<ec2-public-ip>:62887/messages - メッセージエンドポイント

EC2 セキュリティ グループでポート 62887 が開いていることを確認してください。

Related MCP Connectors

Related MCP Servers