Skip to main content

MCP Ferris Search

A blazing-fast MCP (Model Context Protocol) server for multi-engine web search, written in Python.

This is a Python implementation inspired by the original ferris-search Rust project.

Features

  • Multi-engine fan-out — search across multiple engines simultaneously with a single call
  • 9 search engines — Bing, DuckDuckGo, Brave, Baidu, CSDN, Juejin, Zhihu, GitHub, GitHub Code
  • 7 MCP toolsweb_search + 6 content fetchers
  • No API keys required for most engines (Brave requires API key)
  • Proxy support — HTTP/SOCKS5 proxy via environment variables

Installation

From PyPI (recommended)

pip install mcp-ferris-search

Using uvx

uvx mcp-ferris-search

From source

git clone https://github.com/your-username/mcp-ferris-search.git
cd mcp-ferris-search
pip install -e .

Configuration

Claude Desktop / Cursor

Add to your MCP settings:

{
  "mcpServers": {
    "ferris-search": {
      "command": "uvx",
      "args": ["mcp-ferris-search"],
      "env": {
        "DEFAULT_SEARCH_ENGINE": "bing"
      }
    }
  }
}

Environment Variables

Variable Default Description
DEFAULT_SEARCH_ENGINE bing Default engine when engines param is omitted
ALLOWED_SEARCH_ENGINES all engines Comma-separated allow-list
BRAVE_API_KEY Required for Brave search
GITHUB_TOKEN Optional, raises GitHub API rate limit
USE_PROXY false Enable HTTP/SOCKS5 proxy
PROXY_URL http://127.0.0.1:7890 Proxy address

MCP Tools

web_search

Search the web using one or more engines simultaneously.

{
  "query": "rust async runtime",
  "engines": ["bing", "duckduckgo"],
  "limit": 10
}
Parameter Type Default Description
query string required Search query
engines string[] server default Engines to search
limit number 10 Max results per engine (1–50)

Supported engines: bing, duckduckgo, brave, baidu, csdn, juejin, zhihu, github, github_code

fetch_web_content

Fetch and extract text content from any public URL.

Parameter Type Default Description
url string required Public HTTP/HTTPS URL
max_chars number 30000 Max characters to return

fetch_github_readme

Fetch the README from a GitHub repository.

Parameter Type Description
url string GitHub repository URL

fetch_csdn_article / fetch_juejin_article / fetch_zhihu_article

Domain-specific fetchers with better content extraction.

Tool URL Constraint
fetch_csdn_article must contain csdn.net
fetch_juejin_article must contain juejin.cn and /post/
fetch_zhihu_article must contain zhihu.com

Development

# Install development dependencies
pip install -e ".[dev]"

# Run tests
pytest

# Run with MCP Inspector for debugging
mcp dev src/mcp_ferris_search/server.py

Publishing to PyPI

# Build
python -m build

# Upload
python -m twine upload dist/*

Deploying to ModelScope MCP Hub

  1. Publish to PyPI first
  2. Go to https://modelscope.cn/mcp/servers/create?template=customize
  3. Fill in the form:
    • Name: Ferris Search
    • Source: PyPI package mcp-ferris-search
    • Hosting Type: 可托管部署 (Hosted)
    • Command: uvx mcp-ferris-search

License

Apache-2.0

Acknowledgements

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcp_ferris_search-0.1.0.tar.gz (6.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcp_ferris_search-0.1.0-py3-none-any.whl (7.8 kB view details)

Uploaded Python 3

File details

Details for the file mcp_ferris_search-0.1.0.tar.gz.

File metadata

  • Download URL: mcp_ferris_search-0.1.0.tar.gz
  • Upload date:
  • Size: 6.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.2

File hashes

Hashes for mcp_ferris_search-0.1.0.tar.gz
Algorithm Hash digest
SHA256 08dd98058aaa03e1ffb0d100d6aa298ed5dd823899c172078db8262b6d3ffa39
MD5 0b58893a9fae2ae480d72719e81fcbc1
BLAKE2b-256 772bf1282119857244f1fb1c27c994bd64003e61eba3d83aa50763568b98a15a

See more details on using hashes here.

File details

Details for the file mcp_ferris_search-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for mcp_ferris_search-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c87934c71699fa6da72e906c79bd255661af15bceefa987793cb78525927dc6b
MD5 a0f8746d180f48363f93241e277f2a74
BLAKE2b-256 3d19257533effd57067a09feee5fbde314b8a519e330f663f5a60da2e8616145

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page