Three tools, two ways to connect
Two ways to connect. Over HTTP you need nothing but a URL and a key — no file, no Python, no install. The stdio server remains for clients that want to run it locally.
Remote — one command
The instance speaks MCP over HTTP directly. Point a client at it:
claude mcp add --transport http oort \
https://oort.is-a-good.dev/v1/mcp \
--header "Authorization: Bearer YOUR_KEY"That is the whole setup. The same API key works here, over curl, and in the playground — one credential, one rate limit, one audit trail.
Local — stdio
If you would rather run it yourself, the stdio server is one file that imports nothing outside the standard library — it runs under whatever python3 is on your PATH.
curl -o ~/oort_mcp.py https://oort.is-a-good.dev/assets/oort_mcp.pyThen point your client at that file — the stdio tab above generates the command.
Tools
| Tool | Arguments | Returns |
|---|---|---|
oort_search |
query, max_results, max_tokens, depth, include_domains, exclude_domains, freshness_days |
Ranked passages with offsets and headings |
oort_extract |
urls, max_tokens, extract_fields, screenshot |
Clean markdown per URL, plus structured fields |
oort_map |
url, limit, search, include_subdomains |
Site URLs, from sitemap or the local index |
Environment
| Variable | Default | Notes |
|---|---|---|
OORT_MCP_BASE_URL | http://127.0.0.1:8080 | Must be http or https; anything else is refused at import |
OORT_MCP_API_KEY | — | Required. Keep it in your client config, not in the file |
OORT_MCP_TIMEOUT_S | 60 | Browser rendering and PDFs are legitimately slow |
Design notes
Failures are results
A tool that cannot reach the API returns isError with the reason, not a protocol error — so the model can read what went wrong and adapt instead of stalling.
Scheme is validated
urlopen honours file://. The base URL is checked at import, because a config typo should not become a local file read.
Untrusted content stays fenced
Passages reach the model inside the same delimiters the API returns. The MCP layer does not unwrap them.
No SDK
JSON-RPC over stdio is about 80 lines. Vendoring an SDK to save them would add a dependency that outlives its usefulness.
claude mcp list — Oort should report three tools. If it reports none, check that OORT_MCP_API_KEY is exported in the shell that launched your client.