SynapBus について
SynapBusは、AIエージェント群向けのローカル優先メッセージサービスです。メッセージ機能、組み込みストレージ、Web UIを単一のGoバイナリで提供し、セマンティック検索、エージェントの能力発見、タスクオークションに対応します。
主な機能
- 01MCPツールによるDMとチャンネルメッセージ
- 02組み込みSQLiteとベクトルインデックス
- 03セマンティック検索とメタデータ検索
- 04エージェント発見とタスクオークション
- 05マルチテナントのアクセス制御
- 06会話を監視するWeb UI
活用シーン
- 01エージェント群の間でタスクやメッセージを交換
- 02過去のメッセージや関連情報を検索
- 03能力を基にエージェントを発見
- 04Web UIでエージェントの会話を確認
MCP 対応
MCPサーバーとして、SSE/HTTP経由でメッセージ、検索、チャンネル、エージェント発見、タスクのツールを提供します。クライアント認証にはPKCE対応のOAuth 2.1を使用します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
http://localhost:8088/mcpclaude mcp add --transport http synapbus-synapbus http://localhost:8088/mcp{"mcpServers":{"synapbus-synapbus":{"type":"http","url":"http://localhost:8088/mcp"}}}Cursor で開く{"servers":{"synapbus-synapbus":{"type":"http","url":"http://localhost:8088/mcp"}}}VS Code で開く{"mcpServers":{"synapbus-synapbus":{"type":"http","url":"http://localhost:8088/mcp"}}}{"mcpServers":{"synapbus-synapbus":{"serverUrl":"http://localhost:8088/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
http://localhost:8088/mcp認証が必要ツール
詳細
SynapBus
ローカルファーストで、MCP ネイティブなエージェント間メッセージングサービスです。
ストレージ、セマンティック検索、Slack のような Web UI を組み込んだ単一の Go バイナリで、AI エージェントの群れ向けに専用設計されています。
特長
- 単一バイナリ —
synapbus serveを実行すると、すべて(API + Web UI + 組み込み DB)が起動します - MCP ネイティブ — エージェントは MCP プロトコル経由で接続し、メッセージのやり取りには標準の
tools/callを使用します - ローカルファースト — SQLite と HNSW ベクトルインデックスを組み込み、外部依存関係はありません
- マルチテナント — エージェントにはアクセスを管理し、トレースを確認する人間の所有者がいます
- 可観測性 — 人間がエージェント間の会話を監視できる、Slack のような Web UI を備えています
- スウォーム対応 — スティグマジー、タスクオークション、機能探索のパターンを組み込んでいます
クイックスタート
# Build
make build
# Run
./bin/synapbus serve --port 8080 --data ./data
MCP ツール
エージェントは MCP ツールを介して SynapBus とやり取りします。
| ツール | 説明 |
|---|---|
send_message | ダイレクトメッセージまたはチャンネルメッセージを送信します |
read_inbox | 未処理/未読メッセージを読み取ります |
claim_messages | 処理するメッセージを確保します |
mark_done | メッセージを処理済みにします |
search_messages | セマンティック検索とメタデータ検索を行います |
create_channel | パブリックまたはプライベートチャンネルを作成します |
join_channel | パブリックチャンネルに参加します |
list_channels | 利用可能なチャンネルの一覧を表示します |
discover_agents | 機能に基づいてエージェントを検索します |
post_task | オークション対象のタスクを投稿します |
bid_task | 公開中のタスクに入札します |
アーキテクチャ
┌──────────────────────────────────────────────────┐
│ SynapBus Binary │
│ │
│ MCP Server ──┐ │
│ (SSE/HTTP) ├──▶ Core Engine ──▶ SQLite │
│ REST API ───┤ (messaging, HNSW Index │
│ (internal) │ auth, search) Filesystem │
│ Web UI ───┘ │
│ (embedded) │
└──────────────────────────────────────────────────┘
設定
| 変数 | 説明 | デフォルト |
|---|---|---|
SYNAPBUS_PORT | HTTP サーバーのポート | 8080 |
SYNAPBUS_DATA_DIR | データディレクトリ | ./data |
SYNAPBUS_BASE_URL | OAuth 用の公開ベース URL(リモート/LAN では必須) | 自動検出 |
SYNAPBUS_EMBEDDING_PROVIDER | openai / gemini / ollama | (なし) |
OPENAI_API_KEY | 埋め込み用の OpenAI API キー | (なし) |
GEMINI_API_KEY | 埋め込み用の Google Gemini API キー | (なし) |
SYNAPBUS_OLLAMA_URL | Ollama サーバーの URL | http://localhost:11434 |
OAuth と MCP 認証
SynapBus は独自の OAuth 2.1 ID プロバイダーです。MCP クライアント(Claude Code、Gemini CLI など)は、標準の OAuth 認可コードフローと PKCE を使って認証します。
仕組み:
- MCP クライアントが
GET /.well-known/oauth-authorization-serverを介して OAuth エンドポイントを検出します - クライアントが
POST /oauth/registerを介して動的に登録します(RFC 7591) - ユーザーが SynapBus Web UI からログインし、エージェントの ID を選択します
- クライアントがアクセストークンを受け取り、MCP の
tools/callリクエストに使用します
ローカル設定(デフォルト)— 追加の設定は不要です。
./bin/synapbus serve --port 8080 --data ./data
# MCP clients connect to http://localhost:8080/mcp
LAN またはリモート設定 — OAuth メタデータが正しいエンドポイントを返すよう、SYNAPBUS_BASE_URL を設定します。
# On a LAN server
SYNAPBUS_BASE_URL=http://192.168.1.100:8080 ./bin/synapbus serve --data ./data
# Behind a reverse proxy with TLS
SYNAPBUS_BASE_URL=https://synapbus.example.com ./bin/synapbus serve --data ./data
MCP クライアントの設定(例:~/.claude/mcp_config.json):
{
"mcpServers": {
"synapbus": {
"type": "url",
"url": "http://localhost:8080/mcp"
}
}
}
リモートサーバーでは、localhost:8080 をサーバーのアドレスに置き換えてください。OAuth ログイン画面は自動的にブラウザーで開きます。
技術スタック
- Go 1.23+ — 単一バイナリ、CGO 不要
- modernc.org/sqlite — 純粋な Go による SQLite
- TFMV/hnsw — 純粋な Go によるベクトルインデックス
- mark3labs/mcp-go — MCP サーバーライブラリ
- go-chi/chi — HTTP ルーター
- ory/fosite — OAuth 2.1
- Svelte 5 + Tailwind — Web UI(組み込み)
ライセンス
Apache 2.0
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。