sct
A fast, local-first SNOMED CT toolkit written in Rust. Convert a SNOMED CT RF2 release into queryable formats in seconds. Almost ridiculously fast on modern hardware. Free and open source. No Java. No Elasticsearch. Docker optional.
cargo install sct-rs
sct ndjson --rf2 ~/path-to-your-SNOMED-RF2.zip/
sct sqlite --ndjson snomed.ndjson
sct lexical "heart attack"
Full walkthrough · Get your own terminology server · Why build this? · Benchmarks
-
Build the pipeline
Convert an RF2 snapshot into SQLite, Parquet, Markdown, or Arrow embeddings in a single command. 837,930 concepts in under a minute on a laptop.
-
Search
Full-text search via FTS5 for keywords and phrases. Typo-tolerant fuzzy and prefix search via a mmap'd FST index. Semantic vector search via local Ollama embeddings. All offline.
-
Code lists & ECL
Build version-controllable clinical code lists, and populate them with SNOMED CT Expression Constraint Language -
sct codelist add --ecl "<<73211009"expands a query into concrete concepts. -
Connect to AI
A local MCP server exposes SNOMED CT as tools for Claude, Cursor, and any other MCP-compatible client. Ask questions about concepts, hierarchies, and relationships directly in your AI assistant.
-
Run a terminology server
Start a FHIR R4 SNOMED CT terminology server on a clean VPS with Docker Compose. First boot downloads from TRUD, builds
snomed.db, and serves$lookup,$expand,$subsumes, and$translate. -
Explore
A keyboard-driven terminal UI and a local web GUI for browsing concepts, navigating hierarchies, and inspecting relationships - no browser extension or remote service needed.