Connect Thea to your AI
One MCP endpoint, read-only, no account and no API key.
https://thealibrary.org/mcp
What is Thea
Thea is a knowledge library that people fill in and AI models read. It holds things models usually don't know yet: local shops, recent news, people and works that are too small or too new for training data.
- About 1.07 million places in Korea from public data (business licences, the tourism API), plus people, works, organizations and dated records (releases, events, closures).
- Other countries have their regions set up and a small but growing number of places.
- Every entry carries its source and shows who wrote it (a person, public data, wiki data or an AI) and how many people checked it.
Most of Thea is Korean for now. If a search outside Korea comes back empty, that is expected.
Connect
Endpoint: https://thealibrary.org/mcp · MCP Streamable HTTP (stateless JSON, POST only) · protocol versions 2025-06-18, 2025-03-26 and 2024-11-05.
Auth: none. No login, no key. The server hands out an Mcp-Session-Id on initialize; rate limits are counted per session.
Claude Code
claude mcp add --transport http thea https://thealibrary.org/mcp
Clients that use mcp.json (LM Studio, Cursor and others)
{
"mcpServers": {
"thea": {
"url": "https://thealibrary.org/mcp"
}
}
}Clients that only speak stdio
Bridge with mcp-remote (needs Node.js):
npx mcp-remote https://thealibrary.org/mcp
In an mcp.json that wants a command:
{
"mcpServers": {
"thea": {
"command": "npx",
"args": ["mcp-remote", "https://thealibrary.org/mcp"]
}
}
}No MCP at all
The same tools as OpenAI-style function definitions, for llama.cpp, Ollama, vLLM or any API that takes tools. Each tool maps to a plain GET endpoint (/ai/search, /ai/find, /ai/planet/{id}):
https://thealibrary.org/ai/tools.json
Step-by-step guides for Claude, ChatGPT, Gemini and local apps (in five languages): thealibrary.org/connect. A short guide for crawlers: /llms.txt.
Tools
All tools are read-only. Every response includes the license line to cite.
thea_search
Use it when you know a name. Returns one trimmed entry (about 1,000 characters) plus candidates when several entries share the name. Actor 박지훈 and a singer whose real name is 박지훈 are different entries; check candidates.
| Parameter | What it does |
|---|---|
| q | The name. Korean things are stored under their Korean name, foreign ones under their English name (IU → 아이유, Seogwipo → 서귀포시, 도쿄 → Tokyo). If nothing matches, try once more in the other language. |
| mode | quick (default) or detail for long sections and full candidate fields. |
| limit | Default 5, max 20. |
thea_search {"q": "여주온천"}thea_find
Use it when you don't know a name and want a list by area, kind or condition ("Chinese restaurants in Semarang", "girl groups in Korea", "news since August"). Filters multiply: more filters, narrower list. Up to 20 results.
| Parameter | What it does |
|---|---|
| inside | Only entries inside this area. Best is an id from thea_search; a name works if it is the official full name (제주특별자치도, 서귀포시). Abroad, ISO 3166-2 codes work (AE-DU, JP-13). If the question names an area, always pass it. |
| country | Country name, e.g. Japan or 일본. Pass it first for places outside Korea. |
| category | One or more of 인물, 단체, 작품, 장소, 사건, 제품, 게임 (person, organization, work, place, event, product, game). |
| subject | Subject code; a parent code includes its children (1200 travel includes 1210 lodging). Restaurants are 920. subjects.json |
| cuisine | Restaurant type: an exact value (cuisines.json), an everyday word that covers several types (중식, Chinese, 카페 — cuisine_groups.json), or a dish not in either table (갈비찜, 콩국수), which searches the menus. |
| field | key=value, several joined with ;, value * means "filled in". e.g. group_type=걸그룹, nationality=Japan, featured_in=*. All keys and values: filters.json |
| name | Only entries whose name, other name or English name contains these words. |
| since | Dated records on or after YYYY-MM-DD. Past ones come in results (newest first), scheduled ones in upcoming. |
| sort | rating puts entries people liked first. |
| pet | y for pet-friendly places, n for not. |
| limit | Default and max 20. |
thea_find {"country": "Indonesia", "inside": "Semarang", "cuisine": "Chinese"}thea_entry
Use it to open one entry in full with an id from the other two tools: every field, every connection (each with an id), and its dated records (satellites), newest first. To go deeper, call it again with an id from the result.
| Parameter | What it does |
|---|---|
| planet_id | Entry id (an exact name also works, but names can be shared). |
| satellites | How many dated records to list. Default 5, max 50. |
| satellite_type | Only one kind of record, e.g. 음반 (albums), 수상 (awards). |
thea_entry {"planet_id": "e2131374-33f6-4036-9354-8a6ee2540d33"}search / fetch
The generic pair that ChatGPT connectors and deep research call. search takes a name or "region + kind" (여주 온천, 명일동 중식) and returns ids; fetch returns that entry as Markdown. If your client can use the three tools above, prefer them: they give same-name candidates, filters, ratings and views.
search {"query": "명일동 중식"}Reference files
- /static/subjects.json — subject codes (Korean and English names)
- /static/cuisines.json — all restaurant types
- /static/cuisine_groups.json — everyday words that cover several types
- /static/filters.json — field filter keys and values per category
Try these
- "Is there a Chinese restaurant in Semarang?" — thea_find with country, inside and cuisine returns Ming Yuan, with its menu.
- "Is Yeoju Hot Spring open?" — thea_search finds 여주온천 and its closure: temporarily closed since 2026-06-17 after a fire.
- "Which Japanese people are active in Korea?" — thea_find with
category=인물, country=Korea, field=nationality=Japanlists idols and actors such as 사나, 미나, 카즈하.
Rate limits
Thea runs on a free-tier server, so it limits bursts rather than blocking. Limits are per MCP session (per IP for direct HTTP calls).
| What | Limit |
|---|---|
| thea_search, thea_find, search | 10 calls in a burst, then 1 call every 6 seconds (about 600 an hour) |
| thea_entry, fetch | 100 different entries an hour (opening the same entry again doesn't count) |
Over the limit you get HTTP 429 with Retry-After. Over MCP, if the wait is 8 seconds or less the server waits and then answers, so the model doesn't see an error. One IP running many sessions is capped at 10 times the per-session limit.
License
The database is CC BY 4.0. Values that come from a named source (public data, a wiki, a news article) also keep that source's terms; each entry lists its sources.
When you use Thea in an answer or a product, add one line:
Source: [Thea](https://thealibrary.org) · CC BY 4.0
Feedback
Questions, bugs, missing places or wrong data: email [email protected]. If you know places in your area, you can add them yourself at thealibrary.org.