greenfish-webtools-mcp
A lightweight MCP server that gives AI assistants real-time web search and URL reading — no API keys required.
README
<a id="readme-top"></a>
[![Forks][forks-shield]][forks-url] [![Stargazers][stars-shield]][stars-url] [![Issues][issues-shield]][issues-url] [![GPL License][license-shield]][license-url]
<!-- PROJECT TITLE --> <br /> <div align="center"> <h3 align="center">greenfish-webtools-mcp</h3>
<p align="center"> A lightweight MCP server that gives AI assistants real-time web search and URL reading — no API keys required. <br /> <a href="DumbGreenFish/GreenFishWebtoolsMCP/issues/new?labels=bug">Report Bug</a> · <a href="DumbGreenFish/GreenFishWebtoolsMCP/issues/new?labels=enhancement">Request Feature</a> </p> </div>
<!-- TABLE OF CONTENTS --> <details> <summary>Table of Contents</summary> <ol> <li><a href="#about-the-project">About The Project</a></li> <li><a href="#built-with">Built With</a></li> <li><a href="#getting-started">Getting Started</a></li> <li><a href="#usage">Usage</a></li> <li><a href="#roadmap">Roadmap</a></li> <li><a href="#contributing">Contributing</a></li> <li><a href="#license">License</a></li> <li><a href="#contact">Contact</a></li> <li><a href="#acknowledgments">Acknowledgments</a></li> </ol> </details>
<!-- ABOUT THE PROJECT -->
About The Project
greenfish-webtools-mcp is a Model Context Protocol server that equips AI assistants with live web access. It exposes two tools: web search and URL content extraction.
The key design choice is that this server does not talk to any proprietary search API. Instead, it delegates all search work to your own SearXNG instance — a self-hosted, actively maintained meta-search engine that aggregates results from multiple search providers and exposes a stable JSON API that won't change or be deprecated without notice. You spin up SearXNG, this server connects to it and passes results straight to the model.
greenfish_websearch sends a query to SearXNG and returns a ranked, deduplicated list of results. greenfish_fetch_url fetches a specific page and returns its main readable content, stripped of navigation, ads, and boilerplate using trafilatura.
<p align="right">(<a href="#readme-top">back to top</a>)</p>
<!-- BUILT WITH -->
Built With
[![Python][Python-shield]][Python-url] [![SearXNG][SearXNG-shield]][SearXNG-url] [![uv][uv-shield]][uv-url]
<p align="right">(<a href="#readme-top">back to top</a>)</p>
<!-- GETTING STARTED -->
Getting Started
Before anything else, make sure you have Python 3.10+ and uv installed. You will also need a running SearXNG instance with JSON output enabled. The quickest way to get one is via Docker:
docker run -d --name searxng -p 1818:8080 searxng/searxng
After that, open the SearXNG admin interface, go to Preferences → General, and enable json as an output format. Alternatively, find settings.yml in the SearXNG container and add json to the search.formats list, then restart the container.
Now clone this repository and install the Python dependencies:
git clone https://github.com/DumbGreenFish/GreenFishWebtoolsMCP.git
cd greenfish-webtools-mcp
uv sync
That's it. No API keys, no accounts.
<p align="right">(<a href="#readme-top">back to top</a>)</p>
<!-- USAGE EXAMPLES -->
Usage
Register the server in your MCP client configuration file. The example below works for Claude Desktop and most other clients that accept the standard JSON format:
{
"mcpServers": {
"greenfish-webtools": {
"command": "uv",
"args": [
"--directory",
"/path/to/greenfish-webtools-mcp",
"run",
"app.py"
],
"env": {
"SEARXNG_URL": "http://127.0.0.1:1818/search"
}
}
}
}
Replace /path/to/greenfish-webtools-mcp with the actual path to the cloned repository on your machine, and adjust SEARXNG_URL to match the address where your SearXNG instance is running. Once the MCP server starts, the AI assistant will have access to greenfish_websearch and greenfish_fetch_url automatically.
<p align="right">(<a href="#readme-top">back to top</a>)</p>
<!-- ROADMAP -->
Roadmap
- [ ] Support for additional SearXNG parameters (time range, search categories)
- [ ] Configurable result ranking and deduplication strategy
- [ ] Multi-language documentation
See the open issues for a full list of proposed features and known issues.
<p align="right">(<a href="#readme-top">back to top</a>)</p>
<!-- CONTRIBUTING -->
Contributing
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also open an issue with the tag "enhancement". Don't forget to give the project a star — thanks!
<p align="right">(<a href="#readme-top">back to top</a>)</p>
<!-- LICENSE -->
License
Distributed under the GNU GPLv3 License. See LICENSE for more information.
<p align="right">(<a href="#readme-top">back to top</a>)</p>
<!-- CONTACT -->
Contact
Project Link: https://github.com/https://github.com/DumbGreenFish/GreenFishWebtoolsMCP
<p align="right">(<a href="#readme-top">back to top</a>)</p>
<!-- ACKNOWLEDGMENTS -->
Acknowledgments
This project would not exist without SearXNG, which does all the actual search work. Thanks also to the authors of FastMCP, trafilatura, and httpx.
<p align="right">(<a href="#readme-top">back to top</a>)</p>
<!-- MARKDOWN LINKS & IMAGES --> [forks-shield]: https://img.shields.io/github/forks/DumbGreenFish/GreenFishWebtoolsMCP.svg?style=for-the-badge [forks-url]: https://github.com/DumbGreenFish/GreenFishWebtoolsMCP/network/members [stars-shield]: https://img.shields.io/github/stars/DumbGreenFish/GreenFishWebtoolsMCP.svg?style=for-the-badge [stars-url]: https://github.com/DumbGreenFish/GreenFishWebtoolsMCP/stargazers [issues-shield]: https://img.shields.io/github/issues/DumbGreenFish/GreenFishWebtoolsMCP.svg?style=for-the-badge [issues-url]: https://github.com/DumbGreenFish/GreenFishWebtoolsMCP/issues [license-shield]: https://img.shields.io/badge/License-GPL%20v3-blue.svg?style=for-the-badge [license-url]: https://www.gnu.org/licenses/gpl-3.0 [Python-shield]: https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54 [Python-url]: https://www.python.org/ [SearXNG-shield]: https://img.shields.io/badge/SearXNG-3050B0?style=for-the-badge [SearXNG-url]: https://github.com/searxng/searxng [uv-shield]: https://img.shields.io/badge/uv-DE5FE9?style=for-the-badge [uv-url]: https://github.com/astral-sh/uv
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.