Basic MCP Tools
Basic MCP Tools
A small, self-hosted MCP (Model Context Protocol) server that gives your LLM a few essential tools: private web search, web page fetching, current weather, and the current date/time. It ships with its own SearXNG instance via Docker Compose, so search stays local and doesn't require any API keys.
Tools
Tool | Description |
| Search the web through the bundled SearXNG instance. Returns titles, URLs, and snippets. |
| Fetch a URL and return its cleaned, readable text (scripts, nav, footers, etc. stripped out). |
| Get the current date ( |
| Get the current local time with timezone. |
| Get the current weather for a town or city via Open-Meteo (no API key needed). |
Quick start (Docker Compose)
Requires Docker with the Compose plugin.
git clone https://github.com/Tyguy047/Basic-MCP-Tools.git
cd Basic-MCP-Tools
docker compose up -d --buildThis starts two containers:
searxng — the search backend. It is only reachable from inside the Compose network (not published to your host).
basic-mcp-tools — the MCP server, listening on port 8080 using the streamable HTTP transport.
The MCP endpoint is:
http://localhost:8080/mcpConnect a client
Any MCP client that supports streamable HTTP will work. For example, with Claude Code:
claude mcp add --transport http basic-tools http://localhost:8080/mcpOr in a JSON-based client config:
{
"mcpServers": {
"basic-tools": {
"type": "http",
"url": "http://localhost:8080/mcp"
}
}
}Configuration
Timezone —
get_date/get_timeuse the container's timezone. SetTZindocker-compose.yml(defaults toAmerica/New_York).SearXNG — settings live in
searxng/settings.yml. The one requirement for thesearchtool is that thejsonoutput format stays enabled. The container generates a randomSEARXNG_SECRETon each start.Search backend location — the MCP server finds SearXNG through the
SEARXNG_IPandSEARXNG_PORTenvironment variables (set indocker-compose.yml).Weather units —
get_weatherreports imperial units (°F, mph, in) by default. SetWEATHER_UNITStometricindocker-compose.ymlfor °C, km/h, and mm.
Running without Docker
You can run the server directly if you point it at an existing SearXNG instance (one with the json format enabled):
pip install -r requirements.txt
export SEARXNG_IP=<searxng-host>
export SEARXNG_PORT=<searxng-port>
python main.pyThe server listens on 0.0.0.0:8080. Python 3.14 is used in the Docker image; other recent versions should work too.
Project layout
main.py # FastMCP server; registers the tools
functions/
searxng.py # search — queries SearXNG's JSON API
fetch.py # fetch_page — httpx + BeautifulSoup text extraction
date.py # get_date
time.py # get_time
weather.py # get_weather — Open-Meteo geocoding + forecast
searxng/settings.yml # SearXNG config (enables JSON output)
docker-compose.yml # searxng + mcp-tools services
Dockerfile # Python 3.14 slim image for the MCP serverNotes
The server is unauthenticated and intended for local or trusted-network use. Don't expose port 8080 to the public internet as-is.
Adding a new tool is two steps: write a function in
functions/(its docstring becomes the tool description) and register it inmain.pywithmcp.tool()(your_function).
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/Tyguy047/Basic-MCP-Tools'
If you have feedback or need assistance with the MCP directory API, please join our Discord server