SearXNG MCP Server
Um servidor de busca web que respeita a privacidade para agentes de IA, alimentado pelo mecanismo de metabusca SearXNG.
Documentação
Servidor MCP SearXNG
Uma implementação MCP sse do servidor Model Context Protocol (MCP) integrado ao SearXNG para fornecer aos agentes de IA poderosos recursos de busca que respeitam a privacidade.
Visão Geral
Este projeto demonstra como construir um servidor MCP que permite que agentes de IA realizem buscas na web usando uma instância do SearXNG. Ele serve como um modelo prático para criar seus próprios servidores MCP, usando o SearXNG como backend.
A implementação segue as melhores práticas estabelecidas pela Anthropic para a construção de servidores MCP, permitindo integração perfeita com qualquer cliente compatível com MCP.
Pré-requisitos
- Python 3.9+
- Acesso a uma instância do SearXNG em execução (local ou remota)
- Docker (opcional, para implantação em contêiner)
- uv (opcional, para gerenciamento rápido de dependências Python)
- Smithery (opcional, para gerenciamento de servidores MCP)
Servidor SearXNG (Obrigatório)
Você deve ter um servidor SearXNG em execução e acessível. A forma recomendada é via Docker:
docker run -d --name=searxng -p 32768:8080 -v "/root/searxng:/etc/searxng" \
-e "BASE_URL=http://0.0.0.0:32768/" \
-e "INSTANCE_NAME=home" \
--restart always searxng/searxng
- Isso executará o SearXNG na porta 32768 e persistirá a configuração em
/root/searxng. - O servidor MCP espera que o SearXNG esteja disponível em
http://172.17.0.1:32768por padrão (veja.env).
Instalação
Usando uv
Instale o uv se você não o tiver:
pip install uv
Clone este repositório:
git clone https://github.com/The-AI-Workshops/searxng-mcp-server.git
cd searxng-mcp-server/dev/searXNG-mcp
Instale as dependências:
uv pip install -r requirements.txt
Crie um arquivo .env com base no exemplo fornecido:
nano .env
# Edit .env as needed
Configure suas variáveis de ambiente no arquivo .env (veja a seção Configuração).
Usando Docker (Recomendado)
Construa a imagem Docker:
docker build -t mcp/searxng-mcp .
Crie um arquivo .env e configure suas variáveis de ambiente.
Execute a imagem Docker:
docker run -d --env-file ./.env -p 32769:32769 mcp/searxng-mcp
Usando Smithery
Smithery é uma ferramenta de linha de comando para gerenciar ferramentas de agentes de IA e servidores MCP.
Instale o Smithery se você não o tiver (veja a documentação do Smithery para vários métodos de instalação, por exemplo, usando pipx):
pipx install smithery
Instale o servidor MCP SearXNG usando o Smithery:
smithery install @The-AI-Workshops/searxng-mcp-server
Isso instalará o servidor e suas dependências em um ambiente dedicado gerenciado pelo Smithery.
Após a instalação, o Smithery fornecerá o caminho para o servidor instalado. Você precisará navegar até este diretório para configurá-lo. Por exemplo, se o Smithery instala ferramentas em ~/.smithery/tools/, o caminho pode ser ~/.smithery/tools/The-AI-Workshops/searxng-mcp-server.
Crie um arquivo .env no diretório do servidor copiando o exemplo:
# Example:
# cd ~/.smithery/tools/The-AI-Workshops/searxng-mcp-server
cp .env.example .env
nano .env
# Edit .env as needed
Configure suas variáveis de ambiente no arquivo .env (veja a seção Configuração).
Configuração
As seguintes variáveis de ambiente podem ser configuradas no seu arquivo .env:
| Variável | Descrição | Exemplo |
|---|---|---|
| SEARXNG_BASE_URL | URL base da sua instância SearXNG | http://172.17.0.1:32768 |
| HOST | Host para vincular ao usar transporte SSE | 0.0.0.0 |
| PORT | Porta para escutar ao usar transporte SSE | 32769 |
| TRANSPORT | Protocolo de transporte (sse ou stdio) | sse |
Executando o Servidor
Usando uv
Transporte SSE
Defina TRANSPORT=sse em .env e então:
uv run dev/searXNG-mcp/server.py
Transporte Stdio
Com stdio, o próprio cliente MCP pode iniciar o servidor MCP, então não há nada para executar neste momento.
Usando Docker
Transporte SSE
docker build -t mcp/searxng-mcp .
docker run --rm -it -p 32769:32769 --env-file dev/searXNG-mcp/.env -v $(pwd)/dev/searXNG-mcp:/app mcp/searxng-mcp
- A montagem
-v $(pwd)/dev/searXNG-mcp:/apppermite que você edite ao vivo o código e o arquivo .env no seu host e tenha as alterações refletidas no contêiner em execução. - O servidor estará disponível em
http://localhost:32769/sse.
Transporte Stdio
Com stdio, o próprio cliente MCP pode iniciar o contêiner do servidor MCP, então não há nada para executar neste momento.
Executando com Smithery
Transporte SSE
Defina TRANSPORT=sse em .env no diretório do servidor instalado pelo Smithery.
Então, você pode normalmente executar o servidor usando o interpretador Python do ambiente virtual que o Smithery criou para a ferramenta:
# Navigate to the server directory, e.g.,
# cd ~/.smithery/tools/The-AI-Workshops/searxng-mcp-server
~/.smithery/venvs/The-AI-Workshops_searxng-mcp-server/bin/python server.py
Alternativamente, se o Smithery fornecer um comando de execução direta para ferramentas instaladas (verifique a documentação do Smithery):
smithery run @The-AI-Workshops/searxng-mcp-server
O servidor estará disponível com base nas suas configurações de HOST e PORT em .env (por exemplo, http://localhost:32769/sse).
Transporte Stdio
Com stdio, o próprio cliente MCP iniciará o servidor. A configuração do cliente precisará apontar para o script server.py dentro do diretório gerenciado pelo Smithery, potencialmente usando smithery exec ou o caminho direto para o interpretador Python no ambiente virtual da ferramenta. Veja a seção "Integração com Clientes MCP" para exemplos.
Integração com Clientes MCP
Configuração SSE
Uma vez que o servidor esteja em execução com transporte SSE, você pode se conectar a ele usando esta configuração:
{
"mcpServers": {
"searxng": {
"transport": "sse",
"url": "http://localhost:32769/sse"
}
}
}
Nota para usuários do Windsurf: Use serverUrl em vez de url na sua configuração:
{
"mcpServers": {
"searxng": {
"transport": "sse",
"serverUrl": "http://localhost:32769/sse"
}
}
}
Nota para usuários do n8n: Use host.docker.internal em vez de localhost já que o n8n precisa alcançar fora do seu próprio contêiner até a máquina host:
Então a URL completa no nó MCP seria: http://host.docker.internal:32769/sse
Certifique-se de atualizar a porta se estiver usando um valor diferente do padrão 32769.
Python com Configuração Stdio
Adicione este servidor à sua configuração MCP para Claude Desktop, Windsurf ou qualquer outro cliente MCP:
{
"mcpServers": {
"searxng": {
"command": "python",
"args": ["dev/searXNG-mcp/server.py"],
"env": {
"TRANSPORT": "stdio",
"SEARXNG_BASE_URL": "http://localhost:32768",
"HOST": "0.0.0.0",
"PORT": "32769"
}
}
}
}
Docker com Configuração Stdio
{
"mcpServers": {
"searxng": {
"command": "docker",
"args": ["run", "--rm", "-i",
"-e", "TRANSPORT",
"-e", "SEARXNG_BASE_URL",
"-e", "HOST",
"-e", "PORT",
"mcp/searxng-mcp"],
"env": {
"TRANSPORT": "stdio",
"SEARXNG_BASE_URL": "http://localhost:32768",
"HOST": "0.0.0.0",
"PORT": "32769"
}
}
}
}
Smithery com Configuração Stdio
Se você instalou o servidor usando o Smithery, pode configurar seu cliente MCP para executá-lo via stdio. O Smithery fornece um comando exec para executar executáveis de dentro do ambiente da ferramenta.
{
"mcpServers": {
"searxng": {
"command": "smithery",
"args": ["exec", "@The-AI-Workshops/searxng-mcp-server", "--", "python", "server.py"],
// "cwd" (current working directory) might be automatically handled by Smithery.
// If server.py is in a subdirectory, adjust the python script path e.g., "python", "path/to/server.py"
"env": {
"TRANSPORT": "stdio",
"SEARXNG_BASE_URL": "http://localhost:32768", // Adjust as needed
"HOST": "0.0.0.0", // Typically not used by stdio server itself but good to set
"PORT": "32769" // Typically not used by stdio server itself
}
}
}
}
Alternativamente, você pode encontrar o caminho para o interpretador Python no ambiente virtual criado pelo Smithery (por exemplo, ~/.smithery/venvs/The-AI-Workshops_searxng-mcp-server/bin/python) e o caminho para server.py (por exemplo, ~/.smithery/tools/The-AI-Workshops/searxng-mcp-server/server.py) e usá-los diretamente:
{
"mcpServers": {
"searxng": {
"command": "~/.smithery/venvs/The-AI-Workshops_searxng-mcp-server/bin/python",
"args": ["~/.smithery/tools/The-AI-Workshops/searxng-mcp-server/server.py"],
// "cwd" should be the directory containing server.py if not using absolute paths for args,
// or if server.py relies on relative paths for other files (like .env).
// Example: "cwd": "~/.smithery/tools/The-AI-Workshops/searxng-mcp-server",
"env": {
"TRANSPORT": "stdio",
"SEARXNG_BASE_URL": "http://localhost:32768"
// Other necessary env vars from .env can be duplicated here
}
}
}
}
Certifique-se de que os caminhos estejam corretos para sua instalação do Smithery e que o arquivo .env seja detectável por server.py (geralmente definindo cwd para o diretório raiz do servidor ou garantindo que server.py o carregue de um caminho absoluto se o Smithery definir um).
Construindo Seu Próprio Servidor
Este modelo fornece uma base para construir servidores MCP mais complexos. Para construir o seu próprio:
- Adicione suas próprias ferramentas criando métodos com o decorador
@mcp.tool() - Crie sua própria função de ciclo de vida para adicionar suas próprias dependências (clientes, conexões de banco de dados, etc.)
- Adicione também prompts e recursos com
@mcp.resource()e@mcp.prompt()
Parâmetros da Ferramenta de Busca SearXNG
A ferramenta search suporta os seguintes parâmetros (todos opcionais, exceto q):
q(obrigatório): A string de consulta de busca.categories: Lista separada por vírgulas de categorias de busca ativas.engines: Lista separada por vírgulas de mecanismos de busca ativos.language: Código do idioma.page: Número da página de busca (padrão: 1).time_range: [dia, mês, ano]format: [json, csv, rss] (padrão: json)results_on_new_tab: [0, 1]image_proxy: [true, false]autocomplete: [google, dbpedia, duckduckgo, mwmbl, startpage, wikipedia, stract, swisscows, qwant]safesearch: [0, 1, 2]theme: [simple]enabled_plugins: Lista de plugins habilitados.disabled_plugins: Lista de plugins desabilitados.enabled_engines: Lista de mecanismos habilitados.disabled_engines: Lista de mecanismos desabilitados.
Veja a documentação do SearXNG para mais detalhes.
Licença
Licença MIT