Wuxing Search MCP
The Wuxing Search MCP server provides unlimited, privacy-focused web search by aggregating results from 100+ search engines (Google, Bing, DuckDuckGo, Wikipedia, GitHub, Stack Overflow, etc.) via a self-hosted SearXNG instance, with no API rate limits, quotas, or costs.
Key capabilities:
web_search— Perform web searches with full control over:query: any keyword or phraseresults: number of results (1–100, default 20)category:general,images,videos,news,it,science,files,social,map, ormusiclanguage: e.g.,en,zh,alltime_range:day,week,month,year, ornonesafesearch:0(off),1(moderate), or2(strict)Returns structured results with title, URL, content snippet, source engine, and relevance score
get_server_info— Check server status and version details (no parameters required)
Additional highlights:
Seamless MCP integration with Claude Code, Cursor, Windsurf, and other AI IDEs
Self-hosted via Docker with no tracking or logging — all data stays on your machine
Cross-platform support (Windows, macOS, Linux)
Provides the ability to query Brave Search for web content through the aggregated search service.
Allows performing web searches using DuckDuckGo results via the privacy-focused meta-search aggregator.
Facilitates searching for code repositories and developer-focused content on GitHub.
Enables searching Google for web results, news, and images through the meta-search aggregation interface.
Interfaces with a SearXNG instance to provide unlimited, privacy-friendly meta-search capabilities by aggregating results from over 100 different search engines.
Allows searching for programming solutions and technical discussions on Stack Overflow.
Enables searching and retrieving articles and encyclopedic information from Wikipedia.
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., "@Wuxing Search MCPsearch for the latest news about OpenAI's o3 model from this week"
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.
What is Wuxing Search MCP?
Wuxing Search MCP is a powerful, unlimited search server built on SearXNG. It integrates seamlessly with Claude Code via the Model Context Protocol, providing free and unlimited search capabilities by aggregating results from 100+ search engines.
Why choose Wuxing Search?
Traditional search APIs have limitations:
❌ Rate limits and quotas
❌ Expensive API costs
❌ Single-source results
Wuxing Search solves all these problems:
✅ Completely Free - Self-hosted SearXNG, no API costs
✅ Unlimited Search - Rate limiters disabled, supports high-frequency searching
✅ Multi-source Aggregation - 100+ engines including Google, Bing, DuckDuckGo, Brave, etc.
✅ Privacy-Friendly - No tracking, no logging
✅ MCP Integration - Perfectly adapted for Claude Code workflows
Related MCP server: SearXNG MCP Server
Architecture Overview
┌─────────────┐ ┌──────────────┐ ┌─────────────┐ ┌─────────────┐
│ 你 │ ───▶ │ Claude Code │ ───▶ │ Wuxing │ ───▶ │ SearXNG │
│ (用户) │ │ (MCP 客户端) │ │ Search MCP │ │ (Docker) │
└─────────────┘ └──────────────┘ │ (Node.js) │ │ (Python) │
└──────────────┘ └─────────────┘
│
▼
┌───────────────────────────┐
│ 搜索引擎聚合 (13+) │
│ 通用: Google, Bing... │
│ 代码: GitHub, HuggingFace│
│ 问答: StackOverflow │
│ 包: npm, PyPI │
│ 学术: arXiv │
│ 社区: HN, Reddit │
│ 以及 100+ 更多... │
└───────────────────────────┘Features
✨ Current Features
🔍 Unlimited Web Search
No API rate limits or quotas
Supports high-frequency searching
Configurable result count (1-100)
🌐 Multi-source Aggregation
General: Google, Bing, DuckDuckGo, Baidu
Code: GitHub, Hugging Face, GitLab
Q&A: Stack Overflow
Packages: npm, PyPI, crates.io, Docker Hub
Academic: arXiv, Google Scholar, Semantic Scholar, PubMed
Community: HackerNews, Reddit, Mastodon
Documentation: MDN
News: Google News
Supports 100+ search engines
📊 Advanced Search Options
Time range filtering (day, week, month, year)
Category filtering (general, images, videos, news, IT, science, files, social)
Language filtering
Safe search levels
🔌 MCP Integration
Seamless integration with Claude Code
stdio communication (MCP does not require network ports)
JSON-RPC 2.0 protocol
🐳 Simple Deployment
Docker-based SearXNG deployment
One-click installation
Cross-platform support (Windows, macOS, Linux)
🔒 Privacy First
No tracking, no logging
Self-hosted, data never leaves your machine
Anonymous searching via SearXNG
Quick Start
Get started in 4 simple steps:
Prerequisites
1. Clone the project
git clone https://github.com/MaesHughes/wuxing-search-mcp.git
cd wuxing-search-mcp2. Install dependencies
npm install3. Start SearXNG
Method A: Using Docker command (Recommended)
docker run -d \
--name wuxing-searxng \
--restart unless-stopped \
-p 18080:8080 \
-v "$(pwd)/searxng/config:/etc/searxng/" \
-v "$(pwd)/searxng/data:/var/cache/searxng/" \
searxng/searxng:latestMethod B: Using Docker Compose
docker-compose up -d4. Configure Claude Code
Locate your Claude Code configuration file:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS / Linux:
~/.config/Claude/claude_desktop_config.jsonStep 1: Get your project path
Run the following command in the project directory to get the absolute path:
Windows (PowerShell):
Resolve-Path src\index.jsWindows (Git Bash / Bash):
pwd -W && echo "/src/index.js"
# 或手动拼接:$(pwd -W)/src/index.jsmacOS / Linux:
pwd && echo "/src/index.js"
# 或手动拼接:$(pwd)/src/index.jsStep 2: Add configuration
Add the following configuration to your config file, ⚠️ Be sure to replace YOUR_FULL_PATH_HERE with the actual path obtained in the previous step:
Windows Configuration Example
{
"mcpServers": {
"wuxing-search": {
"type": "stdio",
"command": "cmd",
"args": [
"/c",
"node",
"D:\\\\path\\\\to\\\\wuxing-search-mcp\\\\src\\\\index.js"
],
"env": {
"SEARXNG_URL": "http://localhost:18080",
"MAX_RESULTS": "20",
"TIMEOUT": "30000"
}
}
}
}macOS / Linux Configuration Example
{
"mcpServers": {
"wuxing-search": {
"type": "stdio",
"command": "node",
"args": [
"/home/username/wuxing-search-mcp/src/index.js"
],
"env": {
"SEARXNG_URL": "http://localhost:18080",
"MAX_RESULTS": "20",
"TIMEOUT": "30000"
}
}
}
}Configuration Notes:
Config Item | Windows | macOS/Linux | Description |
|
|
| Communication protocol type |
|
|
| Windows uses cmd wrapper |
|
|
| Path must be absolute |
| SearXNG service URL | - | Default |
| Default result count | - | Default 20, range 1-100 |
| Request timeout (ms) | - | Default 30000 |
⚠️ Important Note:
Backslashes in Windows paths must be escaped as double backslashes
\\(JSON format requirement)Alternatively, use forward slashes
/(Windows supports this too)Paths must be absolute; relative paths will not work
You must fully restart Claude Code for configuration changes to take effect
5. Restart Claude Code
Fully exit and reopen Claude Code.
Usage
Basic Search
Type directly in Claude Code:
请搜索最新的 AI 编程工具Advanced Search Parameters
You can also specify parameters:
请搜索最近一周的 React 教程,返回 10 条结果Available Tools
1. web_search
Perform a web search and return results.
Parameter | Description | Required | Default |
| Search keywords | Yes | - |
| Number of results (1-100) | No | 20 |
| Search category | No | general |
| Language code | No | all |
| Time range filter | No | none |
| Safe search level (0-2) | No | 1 |
Category Options:
general- General searchimages- Image searchvideos- Video searchnews- News searchit- IT technologyscience- Sciencefiles- Filessocial- Social media
Time Range Options:
day- Past 24 hoursweek- Past weekmonth- Past monthyear- Past yearnone- No time filter
2. get_server_info
Get search server status information. No parameters.
Usage Examples
Example 1: Search for open source projects
请搜索 GitHub 上热门的 AI agent 项目Example 2: Search for technical issues
在 Stack Overflow 上搜索 MCP 连接错误的解决方案Example 3: Search for academic papers
请搜索 arXiv 上关于多智能体协作的最新论文Example 4: Search for Python libraries
在 PyPI 上搜索 LangChain agents 相关的包Example 5: Search for developer discussions
请搜索 HackerNews 上关于 AI 编程的讨论Example 6: Query server status
查询搜索服务器状态Management Commands
NPM Commands
# 查看 SearXNG 状态
npm run status:searxng
# 查看 SearXNG 日志
npm run logs:searxng
# 重启 SearXNG
npm run restart:searxng
# 停止 SearXNG
npm run stop:searxng
# 启动 SearXNG
npm run start:searxng
# 测试搜索服务
npm run test:searxngDocker Commands
# 查看容器状态
docker ps | grep wuxing-searxng
# 查看实时日志
docker logs -f wuxing-searxng
# 重启服务
docker restart wuxing-searxng
# 停止服务
docker stop wuxing-searxng
# 启动服务
docker start wuxing-searxng
# 删除并重建
docker stop wuxing-searxng && docker rm wuxing-searxng
# 然后重新运行启动命令Configuration Options
Configure the MCP Server via environment variables:
Variable | Description | Default |
| SearXNG service URL | |
| Default result count | 20 |
| Request timeout (ms) | 30000 |
Add these variables to the env field in your Claude Code configuration to customize behavior.
Troubleshooting
Issue 1: Search tool not showing or throwing errors
Checklist:
✅ Is the SearXNG container running?
docker ps | grep wuxing-searxng✅ Is the SearXNG service working properly?
curl http://localhost:18080✅ Is the config file path correct (using absolute path)?
✅ Is Node.js version >= 18?
node --version✅ Has Claude Code been restarted?
Issue 2: SearXNG container fails to start
Check:
Is port 18080 occupied?
# Windows netstat -ano | findstr :18080 # Linux/Mac lsof -ti:18080Is the Docker service running?
Check container logs:
docker logs wuxing-searxng
Solution:
# 删除旧容器并重新创建
docker stop wuxing-searxng && docker rm wuxing-searxng
# 然后重新运行启动命令Issue 3: Search returns connection error
Possible cause: SearXNG service has not fully started
Solution:
# 等待 5-10 秒后重试
# 或重启 SearXNG
docker restart wuxing-searxngIssue 4: Results contain outdated content
Reason: Time filtering depends on search engine support
Solution:
Use a shorter time range (
dayinstead ofweek)Add explicit time keywords to the query (e.g.,
January 2025)Combine usage:
请搜索 2025年1月的 React 新特性
Technical Architecture
MCP Server (Node.js)
File:
src/index.jsDependencies: @modelcontextprotocol/sdk, axios
Communication: stdio (Standard Input/Output)
Role: Implements MCP protocol, forwards requests to SearXNG
SearXNG (Python/Docker)
Image: searxng/searxng:latest
Port: 18080 (host) → 8080 (container)
Config: searxng/config/settings.yml
Data: searxng/data/ (cache)
Role: Aggregates 100+ search engines
Data Flow
用户输入
→ Claude Code
→ MCP Server (stdio)
→ HTTP 请求到 SearXNG
→ 并发请求到各搜索引擎
→ 聚合结果
→ 返回给用户Project Structure
wuxing-search-mcp/
├── src/ # MCP Server 源码
│ └── index.js # MCP Server 主实现
├── searxng/ # SearXNG 配置
│ ├── config/ # SearXNG settings.yml
│ └── data/ # SearXNG 缓存(自动创建)
├── assets/ # 文档图片
│ └── banner.png # 项目横幅
├── package.json # NPM 包配置
├── docker-compose.yml # Docker Compose 配置
├── install.sh # Linux/Mac 安装脚本
├── install.ps1 # Windows 安装脚本
├── README.md # 英文版
├── README.zh-CN.md # 中文版(本文件)
└── INSTALL.md # 详细安装指南FAQ
Q: Why is Docker needed?
A: SearXNG is a Python project that depends on 50+ Python packages. Docker provides:
Avoids complex manual dependency installation
Environment isolation
Simplifies deployment and updates
Q: Can I use it without Docker?
A: Theoretically yes, but not recommended. You would need to:
Install Python 3.14
Manually install 50+ Python dependencies
Configure the Python environment
The Docker approach is simpler and more reliable.
Q: Are there search limits?
A: No! This is the core advantage of this project:
Completely self-hosted
No API call limits
No request rate limits
Q: Which search engines are supported?
A: SearXNG supports 245 search engines, with 89 enabled by default.
Currently enabled 21 engines:
Category | Search Engine |
General Search | Google, Bing, DuckDuckGo, Baidu |
Code Repos | GitHub, Hugging Face, GitLab |
Tech Q&A | Stack Overflow |
Package Managers | npm, PyPI, crates.io, Docker Hub |
Academic Papers | arXiv, Google Scholar, Semantic Scholar, PubMed |
Developer Community | HackerNews, Reddit, Mastodon |
Dev Docs | MDN Web Docs |
News Sources | Google News |
Other available engines (can be enabled in config):
Code: Bitbucket, Codeberg, Gitea, SourceHut
Package Management: RubyGems, Go, Hex, Packagist
Social: Lemmy
Video: YouTube, Vimeo, Bilibili
And more...
Q: How is the search quality?
A: Depends on the enabled search engines. The default configuration already includes mainstream search engines, providing good quality. If adjustments are needed, you can edit searxng/config/settings.yml.
Contributing
Community contributions are welcome! You can help us by:
Fork this repository
Create a feature branch (
git checkout -b feature/amazing-feature)Commit your changes (
git commit -m 'Add amazing feature')Push to the branch (
git push origin feature/amazing-feature)Open a Pull Request
How to contribute
Improve search engine configuration
Add new features to the MCP Server
Report bugs and issues
Suggest new features
Improve documentation
Share your feedback
Resources
📚 Documentation
Installation Guide - Detailed installation instructions
SearXNG Documentation - Official SearXNG documentation
MCP Specification - Model Context Protocol
🌐 Official Website
Wuxing Codes Blog - Latest updates and tutorials
💬 Community
GitHub Issues - Report issues
GitHub Discussions - Ask questions
License
MIT License - See the LICENSE file for details.
Acknowledgments
Built on the open-source project SearXNG
Created for the Claude Code community
Part of the Wuxing Codes ecosystem
Made with ❤️ by the Wuxing Team
⭐ Star us on GitHub — it really helps!
Available Tools
2 toolsget_server_infoB
获取搜索服务器信息,包括服务状态、版本等。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool retrieves information (implying read-only behavior) and lists examples of what information is included (service status, version). However, it doesn't disclose important behavioral traits like whether this requires authentication, has rate limits, returns structured or unstructured data, or has any side effects. For a tool with zero annotation coverage, this leaves significant gaps in understanding how the tool behaves.
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?
The description is a single, efficient sentence that states the purpose and provides examples of what information is included. There's no wasted language or unnecessary elaboration. While it could be slightly more structured by separating purpose from examples, it's appropriately sized for a simple tool.
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?
Given the tool's simplicity (no parameters, no output schema, no annotations), the description provides adequate coverage of what the tool does. It explains the purpose and gives examples of returned information. However, without annotations or output schema, it should ideally provide more behavioral context (like authentication requirements or response format) to be fully complete. The description is minimally viable but has clear gaps in behavioral transparency.
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?
The tool has zero parameters, and schema description coverage is 100% (empty schema is fully documented). With no parameters to explain, the description appropriately doesn't discuss parameters. It focuses on what information is retrieved rather than how to call the tool, which is correct for a parameterless tool. The baseline for zero parameters with high schema coverage is 4.
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?
The description clearly states the tool's purpose as '获取搜索服务器信息,包括服务状态、版本等' (Get search server information, including service status, version, etc.), which specifies the verb ('获取' - get) and resource ('搜索服务器信息' - search server information). It distinguishes from the sibling tool 'web_search' by focusing on server metadata rather than performing searches. However, it doesn't explicitly differentiate from potential other server-related tools beyond the single sibling.
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?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention the sibling tool 'web_search' or explain that this is for server diagnostics while 'web_search' is for content retrieval. There's no context about prerequisites, timing, or use cases beyond the basic purpose statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web_searchA
执行网页搜索,返回搜索结果列表。
用途:
搜索技术文档、教程、博客等内容
用于课程开发时收集参考资料
支持任意关键词搜索
参数说明:
query: 搜索关键词(必需)
max_results: 返回结果数量,默认 20,最大 100
category: 搜索类别,可选值:general, images, videos, files, it, map, music, science, social, news
language: 搜索语言,默认 zh-CN
time_range: 时间范围,可选值:day, week, month, year, none(默认)
safesearch: 安全搜索级别,可选值:0, 1, 2(默认 1)
返回格式:
title: 结果标题
url: 结果链接
content: 结果摘要
engine: 搜索引擎来源
score: 相关性评分
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | 搜索关键词 | |
| max_results | No | 返回结果数量(1-100) | |
| category | No | 搜索类别 | general |
| language | No | 搜索语言代码(如:zh、en、all) | all |
| time_range | No | 时间范围 | none |
| safesearch | No | 安全搜索级别(0=关闭, 1=中等, 2=严格) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the return format (title, url, content, engine, score) which is valuable, but doesn't mention important behavioral aspects like rate limits, authentication requirements, pagination behavior, or whether this is a read-only operation. The description adequately covers what the tool does but lacks operational constraints.
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?
The description is well-structured with clear sections (用途, 参数说明, 返回格式) and every sentence earns its place. It's appropriately sized for a 6-parameter tool with no annotations, providing necessary information without redundancy. The information is front-loaded with the core purpose stated first.
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?
For a search tool with 6 parameters, no annotations, and no output schema, the description does a good job covering the essentials. It explains the tool's purpose, provides usage examples, documents all parameters with their semantics, and describes the return format. The main gap is the lack of behavioral constraints (rate limits, authentication, etc.) that would be important for production use.
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 100% schema description coverage, the baseline is 3. The description adds meaningful context by explaining the purpose of each parameter beyond what's in the schema (e.g., '用于课程开发时收集参考资料' provides context for the query parameter, and the category parameter explanation gives practical use cases). However, it doesn't provide examples or edge case guidance that would elevate it to a 5.
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?
The description clearly states the tool's purpose with a specific verb ('执行网页搜索' - perform web search) and resource ('搜索结果列表' - search results list). It distinguishes this general web search tool from the only sibling tool (get_server_info) by focusing on external content discovery rather than server information retrieval.
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?
The description provides clear usage contexts with three specific examples (searching technical documentation/tutorials/blogs, collecting reference materials for course development, and supporting arbitrary keyword searches). However, it doesn't explicitly state when NOT to use this tool or mention alternatives for different types of searches beyond the category parameter.
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 completely distinct purposes: get_server_info retrieves server metadata, while web_search performs actual web searches. There is no overlap or ambiguity between them, making it easy for an agent to select the correct tool based on the task.
Both tools follow a consistent verb_noun naming pattern (get_server_info and web_search). The naming is clear, predictable, and adheres to the same convention throughout, with no mixing of styles or deviations.
With only 2 tools, the server feels under-scoped for its stated purpose of supporting web search for tasks like collecting references for course development. While the tools are functional, the count is too low to provide comprehensive coverage, lacking operations like advanced search filtering or result management.
The server covers basic search functionality with web_search and server status with get_server_info, but there are notable gaps. For example, it lacks tools for saving, organizing, or analyzing search results, which would be useful for the described use cases like course development. The surface is functional but incomplete for sustained workflows.
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
Web search for AI agents — one tool across 6 engines, routed to the cheapest + cached.
The best web search for your AI Agent
Agent-native search engine with live web research optimized for AI agents.
Multi-engine search for AI agents. Trust scoring, local corpus, MCP-native. Self-hostable, BYOK.
Related MCP Servers
- AlicenseAqualityDmaintenanceProvides privacy-focused web search capabilities through SearXNG metasearch engine, enabling web, image, video, and news searches without tracking. Includes comprehensive research tools that aggregate and analyze results from multiple search engines.34MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to perform privacy-respecting web searches through SearXNG, with support for multiple search engines, categories, and advanced filtering options.25
- AlicenseAqualityDmaintenanceEnables web search, image search, and news search through a self-hosted SearXNG instance. Provides privacy-focused meta-search capabilities aggregating results from multiple search engines.31MIT
- AlicenseNot gradedqualityDmaintenanceA free and unlimited web search server that enables AI models to search, crawl, and research web content using DuckDuckGo without requiring API keys. It features parallel crawling and a smart ranking system to prioritize the most relevant information for complex queries.1794MIT
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/MaesHughes/wuxing-search-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server