A bridge server for connecting to a SearXNG metasearch engine instance.
This is a Model Context Protocol (MCP) server that acts as a bridge to a SearXNG instance. It allows compatible clients to perform searches using a configured SearXNG instance via MCP tools.
Set up a SearXNG instance:
# Using Docker
docker run -d -p 8888:8080 --name searxng searxng/searxng
Install and run the MCP bridge:
# Run directly with npx
npx @nitish-raj/searxng-mcp-bridge
Configure in your MCP settings file:
Add to your MCP settings file (e.g., ~/.vscode-server/data/User/globalStorage/rooveterinaryinc.roo-cline/settings/mcp_settings.json
):
{
"mcpServers": {
"searxng-bridge": {
"command": "npx",
"args": ["@nitish-raj/searxng-mcp-bridge"],
"env": {
"SEARXNG_INSTANCE_URL": "YOUR_SEARXNG_INSTANCE_URL" # Replace with your instance URL (e.g., http://localhost:8888 or a public one)
},
"disabled": false
}
}
}
search
.To install searxng-mcp-bridge for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @nitish-raj/searxng-mcp-bridge --client claude
Install the package globally:
npm install -g @nitish-raj/searxng-mcp-bridge
Add to MCP Settings:
Add the following configuration to your MCP settings file (e.g., ~/.vscode-server/data/User/globalStorage/rooveterinaryinc.roo-cline/settings/mcp_settings.json
):
{
"mcpServers": {
"searxng-bridge": {
"command": "mcp-searxng-bridge",
"env": {
"SEARXNG_INSTANCE_URL": "YOUR_SEARXNG_INSTANCE_URL" # Replace with your instance URL (e.g., http://localhost:8888 or a public one)
},
"disabled": false,
"alwaysAllow": ["search"] // Optional: Allow search without confirmation
}
}
}
SEARXNG_INSTANCE_URL
environment variable in the env
section to the URL of the SearXNG instance the bridge should connect to (e.g., http://localhost:8888
or a public instance like https://searx.space/
). This variable is mandatory.Clone the repository:
git clone https://github.com/nitish-raj/searxng-mcp-bridge.git
cd searxng-mcp-bridge
npm install
npm run build
Add to MCP Settings: Add the following configuration to your MCP settings file:
{
"mcpServers": {
"searxng-bridge": {
"command": "node",
"args": [
"/path/to/searxng-mcp-bridge/build/index.js" // Adjust path if needed
],
"env": {
"SEARXNG_INSTANCE_URL": "YOUR_SEARXNG_INSTANCE_URL" # Replace with your instance URL (e.g., http://localhost:8888 or a public one)
},
"disabled": false
}
}
}
/path/to/searxng-mcp-bridge/build/index.js
with the actual path to the built server file.Restart MCP Client: Restart the application using MCP (e.g., VS Code with the Roo extension) to load the new server configuration.
You need a running SearXNG instance to use this bridge. Here are some options:
Using Docker (Recommended):
docker run -d -p 8888:8080 --name searxng searxng/searxng
Using Docker Compose:
Create a docker-compose.yml
file:
version: '3'
services:
searxng:
image: searxng/searxng
ports:
- "8888:8080"
restart: unless-stopped
Then run:
docker-compose up -d
For more advanced configuration options, refer to the SearXNG documentation.
Once configured, you can instruct your MCP client (like Roo) to use the tool:
"Use the searxng-bridge search tool to search for 'your query'"
npm install
: Install dependencies.npm run build
: Compile TypeScript to JavaScript.npm run watch
: Watch for changes and rebuild automatically.npm run inspector
: Run the MCP inspector to test the server.This project uses GitHub Actions for continuous integration and deployment:
Push the code to GitHub:
# Initialize git if not already done
git init
git add .
git commit -m "Initial commit"
# Add your GitHub repository as remote
git remote add origin https://github.com/nitish-raj/searxng-mcp-bridge.git
git push -u origin main
Set up npm access:
# Login to npm (you'll need an npm account)
npm login
# Generate an access token for GitHub Actions
# Go to npmjs.com → User Settings → Access Tokens → Generate New Token
Add the npm token to GitHub repository secrets:
NPM_TOKEN
This project uses GitHub Actions for automated and manual releases.
When a pull request from Renovate is merged, the release.yml
workflow is automatically triggered. This workflow handles the following:
minor
version of the package.CHANGELOG.md
with the latest changes.This process is fully automated and requires no manual intervention for dependency updates.
To create a manual release, follow these steps:
Update the version locally:
Use the npm version
command to bump the package version and create a corresponding git tag. This will also update the CHANGELOG.md
file.
# For a patch release (e.g., 0.1.0 -> 0.1.1)
npm version patch
# For a minor release (e.g., 0.1.0 -> 0.2.0)
npm version minor
# For a major release (e.g., 0.1.0 -> 1.0.0)
npm version major
Push the changes to GitHub:
Push the commit and the newly created tag to the main
branch.
git push && git push --tags
Trigger the release workflow:
Pushing the tag will trigger the release.yml
workflow, which will build the package, publish it to npm, and create a GitHub release.
Contributions are welcome!
Please see the GitHub repository for contribution guidelines.
Search YouTube videos and retrieve their transcripts using the YouTube API.
Search and retrieve cryptographic research papers from the IACR Cryptology ePrint Archive.
Search for messages and files within a Slack workspace using the Slack API.
Search and retrieve content from the Unsloth AI documentation.
A server for Google search and webpage content extraction, built on Cloudflare Workers with OAuth support.
A server for RAG-based document search and management using Qdrant vector database with Ollama or OpenAI embeddings.
Provides threat intelligence queries for IPs, domains, files, URLs, and vulnerabilities using the ThreatBook API.
Access Google Search results using the Serper API.
Convert city names and locations into latitude and longitude coordinates using the free OpenStreetMap Nominatim API. No API key is required.
Provides web search capabilities using a self-hosted SearxNG instance, allowing AI assistants to search the web.