Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Rudof MCP Server
A Model Context Protocol server for RDF validation, querying, and data transformation
Overview
rudof_mcp exposes the Rudof library to any MCP-compatible AI client. It supports Shape Expressions (ShEx), SHACL, SPARQL, and multiple RDF serialization formats, making it straightforward to integrate semantic web operations into AI workflows.
What You Can Do
- Load RDF data — From URLs, local files, raw text, or SPARQL endpoints
- Validate — Against ShEx and SHACL schemas
- Query — Execute SPARQL SELECT, CONSTRUCT, ASK, and DESCRIBE
- Inspect — Explore outgoing/incoming arcs for any RDF node
- Visualize — Generate PlantUML diagrams and SVG/PNG images
- Export — Serialize data to Turtle, N-Triples, RDF/XML, JSON-LD, and more
Quick Start
Claude Desktop (Stdio)
In Claude Desktop’s configuration file, add the following entry:
⚠️ Visualization support: The
export_imagetool require PlantUML. To enable them:
- Download plantuml.jar and place it at a fixed path (e.g.
C:\ProgramData\PlantUML\plantuml.jar).- Set the
PLANTUMLenvironment variable in theenvblock above to point to that path.
HTTP Client
To run the MCP server with streamable-http transport on port 8080 under the route rdf, allowing connections from localhost and a local network:
💡 Docker: The server persists loaded RDF data across ephemeral container restarts by saving state to
/app/state/data.json. Mount a Docker volume at/app/state/to preserve data between runs. Override the path with theRUDOF_MCP_STATE_PATHenvironment variable.
Transport Types
Stdio
- For CLI tools, IDE extensions (VS Code, IntelliJ, etc.), and Docker
- The MCP client spawns the server as a subprocess
- Communication via stdin/stdout using JSON-RPC
Streamable HTTP
- For web clients and multi-client deployments
- JSON-RPC over HTTP POST with Server-Sent Events (SSE) for streaming
- Session management via the
MCP-Session-Idheader - Origin header validation and configurable IP allowlist for security
- CORS support via
tower-http
MCP Capabilities
| Capability | Description |
|---|---|
| Tools | 10 tools for validation, querying, and data operations |
| Prompts | Guided templates for common validation workflows |
| Resources | Current RDF data exposed in multiple formats |
| Resource Templates | URI template for accessing RDF data in any supported format |
| Logging | MCP notifications/message with RFC 5424 level filtering |
| Completions | Argument completions for prompts and resources |
Tools
Data Management
| Tool | Description |
|---|---|
load_rdf_data_from_sources |
Load RDF data from URLs, files, raw text, or SPARQL endpoints |
export_rdf_data |
Serialize RDF data to Turtle, N-Triples, RDF/XML, JSON-LD, etc. |
export_plantuml |
Generate a PlantUML diagram of the RDF graph |
export_image |
Generate an SVG or PNG visualization |
Node Inspection
| Tool | Description |
|---|---|
node_info |
Show outgoing and incoming arcs for an RDF node |
SPARQL
| Tool | Description |
|---|---|
execute_sparql_query |
Execute SELECT, CONSTRUCT, ASK, or DESCRIBE queries |
ShEx
| Tool | Description |
|---|---|
validate_shex |
Validate the loaded RDF data against a ShEx schema |
check_shex |
Check whether a ShEx schema is syntactically well-formed |
show_shex |
Parse and display a ShEx schema with optional analysis |
SHACL
| Tool | Description |
|---|---|
validate_shacl |
Validate the loaded RDF data against a SHACL schema |
Prompts
| Prompt | Description |
|---|---|
explore_rdf_node |
Guide for exploring RDF node relationships |
analyze_rdf_data |
Comprehensive data structure and quality analysis |
validation_guide |
Step-by-step ShEx/SHACL validation workflow |
Resources
Data
| URI | Description |
|---|---|
rudof://current-data |
Currently loaded RDF data in Turtle format |
Resource Templates
| URI Template | Description |
|---|---|
rudof://current-data/{format} |
Currently loaded RDF data in the specified format. {format} must be one of: turtle, ntriples, rdfxml, jsonld, trig, nquads, n3 |
Format Metadata
| URI | Description |
|---|---|
rudof://formats/rdf |
Supported RDF serialization formats |
rudof://formats/node-modes |
Available node inspection modes |
rudof://formats/query-types |
Supported SPARQL query types |
rudof://formats/query-results |
Supported SPARQL result formats |
rudof://formats/shex |
Supported ShEx formats |
rudof://formats/shex-validation-result |
ShEx validation result formats |
rudof://formats/validation-reader-modes |
Reader modes (strict/lax) |
rudof://formats/shex-validation-sort-options |
Sort options for ShEx results |
rudof://formats/shacl |
Supported SHACL formats |
rudof://formats/shacl-validation-result |
SHACL validation result formats |
rudof://formats/shacl-validation-sort-options |
Sort options for SHACL results |
Security
The HTTP transport enforces:
- Origin validation — Requests with invalid
Originheaders return403 Forbidden - Protocol version validation — Invalid MCP protocol versions return
400 Bad Request - IP allowlist — Requests from non-allowed networks are rejected
- Session management — Sessions can be terminated via
HTTP DELETE
Dependencies
| Crate | Role |
|---|---|
rudof_lib |
Core RDF engine (ShEx, SHACL, SPARQL) |
rmcp |
Rust MCP SDK — protocol and macro infrastructure |
axum |
HTTP server for Streamable HTTP transport |
tokio |
Async runtime |
ipnetwork |
IP/CIDR parsing for the network allowlist |
For more information about the Model Context Protocol, visit the official MCP documentation.