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
What's New in 0.2.x
- Property Type Detection: Distinguishes
owl:ObjectProperty(relationships) fromowl:DatatypeProperty(attributes) for smarter query generation - Improved Knowledge Discovery: Returns all object properties plus top data properties per class
- VS Code + GitHub Copilot Support: No OpenAI API key required when using with Copilot
- Comprehensive Documentation: Agent system prompt and SPARQL reference guides
- Enhanced Caching: Property type information persisted in ontology cache
See CHANGELOG.md for full details.
VS Code Quick Start (5 Steps)
1. Install the package:
pipx install siemens-graph-studio-mcp-server
# Verify: siemens-graph-studio-mcp --verify
2. Create .vscode/mcp.json in your project:
{
"servers": {
"graph-studio": {
"type": "stdio",
"command": "siemens-graph-studio-mcp",
"env": {
"ANZO_SERVER": "your-server.example.com",
"ANZO_PORT": "8443",
"ANZO_USERNAME": "your-username",
"ANZO_PASSWORD": "your-password",
"GRAPHMART_URI": "http://example.com/Graphmart/your-id"
}
}
}
}
3. Enable MCP in VS Code:
Settings (Cmd+,) โ Search chat.mcp.enabled โ Enable โ
4. Reload VS Code:
Cmd+Shift+P โ "Developer: Reload Window"
5. Open Copilot Chat (Cmd+Shift+I) and ask:
- "What classes are in the GraphMart?"
- "Show properties of the Customer class"
Not working? See Installation Guide for troubleshooting.
Documentation
- Installation Guide - Detailed setup, troubleshooting, and PATH configuration
- 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
Recommended: pipx or uv (Isolated Environment)
# Using pipx (prevents dependency conflicts)
pipx install siemens-graph-studio-mcp-server
# Or using uv (faster)
uv tool install siemens-graph-studio-mcp-server
Alternative: pip
pip install siemens-graph-studio-mcp-server
Verify Installation
siemens-graph-studio-mcp --verify
Command not found? See Installation Guide for PATH troubleshooting.
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
Command not found in VS Code:
// Use full path in .vscode/mcp.json if command not in PATH:
{
"servers": {
"graph-studio": {
"command": "/full/path/to/siemens-graph-studio-mcp",
// Find path with: siemens-graph-studio-mcp --verify
...
}
}
}
MCP tools not appearing:
- Run "Developer: Reload Window" (
Ctrl+Shift+Pโ Reload) - Check Output panel โ "MCP" for errors
- Verify the command works in terminal:
siemens-graph-studio-mcp --verify
See full troubleshooting guide: docs/INSTALLATION_GUIDE.md
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.3.tar.gz.
File metadata
- Download URL: siemens_graph_studio_mcp_server-0.2.3.tar.gz
- Upload date:
- Size: 101.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a88e550e910f23711ef72663245c1010a8f448a1ee2429b63e3e717decad19f6
|
|
| MD5 |
bdeca09b25b75ec916e808c67b78e814
|
|
| BLAKE2b-256 |
db03865d73d4a1da30ce1311b07dcbadcd0c9adadbcde41c7b9264dfee563045
|
File details
Details for the file siemens_graph_studio_mcp_server-0.2.3-py3-none-any.whl.
File metadata
- Download URL: siemens_graph_studio_mcp_server-0.2.3-py3-none-any.whl
- Upload date:
- Size: 140.4 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 |
12c8b46bed8a910c836b962e909e73c5f5e14532112833d588b537a7f05d1834
|
|
| MD5 |
491d0595c3eb91646dd99ae106a8315a
|
|
| BLAKE2b-256 |
4b31ca74d8f45d3ca39f295fc0d54a36b130b1bb9b98885620759bc7694e3c06
|