はじめに
ふしゅ〜 nikkieです
これまでのMCPの素振りを元に、今回はやりたかったことに取り組みます。
なるか、節約!?
目次
- はじめに
- 目次
- 前回のMCP! stdioだけでなくsseでも動かす
- MCPでBrave Search
- Brave Search serverをstdioで動かす
- LLMにBrave Searchを使ってもらう
- 終わりに
前回のMCP! stdioだけでなくsseでも動かす
ここまでの一連の素振りで、繰り返しQuickstartに取り組んできました。
- クライアントにClaudeだけでなく、GPTやGeminiも使う
- サーバ・クライアント間のtransportをstdioだけでなく、sseも使う
MCPまわりの手札を増やしたので、いよいよ月200ドル節約の可能性に取り組みます1
MCPでBrave Search
Claude + MCP(Brave Search)で調査依頼した結果と
— 今別府すてぃお (@suthio_) 2025年3月7日
DeepResearchで調査依頼した結果で大まかには結果変わらなかったので3万払いたくない人はClaude + MCP(Brave Search)でも全然いいと思った。
Brave Searchは、MCP公式のサーバです。
Brave Search - Web and local search using Brave’s Search API (Web and browser automation (Example Servers))
実装はこちら。
TypeScriptで書かれています。
Brave Search MCP ServerはDockerで動かし、サーバ・クライアント間をstdioでtransportします。
Brave Search serverをstdioで動かす
Brave SearchのAPIを使えるようにする
api-dashboard.search.brave.com
Dockerイメージをビルド
README
に沿ってビルドします。
https://github.com/modelcontextprotocol/servers/tree/e65ec2d55114ac9f6a58251e93f2b41e5f0bc067/src/brave-search#build
% git clone git@github.com:modelcontextprotocol/servers.git mcp-servers % cd mcp-servers % docker build -t mcp/brave-search:latest -f src/brave-search/Dockerfile .
環境変数BRAVE_API_KEY
を設定したシェルで、このイメージは動かせます。
% docker run -i --rm -e BRAVE_API_KEY mcp/brave-search Brave Search MCP Server running on stdio
(なお、Ctrl+C
が効かなかったので、別のシェルでdocker stop
して止めました)
クライアントでdocker run
する
StdioServerParameters
でdocker run
します。
Claude Desktopの設定と同じということに気づきました。
https://github.com/modelcontextprotocol/servers/tree/e65ec2d55114ac9f6a58251e93f2b41e5f0bc067/src/brave-search#docker
環境変数PATH
を渡しているのは、私のdocker
コマンドが~/.rd/bin/docker
にあるためです。
指定しないと(subprocessで)docker
コマンドが見つかりませんでした。
LLMにBrave Searchを使ってもらう
gemini-2.0-flash
2025-03-12 20:06:51,602 | INFO | __main__:process_query:91 - [Calling tool brave_web_search with args {'count': 5, 'query': '色づく世界の明日から 聖地'}]
GPT-4o
2025-03-12 20:10:22,194 | INFO | __main__:process_query:89 - [Calling tool brave_web_search with args {'query': '色づく世界の明日から 聖地 長崎', 'count': 5}]
検索クエリの組み立てや応答内容を比べると、GPT-4oの方が勝っているように感じます。
またGeminiは検索してくれないことがありました2。
Claudeは未評価です(宿題として、LLMという依存を注入するようにしたい)
終わりに
MCPでBrave SearchをGeminiとGPTに使ってもらいました。
MCPはstdio transportでdocker run
することで、TypeScript実装のサーバもPython実装のクライアントから使えています!
ChatGPT deep researchの費用の節約は道半ば、実装の宿題が残りました。
MCPのtransportは私の想像に反してstdioが前提なのかもしれません(Claude Desktopを見た感じ)
MCP、serverとclientのtransportにstdioとsseがあり、両方触って今見えていることとしては、結構stdio前提かも。
— nikkie(にっきー) / にっP (@ftnext) 2025年3月11日
stdioサポートしたserverをclientからpython, node, uv run, docker runとあらゆる手段で呼び出す感じ(裏はsubprocess)
Claude Desktopもstdioってことなのかな。sseの例が知りたいな
ソースコードの全容はこちらです