🚀 勇敢搜索代理サーバー
このプロジェクトは、代理サーバーを通じて Brave Search とのやり取りを実現し、Server-Sent Events (SSE) というリアルタイムストリーミングプロトコルをサポートしています。以下に、このプロジェクトに関する詳細情報を紹介します。
🚀 クイックスタート
📦 インストール
リポジトリのクローン
git clone git@github.com:yourusername/brave-search-mcp-server.git
cd brave-search-mcp-server
依存関係のインストール
npm を使用してプロジェクトの依存関係を管理します。
npm install
🔧 プロジェクトの実行
サービスの起動
node src/index.ts
環境変数の設定
.env.example
ファイルを .env
にリネームし、必要に応じて設定を変更してください。
✨ 主な機能
- Docker を使用したコンテナ化デプロイ:
Dockerfile
を通じて完全な Docker イメージの構築をサポートします。
- Kubernetes デプロイのサポート:Helm Chart ファイル (
helm/brave-search-mcp-sse
) を提供し、Kubernetes 環境でのデプロイを容易にします。
- MCP プロトコルのサポート:SSE を通じてリアルタイムメッセージ通信プロトコル (MCP) を実装し、クライアントとサーバー間のやり取りを可能にします。
💻 使用例
クライアント呼び出しの例
const fetch = require('node-fetch');
async function search(query) {
const response = await fetch('http://localhost:3000', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
"command": "brave_web_search",
"params": {
"query": query
}
})
});
const decoder = new TextDecoder();
const encoder = new TextEncoder();
for await (const chunk of response.body.get chunks()) {
console.log(decoder.decode(chunk));
}
}
📚 ドキュメント
ツール機能
1. brave_web_search
- 説明:Brave Search API を使用して一般的なウェブ検索を行います。
- 入力パラメータ:
query
(文字列、必須): 検索クエリ。
count
(数値、オプション): 返される結果の数 (1 - 20、デフォルトは 10)。
offset
(数値、オプション): ページングオフセット (0 - 9、デフォルトは 0)。
- その他の Brave API パラメータ (
search_lang
, country
, freshness
, result_filter
, safesearch
など) がサポートされる場合があります(詳細は src/services/braveSearchApi.ts
を参照)。
- 出力:検索結果(タイトル、リンク、段落など)を含む MCP メッセージをストリーミングで送信します。
2. brave_local_search
- 説明:Brave Search API を使用してローカルのビジネスや場所を検索します。ローカルの結果がない場合は、ウェブ検索にフォールバックします。
- 入力パラメータ:
query
(文字列、必須): ローカル検索クエリ(例: "pizza near me"、"downtown のカフェ")。
count
(数値、オプション): 返される結果の数 (デフォルトは 10)。
- 出力:ローカルのビジネス情報を含む MCP メッセージをストリーミングで送信します。
プロジェクト構造
brave-search-mcp-server/
├── Dockerfile # Docker イメージ構築ファイル
├── package.json # プロジェクトの依存関係管理ファイル
├── src/
│ ├── index.ts # プロジェクトのメインエントリーファイル
│ └── services/
│ └── braveSearchApi.ts # Brave Search API 呼び出しの処理ロジック
├── .env.example # 環境変数のサンプル設定ファイル
└── README.md # プロジェクトのドキュメント
貢献ガイド
コードの提出
- 機能ブランチを作成します。
git checkout -b feature/your-feature-name
- 変更をコミットします。
git add .
git commit -m 'feat: 新機能の追加'
- リモートリポジトリにプッシュし、Pull Request を作成します。
git push origin feature/your-feature-name
貢献の原則
- プロジェクトのコードスタイルと規約に従ってください。
- 提出するコードには適切なテストケースを含めてください。
- コミットメッセージは明確であるようにしてください。
📄 ライセンス
このプロジェクトは MIT ライセンスの下で提供されています。詳細なライセンス条項は以下の通りです。
MIT License
Copyright (c) [年份] [作者姓名]
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
詳細については MIT License を参照してください。