MCP (Model Context Protocol) server for Siemens Graph Studio - enables AI agents to interact with knowledge graphs via SPARQL
Project description
Siemens Graph Studio MCP Server
An MCP (Model Context Protocol) server that enables AI agents to interact with Siemens Graph Studio knowledge graphs via SPARQL queries.
Features
- 🔍 Execute SPARQL Queries - Run queries against GraphMarts with automatic result formatting
- 📊 Smart Knowledge Discovery - Intelligent property categorization (object vs data properties) for better query generation
- 🔄 Manage GraphMarts - Create and modify transformation layers and steps
- 🧠 AI-Powered Queries - Natural language to SPARQL translation (with OpenAI)
- 📦 Ontology Caching - Efficient schema discovery with persistent caching
- 🏗️ Modular Architecture - Well-organized tool categories for maintainability
Documentation
- Agent System Prompt - Recommended workflow and tool usage for AI agents
- SPARQL Reference - Query patterns, naming conventions, and troubleshooting
- Architecture Guide - Technical architecture overview
- Skills Documentation - Best practices for ontology and linking patterns
Installation
pip install siemens-graph-studio-mcp-server
Quick Start
1. Configure Environment Variables
export ANZO_SERVER="graph-studio.example.com"
export ANZO_PORT="8443"
export ANZO_USERNAME="your-username"
export ANZO_PASSWORD="your-password"
export GRAPHMART_URI="http://example.com/Graphmart/your-graphmart-id"
# Optional: For natural language queries
export API_KEY="sk-your-openai-api-key"
2. Run the Server
siemens-graph-studio-mcp
3. Use with VS Code + GitHub Copilot (Recommended)
VS Code with GitHub Copilot provides a powerful way to use the MCP server without requiring an OpenAI API key. Copilot's built-in AI handles natural language understanding.
Step 1: Create a .vscode/mcp.json in your project:
{
"servers": {
"graph-studio": {
"command": "siemens-graph-studio-mcp",
"env": {
"ANZO_SERVER": "graph-studio.example.com",
"ANZO_PORT": "8443",
"ANZO_USERNAME": "your-username",
"ANZO_PASSWORD": "your-password",
"GRAPHMART_URI": "http://example.com/Graphmart/your-graphmart-id"
}
}
}
}
Note: No
API_KEYrequired - GitHub Copilot handles the AI layer.
Step 2: Enable MCP in VS Code settings (Settings → Extensions → GitHub Copilot Chat → Enable MCP).
Step 3: Open Copilot Chat (Ctrl+Shift+I / Cmd+Shift+I) and ask questions like:
- "What classes are available in the GraphMart?"
- "Show me all properties of the Customer class"
- "Write a SPARQL query to find all active projects"
Troubleshooting VS Code + Copilot:
- If MCP tools don't appear, run "Developer: Reload Window" (
Ctrl+Shift+P→ Reload) - Check Output panel → "MCP" for connection errors
- Ensure the server is installed:
pip install siemens-graph-studio-mcp-server - Verify environment variables are correct (test with
siemens-graph-studio-mcpin terminal first)
4. Use with Claude Desktop
Add to your ~/.config/claude-desktop/claude_desktop_config.json:
{
"mcpServers": {
"graph-studio": {
"command": "siemens-graph-studio-mcp",
"env": {
"ANZO_SERVER": "graph-studio.example.com",
"ANZO_PORT": "8443",
"ANZO_USERNAME": "your-username",
"ANZO_PASSWORD": "your-password",
"GRAPHMART_URI": "http://example.com/Graphmart/your-graphmart-id",
"API_KEY": "sk-your-openai-api-key"
}
}
}
}
Note:
API_KEYis optional but enables advanced natural language to SPARQL translation.
Configuration
Environment Variables
| Variable | Required | Description |
|---|---|---|
ANZO_SERVER |
Yes | Graph Studio server hostname |
ANZO_PORT |
Yes | Server port (typically 8443) |
ANZO_USERNAME |
Yes | Authentication username |
ANZO_PASSWORD |
Yes | Authentication password |
GRAPHMART_URI |
Yes | Target GraphMart URI |
API_KEY |
No | OpenAI API key for NL queries |
ENABLE_AGENT_DEBUG |
No | Enable debug output |
ENABLE_LOGGING_DEBUG |
No | Enable detailed logging |
Config File
Alternatively, use a config file:
siemens-graph-studio-mcp --config my-config.json
See examples/config.example.jsonc for a template.
Architecture
The server is organized into focused, maintainable modules:
siemens_graph_studio_mcp/
├── server.py # MCP server entry point
├── sparql_agent_core.py # Core agent logic
├── ontology_discovery.py # Schema extraction
├── ontology_cache.py # Persistent caching
├── models.py # Pydantic data models
├── tools/
│ ├── discovery/ # Knowledge exploration tools
│ ├── query/ # SPARQL execution tools
│ ├── ontology/ # Ontology management tools
│ ├── graphmart/ # GraphMart construction tools
│ └── system/ # System monitoring tools
└── utils/ # Shared utilities
Key Components
- SPARQLAgent: The intelligent agent that converts natural language to SPARQL queries
- OntologyDiscovery: Extracts and analyzes ontology schemas from GraphMarts
- OntologyCache: Provides persistent caching for schema information
- Property Detection: Distinguishes between
owl:ObjectProperty(relationships) andowl:DatatypeProperty(attributes) for smarter query generation
Available Tools
System & Monitoring
test_system_connection- Test MCP server and Graph Studio agent statusget_session_logs- Get session logs and interaction history
SPARQL Query Execution
execute_sparql_query- Execute SPARQL directly against GraphMartquery_ags_configuration- Query Graph Studio configurationupdate_ags_configuration- Update Graph Studio configuration
Knowledge Discovery
discover_knowledge_overview- Get overview of available knowledgediscover_available_ontologies- List all available ontologiesdiscover_ontology_classes- List classes in a specific ontologydiscover_class_data_properties- List data properties for a classdiscover_class_object_properties- List object properties for a class
Ontology Management
create_ontology- Create new ontologiesdelete_ontology- Delete ontologiesload_ontology_from_file- Load TTL files into named graphsregister_ontology- Register ontologiesadd_ontology_class/remove_ontology_class- Manage classesadd_ontology_property/remove_ontology_property- Manage propertiesget_ontology_cache_status/clear_ontology_cache/refresh_ontology_cache- Cache management
GraphMart Construction
create_transformation_layer- Create transformation layersadd_transformation_step- Add transformation stepsadd_direct_load_step- Add direct data loading stepsupdate_transformation_layer/delete_transformation_layer- Layer managementlist_transformation_layers/list_transformation_steps- List componentsrefresh_graphmart/reload_graphmart- GraphMart operations
Transport Modes
stdio (default)
For use with Claude Desktop and other MCP clients:
siemens-graph-studio-mcp
SSE (Server-Sent Events)
For web clients:
siemens-graph-studio-mcp --transport sse --port 8000
HTTP Streaming
siemens-graph-studio-mcp --transport streamable-http --port 8000
Programmatic Usage
import asyncio
from siemens_graph_studio_mcp import GraphmartConfig, SPARQLAgent
async def main():
config = GraphmartConfig(
ags_server="graph-studio.example.com",
ags_port=8443,
graphmart_uri="http://example.com/Graphmart/demo",
username="admin",
password="secret"
)
agent = SPARQLAgent(config)
await agent.initialize()
# Now use the agent...
asyncio.run(main())
Development
Setup
git clone https://github.com/siemens/graph-studio-mcp-server.git
cd graph-studio-mcp-server
pip install -e ".[dev]"
Running Tests
pytest
Building for Distribution
pip install build twine
python -m build
Publishing to PyPI
# Test PyPI
twine upload --repository testpypi dist/*
# Production PyPI
twine upload dist/*
Requirements
- Python 3.10+
- Access to a Siemens Graph Studio instance
- Valid user credentials with GraphMart access
License
Apache License 2.0 - See LICENSE for details.
Related
- Model Context Protocol - The MCP specification
- Siemens Graph Studio - Knowledge graph platform
- FastMCP - Python MCP framework
Support
For issues and feature requests, please use the GitHub Issues page.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file siemens_graph_studio_mcp_server-0.2.0.tar.gz.
File metadata
- Download URL: siemens_graph_studio_mcp_server-0.2.0.tar.gz
- Upload date:
- Size: 97.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
477916adf86524a4b7210244e7eaf1f502d15af194b7025f8c34e394456208f6
|
|
| MD5 |
711247629931db7fdd87a26e0c4a2061
|
|
| BLAKE2b-256 |
f570843f91c9815ac9fd817a882626c237252140d7ef03a53d45e477a6fd3c05
|
File details
Details for the file siemens_graph_studio_mcp_server-0.2.0-py3-none-any.whl.
File metadata
- Download URL: siemens_graph_studio_mcp_server-0.2.0-py3-none-any.whl
- Upload date:
- Size: 138.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b7975d1128ed8366c64870f95f113880071625ca484f78fdd92493b076a92eee
|
|
| MD5 |
17ca4f1b89a0d718f67354cc65add6e7
|
|
| BLAKE2b-256 |
cb55b26fe7378e54d31660758e0f36c6c8ca48ef3628f7ae9466200877a6ccc7
|