Skip to main content
Glama
Snozu

Relay MCP Server

by Snozu

Relay

AIオペレーションエージェント。自社データから回答し、自社ポリシーを引用し、1セントでも使う前に人間が確認します。

Next.js AI SDK PostgreSQL TypeScript Self-hosted

1 オーケストレーター · 2 スペシャリスト · 9 ツール · 1 人間承認ゲート付き書き込み


オペレーションチームはギャップの中で働いています。「なぜこの顧客の注文が届いていないのか、そして私たちは彼らに返金すべきなのか?」という問いの答えは、注文データベースと、オンボーディング以来誰も読んでいないポリシードキュメントの2か所に同時に存在します。このギャップを手作業で埋めることが、サポートエージェントの一日の大半を占めています。

Relayはそれを埋めます。そして、その作業内容を表示しながら行います。

リクエスト処理中のRelayコンソール


通常のチャットボットとの違い

インターネットではなく、あなたのシステムを読み取ります。 9つのツールが稼働中のPostgreSQLデータベースをクエリします。モデルはツールの結果から得られなかった事実を述べることを禁止されており、すべての呼び出しは実際のレイテンシとともに画面上に表示されます。

散文ではなく、プロダクトをレンダリングします。 遅延しているものを尋ねると、ステータスバッジと遅延日数を含むテーブルが表示されます。概要を求めるとダッシュボードが表示されます。モデルがツールを選択し、フロントエンドが結果の見た目を決定するため、モデルが何をしても出力は常に適切にフォーマットされます。

自社ポリシーを引用します。 PDFをアップロードすると、数秒でチャンク化、埋め込み、検索可能になります。検索はハイブリッド方式です。意味的な類似性のためのベクトル類似度と、SKUのような正確な用語のためのPostgreSQL全文検索を、相互ランク融合で統合します。埋め込みはプロセス内で計算されるため、ドキュメントの内容がサーバー外に出ることはありません。

あなたのお金を使うことはできません。 書き込みを行うツールは正確に1つだけです。それはオーケストレーター上にあり、人間の承認ゲートの背後にあり、注文合計額に上限があり、冪等性があります。スペシャリストは資金を動かすことができず、いかなる委任もゲートを迂回することはできません。これは設定ではなく、トポロジーの特性です。

既存のツールに接続できます。 RelayはMCPサーバーとしても機能します。Claude Desktop、Cursor、または他のエージェントを/api/mcpに向けると、読み取りツールがそこで利用可能になります。同じツール、同じデータに対するものです。書き込みツールは意図的に公開されていません。承認ゲートはRelayのインターフェースに存在するため、書き込みを連携させると外部クライアントにそれを回避する手段を与えることになります。

配線をライブで確認できます。 アーキテクチャビューは図ではなく、リクエストが実際にたどった経路に沿ってノードが光り、各スペシャリストが呼び出したツールとその所要時間が表示されます。

ライブアーキテクチャビュー


エージェント

エージェント

担当

ツール

Relay (オーケストレーター)

リクエストのルーティング、回答の合成、書き込みパスの管理

2 委任 + 1 書き込み

オペレーションスペシャリスト

注文、出荷、顧客、チケット、オペレーション概要

7 読み取り

ナレッジスペシャリスト

ハイブリッド検索によるドキュメントライブラリ

1 読み取り

委任は速度のためではありません。レイテンシがかかります。その代わりに、信頼性の高いツール選択(6つの関連ツールは14の無関係なツールより優れている)、スペシャリストごとのクリーンなコンテキスト、そして構造的に分離された書き込みパスを提供します。

ツール

ツール

効果

機能

find_delayed_orders

読み取り

推定配達日を過ぎても配達されていない注文

search_orders

読み取り

ステータス、顧客、または最近の注文

get_order

読み取り

1件の注文の詳細:商品、出荷、チケット、返金

track_shipment

読み取り

出荷の現在地、遅延の有無と日数

search_tickets

読み取り

ステータス、優先度、カテゴリ別サポートチケット

get_customer

読み取り

1件の顧客の注文履歴とチケット履歴

get_operations_summary

読み取り

ステータス別件数、キャリア別遅延、14日間のボリュームトレンド

search_knowledge

読み取り

アップロードされたドキュメントのハイブリッド検索

issue_refund

書き込み

返金を発行します。人間の承認が必要です。上限あり、冪等性あり。


検索の仕組み

検索パイプライン

取り込み、ドキュメントごとに1回:アップロード → 抽出 → チャンク化(約1000文字、150オーバーラップ) → 埋め込み(多言語MiniLM、384次元) → pgvectorに保存。

クエリ、質問ごとに:埋め込み → ベクトル検索 および 全文検索を並行実行 → 相互ランク融合で統合 → ソース付きの上位5つのパッセージ。

どちらか一方だけでは不十分だからです。ベクトル類似度は異なる言葉で同じ意味を持つパッセージを見つけますが、正確なSKUを見逃します。全文検索は正確なトークンを見つけますが、言い換えを見逃します。RRFは、比較不可能なシステム間でスコアを調整することなく、2つのランキングを統合します。

埋め込みモデルは意図的に多言語対応です。英語のみのモデルでは、スペイン語の質問と英語のポリシーを照合した場合のスコアは0.18で、無関係なテキストに与える0.02とほとんど変わりません。言語をまたいだ検索は、静かにノイズを返すことになります。多言語モデルでは、同じペアのスコアが0.43になります。


実行方法

必要条件: Node 22以上、Docker、およびDeepSeekまたはAnthropicのAPIキー。

npm install                  # also generates the Prisma client
cp .env.example .env         # set RELAY_PROVIDER and the matching key
npm run db:up                # PostgreSQL + pgvector on port 5440
npm run db:push              # create the schema
npm run db:seed              # demo dataset + policy documents
npm run dev

http://localhost:3000 を開きます。

ご自身のキーをお持ちください。 コンソールの設定タブでは、APIキーを受け付けます。このキーはブラウザにのみ保存され、リクエストヘッダーとして送信され、プロバイダーに転送された後は破棄されます。データベースに書き込まれることはなく、ログに記録されることもなく、監査証跡に表示されることもありません。

コマンド

機能

npm run db:up / db:down

PostgreSQLの起動 / 停止

npm run db:reset

すべてをワイプして再シード

npm run db:seed:docs

ドキュメントライブラリのみリセット

npm run docs:pdf

ケーススタディPDFを再構築

シードは決定論的です(実行ごとに同じ注文、遅延、チケット)。日付は現在時刻を基準に生成されるため、データが古く見えることはありません。

試してみる

アップロード用のサンプルドキュメントはdocs/sample-uploads/にあります。各ドキュメントの後に尋ねる質問と正解も記載されています。そのうちの1つは、シードされたポリシーと意図的に矛盾しています。これは実際のクライアントで発生するケースです。


プロジェクト構成

prisma/
  schema.prisma          Data model — one datastore
  seed.ts                Deterministic business dataset
  seed-documents.ts      Policy documents into the knowledge base
src/
  app/api/chat/route.ts  The agent endpoint
  lib/
    agents.ts            Orchestrator + specialists, delegation tools
    tools.ts             The 9 tools
    rag/                 Chunking, ingestion, hybrid search
    embeddings.ts        Local multilingual embedder
    audit.ts             Tool call recording
    model.ts             Provider resolution, bring-your-own-key
  components/
    console.tsx          The one-panel console
    architecture.tsx     Live architecture canvas
    renders/             Generative UI: tables, records, charts

MCP経由での接続

// claude_desktop_config.json
{
  "mcpServers": {
    "relay": { "url": "http://localhost:3000/api/mcp" }
  }
}

8つの読み取りツールが利用可能になります:注文、出荷、顧客、チケット、オペレーション概要、ハイブリッドドキュメント検索。issue_refundは設計上存在しません。読み取りは連携しても安全ですが、書き込みは人間のゲートの背後に留まります。

デプロイメント

セルフホスト。スタンドアロンのNext.jsビルドと、リバースプロキシの背後にあるPostgreSQLコンテナ。管理プラットフォームは不要で、ベンダーロックインもありません。

セキュリティ

.envおよび.env.exampleを除くすべての.env.*はgitignoreされています。このリポジトリは公開されています。キー、トークン、接続文字列は追跡対象のファイルに含めてはいけません。

デモデータセットは完全に生成されたものです。Harbor & Pineは架空のブランドであり、そこに含まれる顧客、注文、住所、返金は実在の人物を指すものではありません。


ドキュメント

ドキュメント

対象

ケーススタディ (EN)

完全な技術文書

MCP公開 · (ES)

/api/mcpの構築方法、公開内容、非公開内容

ケーススタディ (ES)

スペイン語版

サンプルアップロード

期待される回答付きテストドキュメント

制作

IKOM — Haziel Zul と Jorge Bustos。

Relayはショーケースビルドです。Harbor & Pineは架空のブランドであり、そのデータは生成されたものです。アーキテクチャ、コード、数値はすべて本物であり、デモで再現可能です。

-
license - not tested
-
quality - not tested
C
maintenance

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Snozu/relay'

If you have feedback or need assistance with the MCP directory API, please join our Discord server