NATS MCP Server について
NATS MCP Serverは、NATS CLIを介してAIエージェントがNATSメッセージングシステムを利用できるようにします。MCPクライアントからメッセージの送信、購読、リクエストを行う用途に向いています。
主な機能
- 01詳細オプション付きメッセージ送信
- 02条件を指定したサブジェクト購読
- 03リクエスト・リプライ対応
- 04NATS CLI経由の操作
- 05送信時のテンプレート処理
活用シーン
- 01ヘッダー付きメッセージをNATSサブジェクトへ送信
- 02時間や件数を指定してメッセージを受信
- 03サービスにリクエストを送り返信を待機
MCP 対応
MCP サーバーとして、MCP クライアントに送信、購読、リクエストのツールを公開し、NATS CLIを介してNATSと連携します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
NATS MCP サーバー
NATS CLI を通じて、クラウドネイティブなメッセージングシステムであるNATSへのアクセスを提供する MCP(Model Context Protocol)サーバーです。
機能
- 高度なオプション(ヘッダー、テンプレート、返信サブジェクト)を指定してメッセージを公開
- タイムアウトとメッセージ数を設定してサブジェクトをサブスクライブ
- ヘッダーを使用したリクエスト/返信パターンをサポート
- NATS CLI と完全に統合
- エラー処理とクリーンアップ
要件
- Node.js >= 14.0.0
- NATS CLI (nats)
NATS CLI のインストール
macOS
Homebrew を使用:
brew tap nats-io/nats-tools
brew install nats-io/nats-tools/nats
Linux
snap を使用:
snap install nats
apt を使用(Debian/Ubuntu):
# First, add the NATS repository
echo "deb https://dl.nats.io/nats-io/repo/deb nats release" | sudo tee /etc/apt/sources.list.d/nats.list
curl -fsSL https://dl.nats.io/nats-io/repo/deb/gpg.key | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/nats.gpg
# Then install
sudo apt-get update
sudo apt-get install nats-server
yum を使用(RHEL/CentOS):
# Add the NATS repository
echo "[nats]
name=NATS Repository
baseurl=https://dl.nats.io/nats-io/repo/rpm/centos/\$releasever/\$basearch
gpgcheck=1
gpgkey=https://dl.nats.io/nats-io/repo/rpm/gpg.key
enabled=1" | sudo tee /etc/yum.repos.d/nats.repo
# Install
sudo yum install nats-server
Windows
Chocolatey を使用:
choco install nats-io-client
Scoop を使用:
scoop bucket add nats https://github.com/nats-io/scoop-bucket.git
scoop install nats
手動でインストールする場合:
- NATS CLI Releasesから最新リリースをダウンロードします
- アーカイブを展開します
- バイナリをシステムの PATH に追加します
ソースからビルド
お使いのシステムでパッケージを利用できない場合:
# Requires Go 1.16+
go install github.com/nats-io/natscli/nats@latest
インストールの確認
インストール後、CLI が動作することを確認します:
# Check version
nats --version
# Test connection to default server
nats ping
# List available commands
nats help
インストール
# Install from npm
npm install @modelcontextprotocol/nats-mcp-server
# Or clone and build from source
git clone https://github.com/bmorphism/nats-mcp-server.git
cd nats-mcp-server
npm install
npm run build
設定
サーバーは環境変数を使用して設定できます:
NATS_URL:NATS サーバーの URL(デフォルト:'nats://localhost:4222')
使用方法
サーバーは次の MCP ツールを提供します:
publish
高度なオプションを指定して、NATS サブジェクトにメッセージを公開します。
パラメーター:
subject(必須):メッセージを公開する NATS サブジェクトmessage(必須):公開するメッセージreply(任意):リクエスト/返信パターンの返信サブジェクトheaders(任意):メッセージヘッダーの配列(キーと値のペア)count(任意):公開するメッセージの数sleep(任意):メッセージ間の待機時間(例:「100ms」)template(任意):メッセージ内の Go テンプレート処理を有効にします
テンプレートを使用する例:
const result = await mcp.useTool("nats", "publish", {
subject: "greetings",
message: "Message {{Count}} @ {{Time}}",
count: 5,
sleep: "1s",
template: true
});
ヘッダーを使用する例:
const result = await mcp.useTool("nats", "publish", {
subject: "orders",
message: "New order received",
headers: [
{ key: "OrderId", value: "12345" },
{ key: "Priority", value: "high" }
]
});
subscribe
NATS サブジェクトをサブスクライブして、メッセージを受信します。
パラメーター:
subject(必須):サブスクライブする NATS サブジェクトtimeout(任意):サブスクリプションのタイムアウト(ミリ秒、デフォルト:5000)count(任意):終了する前に受信するメッセージの数raw(任意):メッセージのペイロードのみを表示します
例:
const result = await mcp.useTool("nats", "subscribe", {
subject: "greetings",
timeout: 10000,
count: 5,
raw: true
});
request
リクエストメッセージを送信し、返信を待ちます。
パラメーター:
subject(必須):リクエストの送信先となる NATS サブジェクトmessage(必須):リクエストメッセージtimeout(任意):リクエストのタイムアウト(ミリ秒、デフォルト:5000)headers(任意):リクエストヘッダーの配列(キーと値のペア)
例:
const result = await mcp.useTool("nats", "request", {
subject: "service.time",
message: "What time is it?",
timeout: 3000,
headers: [
{ key: "Locale", value: "en-US" }
]
});
テンプレート関数
テンプレート(template: true)を使用する場合、次の関数を利用できます:
Count:メッセージ番号TimeStamp:RFC3339 形式の現在時刻Unix:UTC での 1970 年からの秒数UnixNano:UTC での 1970 年からのナノ秒数Time:現在時刻ID:一意の IDRandom(min, max):min から max の長さのランダムな文字列
ランダム文字列を使用する例:
const result = await mcp.useTool("nats", "publish", {
subject: "test",
message: "Random data: {{ Random 10 100 }}",
template: true
});
MCP 設定への追加
Cline(VSCode 拡張機能)の場合
~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json に追加します:
{
"mcpServers": {
"nats": {
"command": "node",
"args": ["/path/to/nats-mcp-server/build/index.js"],
"env": {
"NATS_URL": "nats://localhost:4222"
}
}
}
}
Claude Desktop の場合
~/Library/Application Support/Claude/claude_desktop_config.json に追加します:
{
"mcpServers": {
"nats": {
"command": "node",
"args": ["/path/to/nats-mcp-server/build/index.js"],
"env": {
"NATS_URL": "nats://localhost:4222"
}
}
}
}
エラー処理
サーバーには、次の状況に対応する堅牢なエラー処理が含まれています:
- 接続の失敗
- 無効なパラメーター
- タイムアウト
- ネットワークエラー
- NATS 固有のエラー
- CLI 実行エラー
開発
プロジェクトをビルドするには:
npm run build
ビルド出力は build ディレクトリに生成されます。
貢献
- リポジトリをフォークします
- 機能ブランチを作成します(
git checkout -b feature/amazing-feature) - 変更をコミットします(
git commit -m 'Add some amazing feature') - ブランチにプッシュします(
git push origin feature/amazing-feature) - プルリクエストを作成します
ライセンス
MIT
謝辞
- NATS.io - 素晴らしいメッセージングシステムを提供してくださったこと
- NATS CLI - CLI ツールを提供してくださったこと
- Model Context Protocol - MCP フレームワークを提供してくださったこと
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。