Skip to main content
Glama
odysa

RDF4J MCP Server

by odysa

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

Command

Transport

Use Case

rdf4j-mcp

stdio

MCP client spawns locally (Claude Desktop, VS Code)

rdf4j-mcp-server

HTTP/SSE

Standalone 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

Tool

Description

sparql_select

Execute SELECT queries, returns JSON

sparql_construct

Execute CONSTRUCT/DESCRIBE, returns Turtle

sparql_ask

Execute ASK queries, returns boolean

describe_resource

Get all triples about an IRI

search_classes

Find classes by name pattern

search_properties

Find properties by pattern/domain/range

find_instances

Find instances of a class

get_schema_summary

Ontology overview with statistics

list_repositories

List available repositories

get_namespaces

Get namespace prefix mappings

get_statistics

Statement/class/property counts

select_repository

Switch active repository

MCP Resources

URI

Description

rdf4j://repositories

List of repositories

rdf4j://repository/{id}/schema

Schema summary

rdf4j://repository/{id}/namespaces

Namespace prefixes

rdf4j://repository/{id}/statistics

Repository statistics

MCP Prompts

Prompt

Description

explore_knowledge_graph

Guided exploration with schema context

write_sparql_query

Natural language to SPARQL

explain_ontology

Explain 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:

Variable

Default

Description

RDF4J_SERVER_URL

http://localhost:8080/rdf4j-server

RDF4J server URL

DEFAULT_REPOSITORY

-

Default repository ID

QUERY_TIMEOUT

30

Query timeout (seconds)

DEFAULT_LIMIT

100

Default query LIMIT

MAX_LIMIT

10000

Maximum 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

-
security - not tested
F
license - not found
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/odysa/rdf4j-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server