MCP Hub
Back to servers

RDF4J MCP Server

An MCP server that enables AI-powered exploration of RDF data and SPARQL querying via RDF4J. It provides tools for executing queries, searching knowledge graph resources, and retrieving schema summaries.

glama
Updated
Feb 7, 2026

RDF4J MCP Server

Explore knowledge graphs with Claude - A Model Context Protocol (MCP) server that enables AI-powered exploration of RDF data and SPARQL querying.

Quick Demo

Try it out in under 2 minutes:

# 1. Clone and install
git clone https://github.com/your-org/rdf4j-mcp.git
cd rdf4j-mcp
uv sync  # or: pip install -e .

# 2. Start RDF4J + load sample data
./examples/setup-demo.sh

# 3a. Run as local MCP server (stdio)
rdf4j-mcp --server-url http://localhost:8081/rdf4j-server --repository demo

# 3b. Or run as remote HTTP server
rdf4j-mcp-server --port 3000 --server-url http://localhost:8081/rdf4j-server --repository demo

Then try these prompts with Claude:

"What classes and properties are in this knowledge graph?"

"Find all people and the projects they work on"

"Show me the project with the highest budget"

Installation

Prerequisites: Python 3.11+, Docker (for RDF4J)

git clone https://github.com/your-org/rdf4j-mcp.git
cd rdf4j-mcp
uv sync  # or: pip install -e .

Two Ways to Run

CommandTransportUse Case
rdf4j-mcpstdioMCP client spawns locally (Claude Desktop, VS Code)
rdf4j-mcp-serverHTTP/SSEStandalone remote server, multiple clients

Option 1: Local Mode (stdio)

The MCP client spawns the server as a local process:

rdf4j-mcp --server-url http://localhost:8080/rdf4j-server --repository my-repo

Option 2: Remote Mode (HTTP/SSE)

Run as a standalone HTTP server:

# Start the server
rdf4j-mcp-server --port 3000 \
  --server-url http://localhost:8080/rdf4j-server \
  --repository my-repo

# Or with environment variables
export RDF4J_MCP_RDF4J_SERVER_URL=http://localhost:8080/rdf4j-server
export RDF4J_MCP_DEFAULT_REPOSITORY=my-repo
rdf4j-mcp-server --port 3000

# Or with uvicorn (production)
uvicorn rdf4j_mcp.main:app --host 0.0.0.0 --port 3000 --workers 4

Endpoints:

  • GET /sse - SSE endpoint for MCP clients
  • GET /health - Health check
  • GET /info - Server configuration

Client Configuration

Claude Desktop

Config file locations:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

Local mode (stdio):

{
  "mcpServers": {
    "rdf4j": {
      "command": "rdf4j-mcp",
      "args": ["--server-url", "http://localhost:8080/rdf4j-server", "--repository", "my-repo"]
    }
  }
}

Remote mode (HTTP):

{
  "mcpServers": {
    "rdf4j": {
      "url": "http://your-server:3000/sse"
    }
  }
}

VS Code

Create .vscode/mcp.json in your workspace:

Local mode:

{
  "servers": {
    "rdf4j": {
      "command": "rdf4j-mcp",
      "args": ["--server-url", "http://localhost:8080/rdf4j-server", "--repository", "my-repo"]
    }
  }
}

Remote mode:

{
  "servers": {
    "rdf4j": {
      "url": "http://your-server:3000/sse"
    }
  }
}

For GitHub Copilot, use @mcp in chat:

@mcp What classes are in the knowledge graph?

Features

MCP Tools

ToolDescription
sparql_selectExecute SELECT queries, returns JSON
sparql_constructExecute CONSTRUCT/DESCRIBE, returns Turtle
sparql_askExecute ASK queries, returns boolean
describe_resourceGet all triples about an IRI
search_classesFind classes by name pattern
search_propertiesFind properties by pattern/domain/range
find_instancesFind instances of a class
get_schema_summaryOntology overview with statistics
list_repositoriesList available repositories
get_namespacesGet namespace prefix mappings
get_statisticsStatement/class/property counts
select_repositorySwitch active repository

MCP Resources

URIDescription
rdf4j://repositoriesList of repositories
rdf4j://repository/{id}/schemaSchema summary
rdf4j://repository/{id}/namespacesNamespace prefixes
rdf4j://repository/{id}/statisticsRepository statistics

MCP Prompts

PromptDescription
explore_knowledge_graphGuided exploration with schema context
write_sparql_queryNatural language to SPARQL
explain_ontologyExplain classes and relationships

Configuration

CLI Options

rdf4j-mcp (stdio mode):

--server-url URL    RDF4J server URL (default: http://localhost:8080/rdf4j-server)
--repository ID     Default repository ID
--debug             Enable debug logging

rdf4j-mcp-server (HTTP mode):

--host HOST         Bind address (default: 0.0.0.0)
--port PORT         Listen port (default: 3000)
--server-url URL    RDF4J server URL
--repository ID     Default repository ID
--reload            Auto-reload for development
--debug             Enable debug logging

Environment Variables

All use the RDF4J_MCP_ prefix:

VariableDefaultDescription
RDF4J_SERVER_URLhttp://localhost:8080/rdf4j-serverRDF4J server URL
DEFAULT_REPOSITORY-Default repository ID
QUERY_TIMEOUT30Query timeout (seconds)
DEFAULT_LIMIT100Default query LIMIT
MAX_LIMIT10000Maximum query LIMIT

Running RDF4J Server

Using Docker:

docker run -d -p 8080:8080 eclipse/rdf4j-workbench

Then create a repository at http://localhost:8080/rdf4j-workbench.

Or use the demo setup script which handles everything:

./examples/setup-demo.sh

Development

uv sync --dev

# Run tests
pytest

# Lint and format
ruff check src tests
ruff format src tests

# Type check
ty check src

License

MIT

Reviews

No reviews yet

Sign in to write a review