
SearXNG Bridge
STDIOMCP server providing SearXNG search capabilities through Model Context Protocol tools.
MCP server providing SearXNG search capabilities through Model Context Protocol tools.
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
Validate your package before publishing (optional):
Continuous Integration: Every push to main and pull request is automatically built and tested.
Release Management: When a new version is ready to be released:
# For a patch release (0.1.0 -> 0.1.1) npm run release:patch # For a minor release (0.1.0 -> 0.2.0) npm run release:minor # For a major release (0.1.0 -> 1.0.0) npm run release:major
This will:
package.json
.CHANGELOG.md
based on commit messages since the last tag (using conventional-changelog-cli
). Ensure conventional-changelog-cli
is installed (npm install --save-dev conventional-changelog-cli
) and use Conventional Commits (e.g., feat: ...
, fix: ...
) for meaningful changelog entries.Publishing:
# Push the commit and tag git push && git push --tags
The GitHub Actions workflow will automatically:
The CHANGELOG.md
file is automatically updated by the release script based on conventional commit messages.
Contributions are welcome!
Please see the GitHub repository for contribution guidelines.