TinySearch docs

Self-hosted web research for MCP agents.

TinySearch searches the web, crawls relevant pages, chunks content, reranks results, and returns a compact source-grounded prompt instead of raw webpages.

Fast path

Install, connect, research.

Use TinySearch when an MCP client needs web research but you do not want to dump full pages into the model context.

MCP endpointhttp://localhost:8000/mcp
01

Docker install

Start TinySearch with SearXNG.

The fastest path is Docker Compose. It runs TinySearch with a bundled SearXNG service and exposes Streamable HTTP.

docker compose -f "https://github.com/MarcellM01/TinySearch.git#main:compose.quickstart.yaml" up -d
02

Client setup

Connect your MCP client.

Point your client at the Streamable HTTP server.

{
  "mcpServers": {
    "tinysearch": {
      "url": "http://localhost:8000/mcp"
    }
  }
}
03

Optional source run

Run from source when you need stdio.

Use this path for local development or stdio-only clients.

git clone https://github.com/MarcellM01/TinySearch
cd TinySearch
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
{
  "mcpServers": {
    "tinysearch": {
      "command": "/absolute/path/to/TinySearch/.venv/bin/python",
      "args": ["/absolute/path/to/TinySearch/servers/mcp_server.py"]
    }
  }
}
04

Shutdown

Stop the stack later.

Bring the Docker services down when you are done testing.

docker compose -f "https://github.com/MarcellM01/TinySearch.git#main:compose.quickstart.yaml" down

Reference guide

Use these when a setup step needs more detail.

The main path above gets TinySearch running. The sections below explain what each part means, how to adjust it, and where to look if something fails.

Supports Step 01

Docker setup

Docker pulls marcellm01/tinysearch:latest automatically if the image is not already local. The HTTP MCP endpoint is /mcp; SSE is available at/mcp/sse.

After install

Configuration

TinySearch reads research settings from configs/research_config.json. Common settings include the search backend, SearXNG URL, fallback behavior, embedding model, chunking, source quotas, and pipeline timeout.

Search backend

SearXNG backend

TinySearch defaults to a SearXNG-compatible JSON endpoint. The bundled Compose files enable a local SearXNG service so the stack works out of the box. If you point TinySearch at your own SearXNG instance, ensure JSON output is enabled.

Supports Step 02

Tools

research(query)

Use this when the agent needs to discover relevant URLs. TinySearch searches, ranks, crawls, chunks, reranks, and returns compact evidence.

scrape_url(url, query)

Use this when the user already provided a URL or when research found a page that should be inspected directly.

get_current_datetime()

Use this before time-sensitive research so the agent has current date context.

First test

Examples

research("What changed in the latest TinySearch release?")
scrape_url("https://github.com/MarcellM01/TinySearch", "What MCP tools does it expose?")
get_current_datetime()

If stuck

Troubleshooting

  • If the MCP client cannot connect, verify Docker is running and the endpoint is http://localhost:8000/mcp.
  • If SearXNG returns HTML, enable JSON output in the SearXNG configuration.
  • If research is slow on first run, allow time for the embedding model to download.
  • If a site is unsafe or unsupported, TinySearch may reject the URL before crawling.

View TinySearch on GitHub