mcpField
M
MCP Server transport for Hono applications

MCP Server transport for Hono applications

ローカル
github.com/NikaBuligini開発ツール2975 週間前に更新

MCP Server transport for Hono applications について

MCPサーバーに接続するHonoアプリ向けのSSEトランスポート実装です。公式TypeScript SDKをHonoで使う際のレスポンスヘッダーの問題に対応し、SDKの正式対応まで利用できます。

主な機能

  1. 01Hono向けSSEトランスポート
  2. 02MCPサーバーへの接続
  3. 03Honoストリーミングへの対応

活用シーン

  1. 01HonoアプリでのMCPサーバー構築
  2. 02HonoプロジェクトへのSSE通信追加

MCP 対応

MCPサーバー向けのSSEトランスポートを提供し、Honoアプリからの接続を可能にします。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Hono アプリケーション向けの MCP サーバートランスポート

概要

このプロジェクトは、MCP サーバーに接続する必要がある Hono アプリケーション向けのトランスポートを提供します。公式の TypeScript SDK は express と組み合わせて使用するように設計されています。 指示に従って express を hono に置き換えても、動作しないことがわかるでしょう。環境変数として HttpBinding を設定しても(@hono/node-server の例を参照してください)、レスポンスが送信された後に一部のヘッダーが追加されるため、やはり動作しません。

この実装は、以下の プルリクエスト に着想を得ています。

公式 SDK で Hono が適切にサポートされるまでは、このトランスポートを使用できます。

はじめに

インストール
pnpm add -D hono-mcp-server-sse-transport
使用方法
import { Hono } from 'hono';
import { serve } from '@hono/node-server';
import { streamSSE } from 'hono/streaming';
import { SSETransport } from 'hono-mcp-server-sse-transport';
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';

const mcpServer = new McpServer(
  {
    name: 'your-mcp-server-name',
    version: '1.0.0',
  },
  {
    capabilities: {
      tools: {},
    },
  },
);

// here you add your tools
// ...

const app = new Hono();

// to support multiple simultaneous connections we have a lookup object from
// sessionId to transport
const transports: { [sessionId: string]: SSETransport } = {};

app.get('/sse', (c) => {
  return streamSSE(c, async (stream) => {
    const transport = new SSETransport('/messages', stream);

    transports[transport.sessionId] = transport;

    stream.onAbort(() => {
      delete transports[transport.sessionId];
    });

    await mcpServer.connect(transport);

    while (true) {
      // This will keep the connection alive
      // You can also await for a promise that never resolves
      await stream.sleep(60_000);
    }
  });
});

app.post('/messages', async (c) => {
  const sessionId = c.req.query('sessionId');
  const transport = transports[sessionId];

  if (transport == null) {
    return c.text('No transport found for sessionId', 400);
  }

  return await transport.handlePostMessage(c);
});

serve(
  {
    fetch: app.fetch,
    port: 3000,
  },
);

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。