RMGS MCP Server
An MCP (Model Context Protocol) server for Altair Graph Studio (AGS) that provides intelligent SPARQL query capabilities, ontology management, and graphmart construction tools — all accessible from AI coding assistants like GitHub Copilot, Claude Code, and other MCP-compatible clients.
Features
- SPARQL Query Execution — Run SPARQL queries against AGS graphmarts
- Knowledge Discovery — Explore ontologies, classes, and properties
- Ontology Management — Create, modify, and delete ontologies
- Graphmart Construction — Build and manage transformation layers and steps
- Agent Memory — Persistent and ephemeral memory for context retention
- Dual Modes —
explore(read-only, 13 tools) andcreate(all 51 tools) - Multiple Transports — stdio, SSE, and streamable-http
Installation
pip install siemens-graph-studio-mcp-server
Default setup (recommended)
Use this as the baseline setup when installing from PyPI.
- Create a Python virtual environment:
python -m venv graph_mcp_env
- Activate the environment:
source /.../howtomcp/graph_mcp_env/bin/activate
- Install from PyPI:
pip install siemens-graph-studio-mcp-server
- Start MCP as two separate servers (recommended):
siemens-graph-studio-mcp-server --config ags-config.json --mode explore --transport sse --port 8000
siemens-graph-studio-mcp-server --config ags-config.json --mode create --transport sse --port 8001
Note: This also installs
rdflib, which addsrdfpipeandrdfgraphisomorphismexecutables to your environment. These are standard rdflib CLI utilities and can be safely ignored.
From Source
git clone <repository-url>
cd rmgs-mcp-server
pip install -e .
Quick Start
1. Create a config file
Save this as ags-config.json (e.g., in your home directory or project):
{
"servers": {
"my-server": {
"host": "your-ags-server.example.com",
"port": 443,
"username": "your-username",
"password": "${AGS_PASSWORD}",
"graphmart_uri": "http://cambridgesemantics.com/Graphmart/your-graphmart-id",
"default": true
}
}
}
Security: Use
${ENV_VAR}references for passwords — they are resolved from environment variables at startup. Never commit real passwords to config files.
2. Connect your MCP client
Choose your client below.
VS Code — GitHub Copilot (Agent Mode)
Setup
- Create
.vscode/mcp.jsonin your workspace:
{
"servers": {
"ags-sparql-agent": {
"type": "stdio",
"command": "siemens-graph-studio-mcp-server",
"args": ["--config", "/absolute/path/to/ags-config.json"],
"env": {
"AGS_PASSWORD": "your-password-here"
}
}
}
}
- Reload VS Code (
Cmd+Shift+P→ "Developer: Reload Window"). - Open Copilot Chat and switch to Agent mode (click the mode selector at the top of the chat panel).
- The AGS tools will appear in the tool list (click the 🔧 icon to verify).
Usage
Type natural language prompts in Copilot Chat (Agent mode):
What ontologies are available in this graphmart?
Show me all classes in the equipment ontology
Run a SPARQL query to count all products
Create a new transformation layer for data linking
Copilot will automatically select and call the appropriate MCP tools.
Running from source (without pip install)
If you prefer to run directly from the cloned repo:
{
"servers": {
"ags-sparql-agent": {
"type": "stdio",
"command": "python",
"args": [
"/absolute/path/to/rmgs_mcp_server/ags_sparql_agent.py",
"--config", "/absolute/path/to/ags-config.json"
],
"env": {
"AGS_PASSWORD": "your-password-here"
}
}
}
}
Claude Code
Setup
Add to your project's .mcp.json (or ~/.claude.json for global config):
{
"mcpServers": {
"ags-sparql-agent": {
"command": "siemens-graph-studio-mcp-server",
"args": ["--config", "/absolute/path/to/ags-config.json"],
"env": {
"AGS_PASSWORD": "your-password-here"
}
}
}
}
Usage
In Claude Code, the MCP tools are automatically available. Use natural language:
What data is in this knowledge graph?
Show me all properties of the Customer class
Create a linking ontology between orders and products
Claude Code will call the appropriate MCP tools to interact with your AGS graphmart.
Advanced Configuration
Multiple servers
{
"servers": {
"production": {
"host": "prod-ags.example.com",
"port": 443,
"username": "your-username",
"password": "${PROD_PASSWORD}",
"graphmart_uri": "http://cambridgesemantics.com/Graphmart/prod-id",
"default": true
},
"staging": {
"host": "staging-ags.example.com",
"port": 8443,
"username": "your-username",
"password": "${STAGING_PASSWORD}"
}
}
}
The server marked "default": true is automatically selected at startup. Switch at runtime using select_server and select_graphmart tools.
Agent configuration
{
"servers": { "...": "..." },
"agent_config": {
"max_iterations": 3,
"query_timeout": 30,
"cache_ontologies": true,
"ontology_cache_ttl": 86400
}
}
Transport options
# SSE (default)
siemens-graph-studio-mcp-server --config ags-config.json --transport sse --port 8000
# stdio (used by VS Code and Claude Code)
siemens-graph-studio-mcp-server --config ags-config.json
# Streamable HTTP
siemens-graph-studio-mcp-server --config ags-config.json --transport streamable-http --port 8000
Modes
# Explore mode — read-only tools only (safe for browsing)
siemens-graph-studio-mcp-server --config ags-config.json --mode explore
# Create mode — all tools including write operations (default)
siemens-graph-studio-mcp-server --config ags-config.json --mode create
Explore mode tools (13):
list_servers, select_server, list_graphmarts, select_graphmart, execute_sparql_query, discover_knowledge_overview, discover_available_ontologies, discover_ontology_classes, discover_class_data_properties, discover_class_object_properties, list_ontology_imports, initialize_agent_memory, read_agent_memory
Create mode includes all 51 tools (explore + write operations).
Legacy: Direct
ANZO_*environment variables (without a config file) are still supported but deprecated.
Tool Categories
System & Monitoring
| Tool | Description |
|---|---|
test_system_connection |
Test MCP server and AGS agent status |
get_session_logs |
Get session logs and interaction history |
list_servers |
List all configured AGS servers |
select_server |
Switch to a different AGS server at runtime |
list_graphmarts |
List all graphmarts on the active server |
select_graphmart |
Switch to a different graphmart at runtime |
SPARQL Query Execution
| Tool | Description |
|---|---|
execute_sparql_query |
Execute SPARQL directly against graphmart |
query_ags_configuration |
Query graphmart metadata (local volume) |
update_ags_configuration |
Update graphmart metadata with SPARQL |
Knowledge Discovery
| Tool | Description |
|---|---|
discover_knowledge_overview |
Get overview of available knowledge |
discover_available_ontologies |
List all available ontologies |
discover_ontology_classes |
List classes in a specific ontology |
discover_class_data_properties |
List data properties for a class |
discover_class_object_properties |
List object properties for a class |
Ontology Management
| Tool | Description |
|---|---|
create_ontology |
Create a new ontology |
delete_ontology |
Delete an ontology |
register_ontology |
Register ontology with graphmart |
load_ontology_from_file |
Load TTL files into named graphs |
add_ontology_class |
Add a class to an ontology |
remove_ontology_class |
Remove a class from an ontology |
add_ontology_property |
Add a property to an ontology |
remove_ontology_property |
Remove a property from an ontology |
add_ontology_import |
Add an import to an ontology |
remove_ontology_import |
Remove an import from an ontology |
list_ontology_imports |
List imports of an ontology |
list_ontology_structure_classes |
List classes in ontology structure |
list_ontology_structure_properties |
List properties in ontology structure |
get_ontology_cache_status |
Get ontology cache status |
clear_ontology_cache |
Clear ontology caches |
refresh_ontology_cache |
Force cache refresh |
Graphmart Construction & Management
| Tool | Description |
|---|---|
create_transformation_layer |
Create transformation layers |
update_transformation_layer |
Update layer properties |
delete_transformation_layer |
Delete transformation layers |
list_transformation_layers |
List all transformation layers |
add_transformation_step |
Add transformation steps to layers |
update_transformation_step |
Update transformation step properties |
delete_transformation_step |
Delete transformation steps |
list_transformation_steps |
List steps within a layer |
add_direct_load_step |
Add direct data loading steps |
update_direct_load_step |
Update direct load step properties |
add_bookmark_query |
Add a SPARQL query bookmark to graphmart |
delete_bookmark_query |
Delete a single bookmark from a graphmart |
delete_all_bookmark_queries |
Delete all bookmarks from a graphmart |
refresh_graphmart |
Lightweight refresh of changed layers |
reload_graphmart |
Complete reprocessing of all layers |
get_layer_status |
Comprehensive layer and step error info |
get_step_status |
Specific step debugging |
Agent Memory
| Tool | Description |
|---|---|
initialize_agent_memory |
Initialize memory for the agent |
write_permanent_memory |
Write to persistent memory |
write_ephemeral_memory |
Write to session-scoped memory |
promote_ephemeral_memory |
Promote ephemeral to permanent memory |
clear_agent_memory |
Clear agent memory |
read_agent_memory |
Read from agent memory |
Development
# Install in development mode
pip install -e ".[dev]"
# Run tests
pytest
# Build package
python -m build
Bump Version
Update the version in both:
pyproject.toml→version = "x.y.z"rmgs_mcp_server/__init__.py→__version__ = "x.y.z"
Publish to PyPI
pip install build twine
python -m build
twine upload dist/*
Project Structure
rmgs-mcp-server/
├── rmgs_mcp_server/ # Main package
│ ├── __init__.py # Package init with version
│ ├── ags_sparql_agent.py # MCP server entry point
│ ├── models.py # Data models
│ ├── server_registry.py # Multi-server configuration manager
│ ├── sparql_agent_core.py # Core SPARQL agent logic
│ ├── sparql_query_engine.py # SPARQL query engine
│ ├── ontology_cache.py # Ontology caching
│ ├── ontology_discovery.py # Ontology discovery
│ ├── interaction_logger.py # Logging utilities
│ ├── tools/ # MCP tool implementations
│ │ ├── base_tool.py # Base tool class
│ │ ├── system/ # System, server & graphmart tools
│ │ ├── query/ # SPARQL query tools
│ │ ├── discovery/ # Knowledge discovery tools
│ │ ├── ontology/ # Ontology management tools
│ │ ├── graphmart/ # Graphmart construction tools
│ │ └── memory/ # Agent memory tools
│ └── utils/ # Shared utilities
├── prompts/ # Agent prompt templates
├── skills/ # Best practices guides
├── pyproject.toml # Package metadata & build config
├── LICENSE # MIT License
└── README.md # This file
License
MIT
Metadata
Release files for siemens-graph-studio-mcp-server 0.6.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| siemens_graph_studio_mcp_server-0.6.3.tar.gz | 114.7 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| siemens_graph_studio_mcp_server-0.6.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 271.8 kB
Release files / siemens_graph_studio_mcp_server-0.6.3.tar.gz
| Download URL | siemens_graph_studio_mcp_server-0.6.3.tar.gz |
|---|---|
| Size | 114.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ec3e5d8dba92b72e6e38919fa4434d4cb46895c2343282fc28aa54c481bcfa06
|
|
BLAKE2b-256 checksum How to use checksums |
c4df5ab7f3ff89b691c330551ac8b060834ce9713fb5d4ffe33dba1cb6e23e03
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.4
|
Release files / siemens_graph_studio_mcp_server-0.6.3-py3-none-any.whl
| Download URL | siemens_graph_studio_mcp_server-0.6.3-py3-none-any.whl |
|---|---|
| Size | 157.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ee06483f0e4fe41f25e02e56382691dd5c4c74b907b3f26277ca07439394eae3
|
|
BLAKE2b-256 checksum How to use checksums |
873ca3661aaa74393e721ce8fb99c877f8c645f73b926c64c10a82001875cafc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.4
|
Security for siemens-graph-studio-mcp-server 0.6.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.