remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
Integrations
Integrates with Brave Search API to provide web search capabilities including general queries, news, and articles with pagination and filtering controls.
Enables local search functionality to find businesses, restaurants, and services with detailed information, with smart fallback to web search when no results are found.
Brave Search MCP/SSE サーバー
Brave Search APIを統合する Server-Sent Events (SSE) を使用した Model Context Protocol (MCP) の実装。ストリーミング インターフェースを通じて AI モデルやその他のクライアントに Web およびローカル検索機能を提供します。
概要
このサーバーは、モデルコンテキストプロトコルを理解する大規模言語モデルのツールプロバイダーとして機能します。SSE接続を介してBraveの強力なウェブ検索機能とローカル検索機能を公開し、検索結果とステータス更新のリアルタイムストリーミングを可能にします。
主な設計目標:
- **集中アクセス:**集中性を念頭に置いて設計されており、組織または個人が単一の Brave Search API キーを管理し、複数の内部クライアントまたはアプリケーションへの制御されたアクセスを提供できます。
- **可観測性:**リクエスト、API インタラクション、エラー、レート制限を追跡するための強力なログ記録機能を備えており、使用状況の可視性を提供し、デバッグを支援します。
- **柔軟な展開:**ネットワーク内でプライベートに展開することも、Kubernetes Ingress や直接 Docker ポート マッピングなどの方法を使用してオプションでパブリックに公開することもできます。
特徴
- Web 検索: 一般的なクエリ、ニュース、記事などを検索する Brave の独立した Web 検索インデックスにアクセスします。ページ区切りとフィルタリング コントロールをサポートします。
- ローカル検索: 住所、電話番号、評価などの詳細情報を使用して、企業、レストラン、サービスを検索します。
- スマート フォールバック: クエリに対して特定のローカル結果が見つからない場合、ローカル検索は自動的にフィルターされた Web 検索にフォールバックします。
- サーバー送信イベント (SSE) : 検索結果とツール実行ステータスの効率的なリアルタイム ストリーミング。
- モデル コンテキスト プロトコル (MCP) : 互換性のあるクライアントとのシームレスな統合のために MCP 標準に準拠しています。
- Docker サポート: コンテナ化とデプロイメントを簡単に行うための
Dockerfile
が含まれています。 - Helm チャート: Kubernetes クラスターへの簡単なデプロイのための Helm チャートを提供します。
前提条件
選択した展開方法に応じて、次のものが必要になります。
- Brave Search APIキー:すべてのデプロイメント方法で必要です。下記の「はじめに」をご覧ください。
- Docker : Docker を使用してデプロイする場合は必須です。
- kubectl & Helm : Helm を使用して Kubernetes にデプロイする場合は必須です。
- Node.js & npm : ローカル開発にのみ必要 (Node.js v22.x 以降を推奨)。
- Git : ローカル開発用のリポジトリのクローン作成やカスタム Docker イメージの構築に必要です。
はじめる
1. Brave Search APIキーを取得する
- Brave Search API アカウントにサインアップします。
- プランを選択します(無料プランもご利用いただけます)。
- 開発者ダッシュボードから API キーを生成します。
2. 構成
サーバーでは、 BRAVE_API_KEY
環境変数を介して Brave Search API キーを設定する必要があります。
その他の潜在的な環境変数 (詳細についてはsrc/config/config.ts
確認してください):
PORT
: サーバーがリッスンするポート (デフォルトは8080
)。LOG_LEVEL
: ログの詳細度 (例:info
、debug
)。
これらの変数を環境内で設定するか、ローカル開発の場合はプロジェクト ルートの.env
ファイルを使用して設定します。
インストールと使用方法
ニーズに最適な展開方法を選択してください。
オプション 1: Docker (デプロイメントに推奨)
前提条件: Docker がインストールされている。
- Brave Search API キーを取得する: 「はじめに」セクションの手順に従います。
- Docker イメージをプルする: Docker Hub から最新のイメージをプルする:または、特定のバージョン タグ (例:Copy
1.0.10
) を取得します。(あるいは、必要に応じてローカルでイメージをビルドすることもできます。リポジトリをクローンし、Copydocker build -t brave-search-mcp-sse:custom .
) - **Docker コンテナを実行します。**取得したタグ (例:
latest
または1.0.10
) を使用します。これにより、サーバーがデタッチモードで実行され、ホスト上のポート 8080 がコンテナーにマッピングされます。Copy
オプション 2: Helm (Kubernetes デプロイメント)
前提条件: kubectl
がクラスターに接続され、Helm がインストールされている。
- Brave Search API キーを取得する: 「はじめに」セクションの手順に従います。
- Helm リポジトリを追加します。Copy
- **API キー シークレットを準備する (推奨):**ターゲット名前空間に Kubernetes シークレットを作成します。Copy
- **Helmチャートをインストールします。**チャートのバージョンはアプリケーションのバージョンに対応しています(最新バージョンは
1.0.10
)。シークレットを使用してインストールします。または、キーを直接指定します(安全性は低くなります)。CopyCopy - **チャート設定:**デフォルト値を上書きすることで、デプロイメントをカスタマイズできます。必要な設定を含むYAMLファイル(例:
dev-values.yaml
、prod-values.yaml
)を作成し、インストール時に-f
フラグを使用してくださいhelm install ... -f dev-values.yaml
。利用可能なすべての構成オプションとそのデフォルト設定を確認するには、チャートのデフォルト値のvalues.yaml
ファイルを参照してください。
オプション3:地域開発
前提条件: Node.js および npm (v22.x 以降を推奨)、Git。
- Brave Search API キーを取得する: 「はじめに」セクションの手順に従います。
- リポジトリをクローンします。Copy
- 依存関係をインストールします:Copy
- **環境変数を設定する:**ルート ディレクトリに
.env
ファイルを作成します。Copy - TypeScript コードをビルドします。Copy
- サーバーを実行します。サーバーは設定されたポート (デフォルトはCopy
8080
) でリッスンを開始します。
API / プロトコルの相互作用
クライアントはHTTP GETリクエストを介してこのサーバーに接続し、SSE接続を確立します。具体的なエンドポイントはデプロイメントによって異なります(例: http://localhost:8080/
、 http://<k8s-service-ip>:8080/
、またはIngress経由)。
接続されると、サーバーとクライアントは SSE ストリームを介して MCP メッセージを使用して通信します。
利用可能なツール
サーバーは、接続されたクライアントに次のツールを公開します。
brave_web_search
- 説明: Brave Search API を使用して一般的な Web 検索を実行します。
- 入力:
query
(文字列、必須): 検索クエリ。count
(数値、オプション): 返される結果の数 (1 ~ 20、デフォルトは 10)。offset
(数値、オプション): ページ区切りのオフセット (0-9、デフォルトは 0)。- (
search_lang
、country
、freshness
、result_filter
、safesearch
などの他の Brave API パラメータもサポートされている可能性があります -src/services/braveSearchApi.ts
を確認してください)
- 出力: 検索結果 (タイトル、URL、スニペットなど) を含む MCP メッセージをストリームします。
brave_local_search
- 説明: Brave Search API を使用して、ローカルのビジネスや場所を検索します。ローカル検索結果が見つからない場合は、ウェブ検索にフォールバックします。
- 入力:
query
(文字列、必須): ローカル検索クエリ (例: 「近くのピザ」、「ダウンタウンのカフェ」)。count
(数値、オプション): 結果の最大数 (1〜20、デフォルトは 5)。
- 出力: ローカルビジネスの詳細 (名前、住所、電話番号、評価など) を含む MCP メッセージをストリームします。
( curl
を使用した例 - 注: 実際の MCP とのやり取りにはクライアント ライブラリが必要です)
クライアント構成例(カーソル)
このサーバーを Cursor などの MCP クライアントで使用するには、サーバーの SSE エンドポイントに接続するようにクライアントを構成する必要があります。
カーソル設定 ( mcp.json
または同様の設定ファイル) に次の設定を追加し、URL をbrave-search-mcp-sse
サーバーにアクセスできる実際のアドレスとポートに置き換えます。
説明:
transport
: このサーバーでは"sse"
に設定する必要があります。url
: ここが重要な部分です。- Docker 経由でローカルに実行している場合 (例に示すように)、
http://localhost:8080/sse
正しい可能性があります。 - Kubernetes で実行している場合は、
localhost:8080
を適切な Kubernetes サービス アドレス/ポート、またはサーバーのポート 8080 に到達するように構成された Ingress ホスト名/パスに置き換えます。 - URL パスが
/sse
で終わることを確認します。
- Docker 経由でローカルに実行している場合 (例に示すように)、
(Claude Desktop の最新バージョンなど、SSE トランスポートをサポートする他の MCP クライアントにも同様の構成手順が適用される場合がありますが、それぞれの特定のドキュメントを参照してください。)
プロジェクト構造
貢献
貢献を歓迎します!変更内容をプルリクエストでお気軽に送信してください。コードが既存のスタイルに準拠していること、および必要に応じてテストが含まれていることを確認してください。プルリクエストは時間の許す限りレビューさせていただきます。
ライセンス
このプロジェクトは、 MIT ライセンスの下でライセンスされます (LICENSE ファイルが存在するか、追加されることを前提としています)。
This server cannot be installed
Brave Search API を統合し、ページ区切り、フィルタリング、スマート フォールバックなどの機能を備えた Web 検索機能とローカル検索機能の両方を提供する MCP サーバーです。