MCP Server for Apache Jena
About
MCP Server for Apache Jena connects AI agents to Apache Jena, enabling SPARQL query and update capabilities against a Jena Fuseki server. It is designed for developers using AI assistants that support the Model Context Protocol.
Details
- Author
- ramuzes
- Downloads
- 342
- Categories
- Other
Jump to
- Execute SPARQL queries against a Jena Fuseki server
- Execute SPARQL updates to modify RDF data
- List available named graphs in the dataset
- HTTP Basic authentication support for Jena Fuseki
- Pre-built SPARQL query templates for common tasks
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
MCP Server for Apache JenaCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
Install dependencies with npm install, build with npm run build, then start with npm start or with custom options like --endpoint, --dataset, --username, and --password. You can also run via Docker with environment variables.
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"mcp server for apache jena": {
"mcp-jena": {
"command": "docker",
"args": [
"build",
"-t",
"mcp-jena",
"."
]
}
}
}
}
McpServers
{
"mcp-jena": {
"command": "docker",
"args": [
"build",
"-t",
"mcp-jena",
"."
]
}
}
MCP Server for Apache Jena
A Model Context Protocol (MCP) server that connects AI agents to Apache Jena for SPARQL query capabilities.
Overview
This project implements an MCP server that allows AI agents (such as Cursor, Claude for Cline, or Claude Desktop) to access and query RDF data stored in Apache Jena. The server provides tools for executing SPARQL queries and updates against a Jena Fuseki server.
Features
- Execute SPARQL queries against a Jena Fuseki server
- Execute SPARQL updates to modify RDF data
- List available named graphs in the dataset
- HTTP Basic authentication support for Jena Fuseki
- Compatible with the Model Context Protocol
Prerequisites
- Node.js (v16 or later)
- Apache Jena Fuseki server running with your RDF data loaded
- An AI agent that supports the Model Context Protocol (e.g., Cursor, Claude for Cline)
Installation
1. Clone this repository:
git clone https://github.com/ramuzes/mcp-jena.git
cd mcp-jena
2. Install dependencies:
npm install
3. Build the TypeScript code:
npm run build
Usage
Run the server with default settings (localhost:3030 for Jena, 'ds' for dataset):
npm start
Or specify custom Jena endpoint, dataset, and authentication credentials:
npm start -- --endpoint http://your-jena-server:3030 --dataset your_dataset --username your_username --password your_password
You can also use short flags:
npm start -- -e http://your-jena-server:3030 -d your_dataset -u your_username -p your_password
For development mode with automatic transpilation:
npm run dev:transpile -- -e http://your-jena-server:3030 -d your_dataset -u your_username -p your_password
Docker
You can run the MCP Jena server using Docker:
Building the Docker image
docker build -t mcp-jena .
Running with Docker
docker run -e JENA_FUSEKI_URL=http://your-jena-server:3030 -e DEFAULT_DATASET=your_dataset mcp-jena
Available Tools
This MCP server provides the following tools:
1. execute_sparql_query - Execute a SPARQL query against the Jena dataset
- Includes comprehensive SPARQL syntax documentation
- Property path operators (/, *, +, ?, ^, |) with examples
- Common query patterns and templates
- Automatic query validation and suggestions
2. execute_sparql_update - Execute a SPARQL update query to modify the dataset
- Insert/Delete operations documentation
- Conditional updates with WHERE clauses
- Graph management operations
3. list_graphs - List all available named graphs in the dataset
- Graph usage patterns and best practices
- Provenance and versioning examples
4. sparql_query_templates - Get pre-built SPARQL query templates
- exploration: Basic data discovery and statistics
- property-paths: Complex graph navigation patterns
- statistics: Knowledge graph metrics and analysis
- validation: Data quality and consistency checks
- schema: Structure discovery and documentation
Environment Variables
You can also configure the server using environment variables:
- JENA_FUSEKI_URL: URL of your Jena Fuseki server (default: http://localhost:3030)
- DEFAULT_DATASET: Default dataset name (default: ds)
- JENA_USERNAME: Username for HTTP Basic authentication to Jena Fuseki
- JENA_PASSWORD: Password for HTTP Basic authentication to Jena Fuseki
- PORT: Port for the MCP server (for HTTP transport, default: 8080)
- API_KEY: API key for MCP server authentication
Example SPARQL Queries
Basic SELECT query:
SELECT ?subject ?predicate ?object
WHERE {
?subject ?predicate ?object
}
LIMIT 10
Insert data with UPDATE:
PREFIX ex: <http://example.org/>
INSERT DATA {
ex:subject1 ex:predicate1 "object1" .
ex:subject2 ex:predicate2 42 .
}
Query a specific named graph:
SELECT ?subject ?predicate ?object
FROM NAMED <http://example.org/graph1>
WHERE {
GRAPH <http://example.org/graph1> {
?subject ?predicate ?object
}
}
LIMIT 10
Resources
- Apache Jena
- Model Context Protocol
- SPARQL Query Language
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



