Ever notice your favorite neural net, while you're napping, lives in a glass jar? It knows a mountain of text, but reaching the internet, finding an image, opening a page and actually reading it - it has no hands for that. It needs someone to walk it over there, and that someone is you.
Okay, I'm exaggerating. But only a little. LLMs really can do two things I'd describe as "speaking a foreign language" and "pretending to remember things." Everything else gets handed to them from outside - and very often it's not you and not me doing it, but a pile of little servers on the side.
For that, thank the standard called MCP - Model Context Protocol.
All of this is the project mcp-retrieval, which is what this post is about.
Why another MCP server, there are already a million
Let me be straight. There are already more MCP servers in the world than stars on GitHub, and another one pops up every day. I know exactly what it looks like when yet another guy says "look, I wrote a server" - because I am that guy.
But there's a huge difference between a server written for the sake of a server and a server that has a reason to exist. Usually the reason is purely technical: "it's faster here," "the code is cleaner." Mine turned out to be embarrassingly mundane - I just didn't want to pay for a thing that should work on its own. The longer I thought about it, the more it got under my skin. Not marketing, not some urge to "feed the ecosystem" - just a small injustice I stubbornly wanted to fix with my own hands.
It started as an internal tool
It didn't start with "I'll make money off this," and not even with "I'll teach everyone to write clean code" (though, to be fair, my perfectionism never let go of me, and I did polish the code - so bring on the PRs). It started with me not wanting to pay search providers.
I needed web search for an LLM - text in markdown, images, pages. Sounds routine. But to let a model simply search the web, they wanted me to pay for Tavily or Brave. Fine, if the price were honest. But Tavily alone has a pile of hidden multipliers, and at scale that turns into a serious dent in your wallet. And for what, I ask you? For something that's basically what free DuckDuckGo already does. That feeling of being fleeced on flat ground - that's what got me going.
At first I just wrapped it into a library for myself. Used it - then shelved it, because at that point I didn't need it anymore. The tool sat around for two months doing nothing, and I almost forgot about it.
Then the question came back: why should I keep code that solves a problem if it's just sitting there as dead weight? I spent time, effort, and nerves on it. Throwing it away - feels bad. Selling it - feels wrong, because it wasn't made for that, and carrying that kind of load would be a pain anyway. And then a weird thought, at first glance, hit me: just give it away. Not for stars and glory, but so it doesn't rot - and so whoever is too lazy, or doesn't want, to pay doesn't have to reinvent it all from scratch.
Three tools, zero keys
So I dug out that dusty library, wrapped it in an MCP server, and put it on GitHub. Like, why should a project just sit there gathering dust when I spent that much time imitating a browser - rotating TLS fingerprints, browser headers, and rotating residential proxies.
Three tools, no more. Text search, image search, and page extraction. Pages come back as clean Markdown - no junk, no ads. No API keys; the server talks straight to DuckDuckGo and Bing. The project is fully open source and lives on GitHub. Even if you find it useless - it was useful to me, and it's doing its job right now, so I decided to share it.
If you're interested
Here's the landing page and the repo - docs and examples are all there.
If it came in handy, or you just like the idea - drop a star ⭐. It'd mean a lot to me, and it genuinely helps the project.
And yeah, don't come at me about having a free Vercel domain - I don't care, buying a domain is way too much hassle.
Good luck!


Top comments (0)