# SearXNG MCP Server
SearXNG を Claude Code から MCP サーバーとして利用するためのブリッジです。
**[English README](README.md)**
## 機能
- **searxng_search**: 複数エンジンによる Web 検索
- **searxng_images**: 画像検索
- **searxng_news**: ニュース検索
## 前提条件
1. JSON 形式を有効にした SearXNG インスタンスが実行されていること
**重要**: SearXNG のデフォルト設定では HTML 形式のみが許可されています。この MCP サーバーを使用するには、カスタム設定ファイルをマウントして JSON 形式を有効にする必要があります。
まず、サンプルファイルから設定ファイルを作成します:
```bash
cp searxng-config/settings.yml.example searxng-config/settings.yml
# settings.yml を編集して独自の secret_key を設定してください
```
次に、設定ファイルをマウントして SearXNG を起動します:
```bash
# Docker を使用(推奨)
docker run -d \
-p 8080:8080 \
-v $(pwd)/searxng-config/settings.yml:/etc/searxng/settings.yml:ro \
-e SEARXNG_BASE_URL=http://localhost:8080/ \
searxng/searxng
# またはローカルにインストール
# 参照: https://docs.searxng.org/admin/installation.html
```
`searxng-config/settings.yml.example` ファイルには、JSON 形式を有効にするための設定が含まれています:
```yaml
use_default_settings: true
search:
formats:
- html
- json
server:
secret_key: "your-secret-key-here"
limiter: false
image_proxy: true
```
2. SearXNG が JSON 形式を有効にして動作していることを確認
```bash
curl "http://localhost:8080/search?q=test&format=json"
```
`403 Forbidden` エラーが発生する場合、JSON 形式が有効になっていません。設定ファイルが正しくマウントされているか確認してください。
## インストール
```bash
cd searxng-mcp-server
npm install
npm run build
```
## Claude Code への設定
### 方法1: CLI を使用(推奨)
```bash
# ローカルスコープに追加(現在のプロジェクトのみ)
claude mcp add --transport stdio searxng -- node /path/to/searxng-mcp-server/dist/index.js
# ユーザースコープに追加(全プロジェクトで利用可能)
claude mcp add --transport stdio searxng --scope user -- node /path/to/searxng-mcp-server/dist/index.js
```
環境変数を追加する場合:
```bash
claude mcp add --transport stdio searxng \
--env SEARXNG_BASE_URL=http://localhost:8080 \
-- node /path/to/searxng-mcp-server/dist/index.js
```
### 方法2: 手動設定
**プロジェクトスコープ**(プロジェクトルートの `.mcp.json`):
```json
{
"mcpServers": {
"searxng": {
"command": "node",
"args": ["/path/to/searxng-mcp-server/dist/index.js"],
"env": {
"SEARXNG_BASE_URL": "http://localhost:8080"
}
}
}
}
```
**ユーザースコープ**(`~/.claude.json`):
```json
{
"mcpServers": {
"searxng": {
"command": "node",
"args": ["/path/to/searxng-mcp-server/dist/index.js"],
"env": {
"SEARXNG_BASE_URL": "http://localhost:8080"
}
}
}
}
```
### インストールの確認
```bash
# 設定済みの MCP サーバー一覧を表示
claude mcp list
# Claude Code 内で確認
/mcp
```
## ツール呼び出しの自動許可(オプション)
デフォルトでは、Claude Code は SearXNG ツールを呼び出すたびに確認を求めます。確認をスキップするには、`~/.claude/settings.json` に以下を追加してください:
```json
{
"permissions": {
"allow": [
"mcp__searxng__searxng_search",
"mcp__searxng__searxng_images",
"mcp__searxng__searxng_news"
]
}
}
```
## 環境変数
| 変数名 | デフォルト値 | 説明 |
|--------|-------------|------|
| `SEARXNG_BASE_URL` | `http://localhost:8080` | SearXNG サーバーの URL |
## 使用例
Claude Code から以下のように利用できます:
### Web 検索
```text
SearXNG で「Rust プログラミング言語の特徴」を検索して
```
### 画像検索
```text
SearXNG で「富士山」の画像を検索して
```
### ニュース検索
```text
SearXNG で「AI 開発」の最新ニュースを取得して
```
## トラブルシューティング
### JSON 形式で 403 Forbidden エラーが発生する場合
`format=json` を使用した際に `403 Forbidden` エラーが発生する場合、SearXNG インスタンスで JSON 形式が有効になっていません。以下を確認してください:
1. Docker 起動時に設定ファイルをマウントしているか:
```bash
docker run -d \
-p 8080:8080 \
-v $(pwd)/searxng-config/settings.yml:/etc/searxng/settings.yml:ro \
-e SEARXNG_BASE_URL=http://localhost:8080/ \
searxng/searxng
```
2. 設定に JSON 形式が含まれているか確認:
```bash
docker exec <container_id> grep -A 3 "formats" /etc/searxng/settings.yml
```
### SearXNG に接続できない場合
```bash
# SearXNG が起動しているか確認
curl "http://localhost:8080/search?q=test&format=json"
# 起動していない場合(Docker)- 必ず設定ファイルをマウントすること
docker run -d \
-p 8080:8080 \
-v $(pwd)/searxng-config/settings.yml:/etc/searxng/settings.yml:ro \
-e SEARXNG_BASE_URL=http://localhost:8080/ \
searxng/searxng
```
### 結果が返ってこない場合
SearXNG は複数の検索エンジンから結果を集約します。結果が返らない場合:
1. SearXNG インスタンスでエンジンが有効になっているか確認
2. エンジンを指定してみる:`engines: "google,bing,duckduckgo"`
3. SearXNG のログでエラーを確認
### MCP サーバーが表示されない場合
```bash
# サーバーが登録されているか確認
claude mcp list
# サーバーの状態を確認
claude mcp get searxng
```
## ライセンス
MIT