MCP server¶
The whole encyclopedia — 1,524 prime abstractions, 11,102 domain-specific abstractions, 1,134 solution archetypes and 9,939 mechanisms, with the reference registry, the hierarchy and the diagnostic layer — as a set of tools an AI assistant can call. It runs on your machine, reads a downloaded snapshot, and needs no account, no key and no network once installed.
Current release: server 1.0.6, data edition 2026-10-07 (144 MB download, 526 MB on disk). Downloads are at the end of this page.
What it is¶
The Model Context Protocol is the open standard through which assistants such as Claude Desktop, Claude Code, Cursor, Cline, Zed and Continue call external tools. eoa-mcp is a small Python program that speaks that protocol over standard input and output. Your client starts it, the client's model sees the tools listed below, and when the model decides an encyclopedia lookup would help it calls one — the same way it would read a file or run a search.
It is read-only and local: nothing you ask reaches this site, and the server cannot edit the corpus. The data it reads is a packaged copy of exactly the files published on the Downloads page, laid out the way the build laid them out, with a manifest of SHA-256 checksums that the installer verifies file by file.
Why you would want it¶
The catalog is far too large to hand to a model as context. The server lets a model retrieve — the right entry, the right neighbours, the right evidence — instead of relying on what it half-remembers about a concept. Several of the tools also do things the website cannot:
- Search by structure, not by words.
search_primeembeds the meta-model of a problem — its domain-stripped structural signature — so a question about supply chains can land on an abstraction first named in ecology.search_plain_languageis the everyday-English complement, over the ELI ladder. - Diagnose a problem.
search_archetypes_by_problemandget_archetype_applicabilitywork from a problem statement to the solution archetypes whose trigger conditions it meets, showing which conditions are grounded and which are still missing, rather than returning a keyword match. - Go from problem to implementation.
find_mechanisms_for_problemtraverses problem → archetype → mechanism and returns form-diverse candidates;browse_mechanismspages the whole registry by controlled family. - Turn the bibliography inside out.
get_referencereturns a source's record together with every claim in the encyclopedia that rests on it;get_claim_supportgives the source behind one sentence;find_related_by_sourcesfinds entries that lean on the same literature — a relatedness signal from evidence rather than editorial judgement. - Measure distance.
get_domain_distancescores how far an abstraction is from a target domain, with the nearest and farthest domains for context. - X-ray a document. Give
xray_candidatesa syllabus, a spec or a paper and it maps the abstractions the text is built on;xray_renderdraws the result. - Cite precisely. Every entity response carries its version and content hash, so an assistant can say which edition of an entry it is quoting.
A worked pattern: state the problem in your own words, ask the assistant to strip the domain vocabulary into a meta-model, run search_prime on that, then search_archetypes_by_problem on the original statement, and finally get_references on whatever it proposes. get_reasoning_pipeline_guide describes the full nine-step version of this.
What it provides¶
48 tools, grouped by what they answer. The one-line descriptions are the tools' own docstrings — what the model sees.
Search and lookup¶
Retrieval over the prime and domain-specific catalogs, plus direct fetches by slug or catalog id.
| Tool | What it does |
|---|---|
search_prime |
Semantic search over prime abstractions, queried with the META-MODEL. |
get_prime |
Fetch a prime entry by slug. |
get_primes |
Batch-fetch several primes in one call (each slug alias-resolved). |
list_primes |
Browse the prime corpus by metadata (search_prime is semantic; this is the deterministic filter/census view). |
search_domain_specific |
Semantic search over the DOMAIN-SPECIFIC abstractions corpus — abstractions whose home-domain vocabulary does NOT travel, kept out of the main prime corpus (allais_paradox, allee_effect, accelerator_effect, ...). |
get_domain_specific |
Fetch a domain-specific abstraction by slug (a separate namespace from primes; this tool always selects the domain-specific namespace even if a future homonym exists). |
list_domain_specific |
Browse the domain-specific corpus by metadata. |
search_abstraction |
Search primes and domain-specific abstractions in one typed namespace. |
get_abstraction |
Fetch a prime or domain-specific record through typed graph identity. |
search_by_facets |
Facet-decomposition retrieval for oblique, multi-structure problems. |
get_catalog_entity |
Resolve a stable typed catalog ID such as P-1356 or M-9858. |
Hierarchy and neighbourhood¶
Walks over the typed mixed DAG, the prime-only projection, and the bootstrapped catalog graph.
| Tool | What it does |
|---|---|
get_abstraction_lineage |
Walk the canonical typed mixed DAG from either abstraction kind. |
get_abstraction_siblings |
List typed co-children under each shared mixed-DAG parent. |
get_prime_lineage |
Walk the CURATED prime-only compatibility DAG (dist/prime_dag.jsonl — the hand-adjudicated projection, not the auto-bootstrapped graph). |
get_prime_siblings |
List a prime's siblings in the prime-only DAG, grouped by shared parent. |
get_prime_neighborhood |
Return a prime's automatic compatibility-graph neighborhood. |
find_related_primes |
Find primes related to a given prime via the archetype catalog. |
Solution archetypes and diagnosis¶
From a problem statement to the archetypes whose trigger conditions it meets — the diagnostic applicability graph, with AND/OR condition sets, groundings and residuals kept explicit.
| Tool | What it does |
|---|---|
search_archetypes_by_problem |
Search archetype diagnostic heads and structural conditions. |
get_archetype_applicability |
Return the diagnostic logic that makes an archetype worth examining. |
find_archetypes_for_abstraction |
Find archetypes whose diagnostic logic is grounded by an abstraction. |
find_abstractions_for_archetype |
Return an archetype's trigger and supporting-context abstractions. |
search_archetype |
Semantic search over solution archetypes, queried with the META-MODEL. |
get_archetype |
Fetch the full archetype entry by slug. |
find_archetypes_for_prime |
List historical catalog references from a prime to archetypes. |
Components and mechanisms¶
The implementation layer: recurring components and the mechanism registry, browsable by controlled families and reachable from a problem through its archetypes.
| Tool | What it does |
|---|---|
browse_mechanisms |
Browse mechanisms through the reviewed discovery classifications. |
search_mechanism |
Hybrid semantic/lexical search for concrete implementation forms. |
get_mechanism |
Fetch a mechanism by slug (or case-insensitive name). |
find_mechanisms_for_archetype |
Return enriched mechanisms that implement one solution archetype. |
find_mechanisms_for_problem |
Traverse problem evidence -> candidate archetypes -> mechanisms. |
find_archetypes_using_mechanism |
List archetypes whose mechanisms include the given mechanism name. |
list_mechanisms |
List mechanisms that appear in at least min_archetype_count archetypes. |
list_components |
List components that appear in at least min_archetype_count archetypes. |
find_archetypes_using_component |
List archetypes whose components include the given component name. |
Learnability (the ELI ladder)¶
Reviewed explanations at five registers and a teaching order over the primes; plain-language retrieval is the everyday-English complement to the structural search above.
| Tool | What it does |
|---|---|
search_plain_language |
Find primes from an everyday-English description, not a meta-model. |
get_learning_path |
The reviewed teaching order over primes: where to start, what follows. |
References¶
The reference registry as structured records: a source's record with every claim that rests on it, an entry's bibliography, the claim behind one FACT anchor, and bibliographic coupling between entries.
| Tool | What it does |
|---|---|
get_reference |
A source's record plus every claim in the encyclopedia resting on it. |
get_references |
An entry's bibliography as structured records instead of markdown footnotes. |
get_claim_support |
The source behind one specific FACT anchor, or every anchored claim in an entry. |
search_references |
Search the registry by author, title, container and year, with facets. |
get_canon |
The works the encyclopedia leans on hardest, by distinct citing entries. |
find_shared_sources |
Which sources two entries have in common, rarest first. |
find_related_by_sources |
Entries leaning on the same literature — bibliographic coupling. |
reference_registry_stats |
Registry size and coverage: works, citations, links, and the facet census. |
Domain distance and document x-ray¶
How far an abstraction is from a target domain, and which abstractions a document you supply is built on.
| Tool | What it does |
|---|---|
get_domain_distance |
Quantitative distance from an abstraction's home domain to a target domain. |
xray_candidates |
Scan a document's text for candidate abstractions - the retrieval half of the document x-ray. |
xray_render |
Render adjudicated x-ray hits as an overlay on the Abstraction Atlas - the presentation half of the document x-ray. |
Corpus and reasoning guide¶
What is loaded, how complete every index is, and the 9-step augmented abstract reasoning pipeline as a structured guide.
| Tool | What it does |
|---|---|
corpus_stats |
Return high-level statistics about the loaded corpus. |
get_reasoning_pipeline_guide |
Return the 9-step Augmented Abstract Reasoning Pipeline as a structured guide. |
The data it reads¶
The data bundle is the runtime slice of the Downloads page, in one archive:
- the five catalog exports — primes, domain-specific abstractions, archetypes, components, mechanisms — with the corpus manifest;
- the typed mixed DAG, the prime-only compatibility projection and the bootstrapped catalog graph;
- the diagnostic applicability graph and its search documents;
- the reference registry (works, citations, aliases);
- the learnability export (ELI ladder and teaching order) and the entity version index;
- the controlled family vocabularies the website joins at render time;
- prebuilt embedding indexes for every semantic tool, so nothing is computed on install;
- the Atlas node table used by the document x-ray.
The embedding model is not in the bundle. eoa-mcp fetch-model downloads the quantized ONNX port of BGE-small from its own repository (Qdrant/bge-small-en-v1.5-onnx-Q, Apache-2.0), pinned to a specific revision and verified by hash — it must be the exact model the shipped indexes were built with. Without it the server still runs; semantic tools fall back to lexical matching and say so in every response.
Requirements¶
- Python 3.10 or newer (the installer picks the newest 3.10+ it finds; the server is tested on 3.10, 3.13 and 3.14).
- About 1 GB of disk: 526 MB of data, ~70 MB of model, and the Python dependencies (
mcp,numpy,onnxruntime,tokenizers,PyYAML,jsonschema). - Memory: roughly 0.6 GB after start-up, rising to ~1.3 GB once every index has been touched (the graphs, the reference registry and the applicability layer load on first use).
- No GPU. Embedding runs on the CPU through ONNX Runtime; a query takes a fraction of a second.
- Network only to install and update — the site for the wheel and the data, Hugging Face for the model. Nothing at query time.
- macOS or Linux for the one-line installer; Windows works with the manual steps below.
- An MCP client. Any client that can launch a stdio server works; Claude Desktop and Claude Code are shown.
Install¶
One line (macOS, Linux)¶
The script asks where to install (default ~/.eoa-mcp), creates a virtual environment there, installs the server, downloads and verifies the data bundle and the model, runs eoa-mcp doctor and then the server's own test-suite against what it just installed, and finishes by printing the configuration to paste into your client. Re-run it any time to update. Read it first if you prefer — it is short.
By hand (any OS, including Windows)¶
python3 -m venv ~/.eoa-mcp/venv
~/.eoa-mcp/venv/bin/pip install https://abstractopedia.org/downloads/eoa_mcp-1.0.6-py3-none-any.whl
~/.eoa-mcp/venv/bin/eoa-mcp fetch-data # data bundle → ~/.eoa-mcp/data, verified
~/.eoa-mcp/venv/bin/eoa-mcp fetch-model # embedding model from Hugging Face, verified
~/.eoa-mcp/venv/bin/eoa-mcp doctor # what is installed, what is missing
~/.eoa-mcp/venv/bin/eoa-mcp self-test # the packaged test-suite against your install
On Windows use py -3 -m venv %USERPROFILE%\.eoa-mcp\venv and the Scripts\ directory in place of bin/.
Connect a client¶
eoa-mcp config claude-desktop and eoa-mcp config claude-code print these with your real paths filled in.
Claude Desktop — add to claude_desktop_config.json (Settings → Developer → Edit Config):
{
"mcpServers": {
"encyclopedia-of-abstractions": {
"command": "/Users/you/.eoa-mcp/venv/bin/eoa-mcp",
"args": [
"serve"
],
"env": {
"EOA_DATA_DIR": "/Users/you/.eoa-mcp/data"
}
}
}
}
Claude Code:
claude mcp add encyclopedia-of-abstractions -s user \
-e EOA_DATA_DIR=$HOME/.eoa-mcp/data -- $HOME/.eoa-mcp/venv/bin/eoa-mcp serve
Any other client: a stdio server with command ~/.eoa-mcp/venv/bin/eoa-mcp, argument serve, and EOA_DATA_DIR in its environment. Restart the client; the tools appear in its tool list. corpus_stats is a good first call.
Updating¶
Data and server are versioned separately. eoa-mcp fetch-data reads eoa-mcp-latest.json, downloads the current edition if yours is older, verifies every file against the bundle's manifest, and swaps it into place atomically — your previous edition is kept beside it as data.previous until the next update. A new server version is a pip install --upgrade of the wheel, or simply re-running the installer. A data edition that needs a newer server says so before downloading anything.
Restart your client (or reconnect the server) after an update: the server loads its data at start-up.
Limits¶
- Read-only, single-user, local. There are no editing tools and no hosted endpoint.
- Responses are budgeted for a model's context, not for people:
get_primeat full verbosity averages ~20 KB, so the tools default to summaries and the assistant should ask forfulldeliberately. - Semantic search represents negation poorly ("when everyone copies" still surfaces No Copies Allowed);
search_plain_languagereports this limit rather than hiding it. - Coverage is honest, not complete:
corpus_statsreports every index's coverage of the loaded corpus, and a missing optional artifact degrades the tool that needs it with a message saying what to rebuild. - The counts on this page are those of the packaged edition; the live site may be ahead of it between releases.
Downloads¶
| File | Size | SHA-256 |
|---|---|---|
eoa_mcp-1.0.6-py3-none-any.whl — the server |
200 KB | 562e32eebec4777e123e517524775457eb5c27cf7b21cbadef817e9fbaa02c0d |
eoa-mcp-data-2026-10-07.tar.gz — data edition 2026-10-07, 44 files |
144 MB | ad38894b7cef09ff619b4904e2f2c658afab27d1829b8e60f198bc81baa77685 |
eoa-mcp-latest.json — release pointer |
— | see the Downloads checksum manifest |
eoa-mcp-install.sh — installer |
— | see the Downloads checksum manifest |
The same files are listed, with their checksums, under MCP server on the Downloads page.