AI 클라이언트가 Semantic Data Charter 모델과 관리되는 데이터 레코드를 검색, 설명 및 읽을 수 있도록 지원합니다.
다른 이름 SemanticDataCharter/sdcreader
- 스타
- 0
- Tools
- —
- 다운로드, 30일
- 1,683
- 최신 버전
- 4.4.1
- 마지막 커밋
- 2026년 11월 10일
- 라이선스
- Apache-2.0
sdcreader MCP란?
sdcreader은(는) MCP server입니다. AI 클라이언트가 Semantic Data Charter 모델과 관리되는 데이터 레코드를 검색, 설명 및 읽을 수 있도록 지원합니다.
프로젝트 README에서 생성된 요약
sdcreader MCP server 정보
sdcreader는 AI 어시스턴트가 Semantic Data Charter 모델과 관리되는 데이터 레코드를 검색하고 해석할 수 있게 해줍니다. 클라이언트는 게시된 모델을 탐색하고 구성 요소를 검토하며, 값을 정의된 구성 요소와 결합하여 특정 데이터 레코드를 읽을 수 있습니다. 이 서버는 프로젝션 작성자가 데이터를 CDIF 또는 DCAT-US와 같은 표준에 매핑할 때 사용하는 것과 동일한 구조적 증거를 제공하는 읽기 전용 인터페이스 역할을 합니다.
사용자는 uvx를 통해 stdio 방식으로 서버를 실행할 수 있으며, 호스트를 지정하여 sovereign SDCStudio 공개 카탈로그에 연결하도록 설정할 수 있습니다. 운영을 위해 계정이나 SDK가 필요하지 않습니다. 서버는 카탈로그 검색을 위한 find_models, 메타데이터 및 schema URL을 가져오는 describe_model, 문서 순서 경로를 확인하는 list_leaves, 모델에 따라 XML 인스턴스를 파싱하는 read_record와 같은 특정 도구를 제공합니다. 또한 schema bytes가 게시된 SHA-256 해시와 일치하는지 확인하여 데이터 무결성을 보장합니다.
활용 사례
- 1공개 카탈로그 검색텍스트 검색 또는 공개 프로젝트 내 모델 나열을 통해 특정 Semantic Data Charter 모델을 찾습니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
sdcreader MCP 설치 방법
형식 확인: 2026년 11월 10일Cursor에 추가Goose에 추가Claude Code에 sdcreader MCP 설치
$ claude mcp add sdcreader -- uvx sdcreaderCursor에 sdcreader MCP 설치
~/.cursor/mcp.json
{
"mcpServers": {
"sdcreader": {
"command": "uvx",
"args": [
"sdcreader"
]
}
}
}VS Code에 sdcreader MCP 설치
.vscode/mcp.json
{
"servers": {
"sdcreader": {
"type": "stdio",
"command": "uvx",
"args": [
"sdcreader"
]
}
}
}VS Code CLI에 sdcreader MCP 설치
$ code --add-mcp '{"name":"sdcreader","type":"stdio","command":"uvx","args":["sdcreader"]}'Claude Desktop에 sdcreader MCP 설치
claude_desktop_config.json
{
"mcpServers": {
"sdcreader": {
"command": "uvx",
"args": [
"sdcreader"
]
}
}
}Codex에 sdcreader MCP 설치
$ codex mcp add sdcreader -- uvx sdcreaderCodex config.toml에 sdcreader MCP 설치
~/.codex/config.toml
[mcp_servers.sdcreader] command = "uvx" args = ["sdcreader"]
Gemini CLI에 sdcreader MCP 설치
$ gemini mcp add -s user sdcreader uvx -- sdcreaderGemini settings.json에 sdcreader MCP 설치
~/.gemini/settings.json
{
"mcpServers": {
"sdcreader": {
"command": "uvx",
"args": [
"sdcreader"
]
}
}
}자동 검사
2026년 11월 14일에 실행됨전체 보고서 →자동 검사를 통과했습니다. 이는 보안 감사가 아닙니다. 코드를 직접 읽고 서버에 필요한 최소한의 권한만 부여하십시오. 검사 방식
- 소스 저장소 연결 및 접근 가능semanticdatacharter/sdcreader is public and reachablegithub.com/semanticdatacharter/sdcreader ↗통과
- 패키지가 이 저장소를 소스로 명시sdcreader names semanticdatacharter/sdcreader as sourcepypi.org/project/sdcreader/ ↗통과
- 빌드 출처(Sigstore 증명)Sigstore attestation for sdcreaderpypi.org/project/sdcreader/ ↗통과
- 오픈 소스 라이선스 (OSI)Apache-2.0spdx.org/licenses/Apache-2.0.html ↗통과
- 최근 1년 내 커밋 또는 릴리스Last commit or release 2026-11-10github.com/semanticdatacharter/sdcreader ↗통과
- OpenSSF Scorecard검사되지 않음
- 패키지 이름이 인기 패키지와 유사하지 않음No popular package one edit away from sdcreader통과
- 패키지 및 해당 종속성에 중요한 보안 권고 없음7 resolved dependencies checked; no critical advisoryosv.dev ↗통과
- 모델에 대한 숨겨진 지침 없음0 tool descriptions and the README read; no override phrases, credential paths or hidden characters통과
- 파괴적인 도구에 라벨 표시됨검사되지 않음
- 원격 엔드포인트가 MCP 핸드셰이크에 응답검사되지 않음
README
GitHub에서 보기sdcreader
Read a published Semantic Data Charter model's package for projection into other standards.
A projection describes a model's governed data records in another standard's terms: CDIF, DCAT-US 3.0, DCAT-AP
3.0.1, HealthDCAT-AP, and whatever comes next. What every projection describes is the same evidence, the model's
package, and reads it into the same shape. sdcreader is that evidence and that shape, once, with nothing about
any projection in it. The four projection writers (sdc_cdif, sdc_dcat3_us, sdc_dcat3_ap, sdc_healthdcat_ap)
carried it as identical copies until this package.
pip install sdcreader # the reader, with HTTP for fetching from the public catalog (since 4.1.0 no extra is needed)
from sdcreader import fetch_package, load_package, read_model
pkg = load_package("samples/nhanes-participant") # a package on disk
pkg = fetch_package("xy8upneajsb8vdcmnve01g6g", save_to="pkg/") # or from SDCStudio's public catalog, no account
model = read_model(pkg)
pkg.schema_url_pinned # https://sdcstudio.axius-sdc.com/dmlib/dm-xy8u...xsd?sha256=0df4... the exact bytes the records are validated against
model.title, model.leaves # 'NHANES Participant', 153 leaves in document order, each with its path of clusters
model.codes[ct_id] # the enumerated values of a component with the IRI, definition and code the schema annotates them with
model.dc("publisher") # what the modeler wrote, None where SDCStudio's default sits
What a package is
SDCStudio generates a package for every published model and serves it publicly for models in public projects:
GET /api/v1/catalog/dm/<ct>/ |
the catalog record: title, description, project, the artifact list (catalog.json) |
GET /api/v1/catalog/dm/<ct>/<artifact>/ |
a storage pointer, {"download_url": ..., "filename": ..., "storage": "gcs"}, for jsonld, xsd and the rest; the reader follows it |
dm-<ct>.jsonld |
the model and its components: type, label, description, cardinality, constraints (enumerations, units, ranges, patterns), semantic links (dcterms:identifier the library slot, dcterms:source, dcterms:publisher, skos:exactMatch, rdfs:seeAlso, prov:wasRevisionOf), contains |
GET /dmlib/dm-<ct>.xsd |
the schema bytes: the Dublin Core header for the model, and for each enumerated value its definition and the code it is defined by (dm-<ct>.xsd) |
GET /dmlib/dm-<ct>.versions.json |
every published version of the schema by SHA-256, with the current one (versions.json) |
A package directory holds those four files. The reader refuses a directory without the JSON-LD and the schema, a JSON-LD whose identifier is not the directory's model, and a schema whose bytes are not the published current version: a projection cites the schema by URL and SHA-256, so the bytes have to be the ones that URL serves.
Two gaps in the package are on SDCStudio's issue tracker: the JSON-LD metadata drops fields the schema header
carries (#748), and the header omits dc:source (#749). The reader takes the model's Dublin Core from the header,
which is complete.
What the reader gives
ModelPackage: the four files, the SHA-256, the schema URL and its pinned form (?sha256=), the public catalog URL, andcheck().Model:title,description,root(the governed record's cluster),componentsby identifier,leavesin document order (each aLeafwith itscomponent, itspathof clusters and aslugof that path, unique in the record),codes(the enumerated values per component asCode: value, IRI, definition, the code it is defined by),metadata(the JSON-LD's) andheader(the schema's Dublin Core).Model.dc(name): what the modeler wrote, the header first and the JSON-LD second, with SDCStudio's field defaults as unset: "Universal" for coverage, "None" for relation, "SDC Data Model (DM)" for type, blanks. A projection never publishes a default as a fact.contributors,subjects(the semicolon list),rights_urlandrights_statementderive from it.Component:sdc_type,label,description,data_type,constraints,linksby predicate (link(p)for the first),contains,iri.- Constants: the leaf, numeric and quantified types; the predicate IRIs
IDENTIFIER,SOURCE,PUBLISHER,EXACT,CLOSE,SEE_ALSO,HAS_UNIT;DC_DEFAULTS.
Reading a record (4.3.0)
read_record(source, model) reads a Governed Data Record, the XML instance, and joins each value to the component
that defines it. source is the record's bytes, its text or a path; a record of another model is refused
(RecordError), as is anything that is not an sdc4:dm-<ct_id> record.
Record:attributes(instance_id,instance_version,creation_timestamp,current-state, ...),valuesin document order, andexceptional, the values that carry an Exceptional Value.RecordValue: thecomponent, itspathof clusters (root first),instancesparallel to the path (which occurrence each cluster is among the same cluster's repeats under the same parent;instance_keypairs them with the clusters' identifiers, one key per cluster instance), anoccurrenceindex for a component repeated within its cluster instance, itsposition, itselementsas the record holds them (a quantity's units nested:{"xdquantity-value": "1", "xdquantity-units": {"label": "Trade Units", "xdstring-value": "EA"}}), and itscontext(act,vtb,vte,tr,modified,latitude,longitude).ExceptionalValue: the ISO 21090 null flavor (code,name) and itsorigin:sourcewhen it stands in place of the value,recoverywhen sdcvalidator's recovery inserted it beside a value that failed its constraint. Forrecovery,RecordValue.rejectedis that value, kept so a person can see it.
Cluster members sit inside adapter elements that are not components of the model; the reader passes through them. It does not type, validate or interpret values: that is the caller's work (a mapper, an exporter, a checker).
MCP server
sdcreader is also an MCP server, registered as io.github.SemanticDataCharter/sdcreader, so an assistant can read a
published model the way sdcvalidator, sdcgovernance and sdcreceipt let it validate, govern and settle a record.
stdio, no SDK, no account, read-only.
uvx sdcreader # or: sdcreader-mcp, or python -m sdcreader.mcp_server
uvx sdcreader --host https://your-sdcstudio.example # a sovereign SDCStudio's public catalog
| Tool | Does |
|---|---|
find_models |
search the public catalog by text, or list a public project's models by name |
describe_model |
one model: title, project, root record, leaf and component counts by type, Dublin Core with SDCStudio's defaults as null, the schema URL pinned to its SHA-256 |
list_leaves |
the leaves in document order with path, type, constraints, code count and identity links, paged |
list_codes |
one component's enumerated values with IRI, definition and code system |
check_package |
the reader's integrity check on a package directory |
read_record |
a Governed Data Record on disk read against its model: attributes, then each value with its component, path, elements, context and Exceptional Value, paged; the model is the one the record names unless a source is given |
Each model tool takes a ct_id (fetched from the host the server was started with) or a package directory on disk.
No tool takes a URL: the host is fixed at start, so a caller cannot point the server elsewhere. Every tool calls the
same functions as the library; the two interfaces describe one model the same way.
Also listed on mcprush.
Tests
pip install -e ".[dev]"
python -m pytest tests -q # includes one fetch against production
python -m pytest tests -q -m "not network" # offline, as CI runs it
The fixture is the NHANES Participant package of the FAIR Data Demo, the record every projection is proven on.
Versioning
The leading 4 is the SDC4 reference model, as with every Semantic Data Charter package. An addition to what the reader exposes is a minor version, a fix a patch; the major changes only when the reference model does.
License
Apache-2.0 (see LICENSE, NOTICE).
sdcreader MCP 질문
sdcreader MCP를 Claude Code에 추가하려면 어떻게 하나요?
터미널에서 claude mcp add sdcreader -- uvx sdcreader를 실행합니다. 모든 프로젝트에서 사용할 수 있게 하려면 --scope user를 추가합니다.
sdcreader MCP를 Cursor에 추가하려면 어떻게 하나요?
~/.cursor/mcp.json를 열고 mcpServers 아래에 서버를 추가합니다. 위 설치 섹션에 표시된 Cursor 구성을 사용합니다.
모델을 어떻게 검색하나요?
find_models 도구를 사용하여 텍란으로 공개 카탈로그를 검색하거나 프로젝트 내의 모델을 이름으로 나열할 수 있습니다.
서버에서 데이터 레코드를 읽을 수 있나요?
네, read_record 도구를 통해 관리되는 데이터 레코드를 해당 모델과 대조하여 속성, 값, 경로 및 컨텍스트를 읽을 수 있습니다.
서버 사용을 위해 계정이 필요한가요?
아니요, 이 서버는 읽기 전용이며 공개 카탈로그에 접근하기 위해 별도의 계정이 필요하지 않습니다.