Snappy MCP Server with Xano Integration について
Cloudflare Workers 上で動作し、Xano でツール定義、セッション状態、OAuth データ、リクエストログを管理するリモート MCP サーバーです。設定可能なツールを必要とする構成向けで、Streamable HTTP と SSE に対応します。
主な機能
- 01Cloudflare Workers へのデプロイ
- 02Xano によるツール管理
- 03セッション追跡と状態の永続化
- 04OAuth トークンと状態の保存
- 05Streamable HTTP と SSE 対応
活用シーン
- 01Xano 経由でのツール登録と管理
- 02リクエストをまたぐ MCP セッション追跡
- 03HTTP 経由でのリモート MCP クライアント接続
- 04OAuth データとリクエストログの保存
MCP 対応
Xano で定義したツールを MCP クライアントに公開し、Streamable HTTP と SSE の接続に対応します。認証、セッション ID、永続化されたセッション状態を扱います。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Xano 統合による Snappy MCP サーバー
ツール管理、セッション追跡、OAuth のために Xano データベースと連携する、Cloudflare Workers 上に構築されたリモート MCP サーバーです。最新の Streamable HTTP トランスポートプロトコル(2024-11-05)を完全にサポートしました。
ローカルで開発する
# clone the repository
git clone https://github.com/roboulos/remote-mcp-server.git
# install dependencies
cd remote-mcp-server
npm install
# Configure Xano API Key
# Add your Xano API key to wrangler.jsonc in the XANO_API_KEY variable
# run locally
npm run dev
ブラウザーで http://localhost:8787/ を開けるはずです。
MCP サーバーに接続する
MCP Inspector を使用する(レガシー)
古い SSE トランスポートを使用して新しい MCP API を試すには、MCP Inspector を使用できます。
npx @modelcontextprotocol/inspectorで起動します- Inspector 内で、Transport Type を
SSEに切り替え、接続する MCP サーバーの URL としてhttp://localhost:8787/sseを入力し、「Connect」をクリックします - (モックの)ユーザー名/パスワードのログイン画面が表示されます。ログインするには任意のメールアドレスとパスワードを入力します
- MCP Inspector に戻り、定義済みのツールを一覧表示して呼び出せるようになります。
Workers AI Playground を使用する(Streamable HTTP)
最新の Streamable HTTP トランスポートプロトコルでテストするには、次の手順に従います。
- Workers AI Playground にアクセスします
- MCP サーバーへの接続を求められたら、エンドポイント URL を入力します。
ローカルでテストする場合は、次の URL を入力します。https://remote-mcp-server.robertjboulos.workers.dev/mcphttp://localhost:8787/mcp - 求められたら、認証情報を入力します。
- auth_token:Xano 認証トークン
- user_id:Xano ユーザー ID
- Playground は、新しいプロトコルを使用してセッション管理を自動的に行います
ローカルの MCP サーバーに Claude Desktop を接続する
レガシー SSE トランスポート
古い SSE トランスポートを使用して接続するには、Anthropic のクイックスタートに従い、Claude Desktop で「Settings」>「Developer」>「Edit Config」の順に開いて設定ファイルを見つけます。
テキストエディターでファイルを開き、次の設定に置き換えます。
{
"mcpServers": {
"math": {
"command": "npx",
"args": [
"mcp-remote",
"http://localhost:8787/sse"
]
}
}
}
これによりローカルプロキシが起動し、Claude が HTTP 経由で MCP サーバーと通信できるようになります。
Streamable HTTP トランスポート(推奨)
より新しく効率的な Streamable HTTP トランスポートを Claude Desktop で使用するには、設定を更新して /mcp エンドポイントを使用します。
{
"mcpServers": {
"xano": {
"remoteUrl": "http://localhost:8787/mcp",
"auth": {
"type": "bearer",
"token": "YOUR_XANO_AUTH_TOKEN"
},
"headers": {
"x-user-id": "YOUR_USER_ID"
}
}
}
}
YOUR_XANO_AUTH_TOKEN と YOUR_USER_ID を実際の認証情報に置き換えます。
Claude を開くとブラウザーウィンドウが表示され、ログインできます。右下に利用可能なツールが表示されます。適切なプロンプトを入力すると、Claude がツールを呼び出すかどうか尋ねます。
Xano 統合
この MCP サーバーは、バックエンドとして Xano を使用します。
- ツール管理:Xano の
____mcp_toolsテーブルでツールを定義すると、MCP サーバーに自動的に登録されます - セッション追跡:すべての MCP セッションは、一意のセッション ID とともに
___mcp_sessionsテーブルで追跡されます - OAuth 認証:OAuth トークンと状態は、Xano の
___oauth_tokensテーブルと___oauth_statesテーブルに保存されます - ログ記録:すべての MCP リクエストは
___mcp_logsテーブルに記録されます
Streamable HTTP の実装
このサーバーは、最新の Model Context Protocol Streamable HTTP トランスポート(2024-11-05)を次の機能とともに実装しています。
認証方法
サーバーは、幅広い互換性を実現するため、複数の認証方式に対応しています。
- URL パラメーター:
?auth_token=xxx&user_id=yyy(従来の方式) - Authorization ヘッダー:
x-user-idヘッダーとともにAuthorization: Bearer xxxを指定する方式(最新の方式) - リクエストボディ:初期化ペイロードに認証パラメーターを含めることができます
セッション管理
サーバーは、最新の仕様に従ってセッション ID を処理します。
- セッションの作成:新しい接続に対して、サーバーが一意のセッション ID を生成します
- セッションの追跡:クライアントはこの ID を保存し、以降のリクエストに
?sessionId=xxxとして含めます - 状態の永続化:各セッションは Xano 内で独自の状態を保持し、リクエストをまたいで維持されます
プロトコルへの準拠
この実装には、以下への適切な対応が含まれています。
- 統合メッセージエンドポイント:
/mcp/messageエンドポイントのパターンに対応します - プロトコルヘッダー:すべてのレスポンスに
MCP-Available-Transportsなどの適切なヘッダーが含まれます - SSE ストリーミング:ストリーミングレスポンス向けに SSE のサポートを強化しています
- レスポンス形式:プロトコル固有の拡張機能を備えた標準の JSON-RPC 2.0 形式です
Xano のセットアップ
- 必要なテーブルを含む Xano プロジェクトを作成します(データベーススキーマを参照)
- 以下の API エンドポイントを作成します。
/api/tools- GET - すべてのツールを一覧表示します/api/tools/execute/{tool_name}- POST - 特定のツールを実行します/api/sessions- POST - 新しいセッションを作成します/api/sessions/update-activity- PUT - セッションのアクティビティを更新します/api/oauth/tokens- POST - OAuth トークンを保存します/api/oauth/tokens/{user_id}/{provider}- GET - OAuth トークンを取得します/api/oauth/states- POST - OAuth の状態を保存します/api/oauth/states/{state}- GET - OAuth の状態を検証します/api/logs- POST - MCP リクエストを記録します
Cloudflare へのデプロイ
npx wrangler kv namespace create OAUTH_KV- ガイダンスに従って、KV 名前空間 ID を
wrangler.jsoncに追加します - Xano API キーを
wrangler.jsoncのXANO_API_KEY変数に追加します npm run deploy
デプロイしたリモート MCP サーバーをリモート MCP クライアントから呼び出す
上記の「ローカルでの開発」と同様に、MCP Inspector を実行します。
npx @modelcontextprotocol/inspector@latest
次に、接続先の MCP サーバーの URL として、Worker の workers.dev URL(例:worker-name.account-name.workers.dev/sse)を Inspector に入力し、「Connect」をクリックします。
これで、リモート MCP クライアントから MCP サーバーに接続できました。
Claude Desktop をリモート MCP サーバーに接続する
Claude の設定ファイルを更新して workers.dev URL(例:worker-name.account-name.workers.dev/sse)を指定し、Claude を再起動します。
{
"mcpServers": {
"math": {
"command": "npx",
"args": [
"mcp-remote",
"https://worker-name.account-name.workers.dev/sse"
]
}
}
}
デバッグ
問題が発生した場合は、Claude を再起動するか、次のコマンドを使ってコマンドラインから MCP サーバーに直接接続すると解決に役立つことがあります。
npx mcp-remote http://localhost:8787/sse
まれに、~/.mcp-auth に追加されたファイルを削除すると解決する場合があります。
rm -rf ~/.mcp-auth
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。