searxng-mcp-server
Provides integration with SearXNG search engine by connecting to a SearXNG instance specified via the --url parameter
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@searxng-mcp-serversearch for latest AI developments in machine learning"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
SearXNG MCP Server
A Model Control Protocol (MCP) server for SearXNG, allowing AI assistants to search the web through a SearXNG instance.
Features
Search the web using SearXNG via simple API calls
Get information about available search engines
Configure search parameters including categories, languages, and safe search settings
Related MCP server: Notes MCP Server
Usage in MCP Configuration
"searxng-mcp-server": {
"command": "uv",
"args": [
"run",
"https://raw.githubusercontent.com/maccam912/searxng-mcp-server/refs/heads/main/server.py",
"--url",
"https://searxng.example.com"
]
}Docker Usage
You can run this MCP server using Docker:
# Build the Docker image
docker build -t searxng-mcp-server .
# Run the container
# Replace https://searxng.example.com with your actual SearXNG instance URL
docker run -p 8080:8080 searxng-mcp-serverAPI Tools
Search
def search(query: str, categories: Optional[str] = None, engines: Optional[str] = None,
language: Optional[str] = None, page: int = 1, time_range: Optional[str] = None,
safe_search: int = 1)Get Available Engines
def get_available_engines()Local Development
Requirements:
Python 3.11+
uv (Python package manager)
# Install dependencies
uv sync
# Run the server
uv run server.py --url https://searxng.example.comAvailable Tools
2 toolsget_available_enginesB
Get information about available search engines
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full disclosure burden. While 'Get' implies read-only behavior, description omits details on caching, authentication requirements, whether results are user-specific or global, and what the output structure contains (though output schema exists).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single 6-word sentence with no redundancy. Efficiently front-loaded but arguably too minimal given lack of annotations and contextual guidelines that could have been included without sacrificing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple discovery tool with existing output schema (which handles return value documentation). However, misses opportunity to explain relationship to 'search' sibling or define what makes an engine 'available'. Minimal viable description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero input parameters with 100% schema coverage (empty object). Per rubric, baseline score is 4 for zero-parameter tools since there are no semantics to clarify beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verb ('Get') and resource ('available search engines'), distinguishing it from sibling 'search' (which performs searches vs. this which discovers them). However, 'information' is vague regarding what specific data is returned (names, capabilities, endpoints?).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this tool versus the 'search' sibling, nor prerequisites for calling it. Description states what it does but not why or when an agent should invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchC
Search using SearXNG
Args:
query: The search query
categories: Optional comma-separated list of categories
engines: Optional comma-separated list of engines
language: Optional language code
page: Page number (default: 1)
time_range: Optional time range (day, month, year)
safe_search: Safe search level (0, 1, 2)
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| categories | No | ||
| engines | No | ||
| language | No | ||
| page | No | ||
| time_range | No | ||
| safe_search | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Fails to disclose what SearXNG aggregation entails, return value structure (despite output schema existing, behavioral traits like rate limits or latency are absent), or mutation effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with purpose front-loaded in the first line followed by clear Args section. No redundant prose. The Args list is necessary given zero schema coverage, so it earns its place effectively.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite 7 parameters and 0% schema coverage, description lacks crucial domain context. Misses the critical relationship to `get_available_engines` for valid engine names, doesn't explain SearXNG's meta-search nature, and omits behavioral constraints. Output schema presence excuses return value documentation, but operational context is insufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the Args section compensates by documenting all 7 parameters. Adds valuable structural hints ('comma-separated', specific enum values for time_range/day|month|year and safe_search/0,1,2) not present in raw schema. However, lacks semantic detail on valid category strings or that engines must come from sibling tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verb (Search) and resource (SearXNG), clearly identifying this as a web search operation. Distinguishes implicitly from sibling `get_available_engines` (this performs search vs listing engines), though explicit differentiation would strengthen it further.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use versus alternatives, prerequisites, or when not to use. Critically misses the relationship to `get_available_engines` for populating the `engines` parameter, leaving agents to guess valid values.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
The two tools have clearly distinct purposes: get_available_engines retrieves metadata about search engines, while search performs actual searches. There is no overlap or ambiguity between these functions.
Both tools follow a consistent verb_noun naming pattern (get_available_engines and search). The naming is straightforward and predictable across the toolset.
With only two tools, the server feels under-scoped for a search functionality domain. While the core search operation is present, typical search-related operations like managing preferences, saving searches, or advanced filtering are missing, making the toolset feel thin.
The toolset is severely incomplete for a search server. It lacks essential operations such as configuring search settings, handling search history, or integrating with other data sources. The surface is minimal and does not cover the expected lifecycle of search interactions.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Markdown-based note-taking with a hosted MCP server. Your notes serve you and your AI.
Google Keep-style notes app with an MCP server for AI agents to read/write notes.
An MCP server that used to create notes
Personal knowledge base MCP server with semantic search, auto-categorization, metadata extraction
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceThis TypeScript-based MCP server enables users to manage and summarize text notes, providing tools for note creation and summarization prompts.4,78510MIT
- FlicenseNot gradedqualityDmaintenanceA TypeScript-based MCP server that enables users to manage text notes with features like note creation and summary generation using a Model Context Protocol.1
- AlicenseBqualityDmaintenanceThis TypeScript-based MCP server allows users to manage and interact with a note system through Model Context Protocol, enabling note creation and summarization with URIs and metadata.1MIT
- AlicenseAqualityFmaintenanceA TypeScript-based MCP server that implements a simple notes system, allowing users to create, access, and generate summaries of text notes via URIs and tools.12188MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/maccam912/searxng-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server