fellnerd/dimetrics-mcp-server
If you are the rightful owner of dimetrics-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
The Dimetrics MCP Server is a Model Context Protocol server based on the FastMCP Python SDK, designed to interact with the Dimetrics Web-API and enable natural language app management through GitHub Copilot.
Dimetrics, Werkportal & PPMC MCP Server - Multi-API Integration
Ein Model Context Protocol (MCP) Server der Dimetrics, Werkportal und PPMC APIs unterstützt.
🎯 Services
Dimetrics MCP Server
- Port: 5201
- API: https://dimetrics.api.nc.released.services/api
- Container: dimetrics-mcp-server
Werkportal MCP Server
- Port: 5202
- API: https://werkportal.api.nc.released.services/api
- Container: werkportal-mcp-server
PPMC MCP Server
- Port: 5203
- API: https://ppmc.api.nc.released.services/api
- Container: ppmc-mcp-server
🚀 Verwendung
# Alle Services starten
docker-compose up -d
# Einzelne Services
docker-compose up -d dimetrics-mcp-server
docker-compose up -d werkportal-mcp-server
docker-compose up -d ppmc-mcp-server
# Kombinationen
docker-compose up -d dimetrics-mcp-server werkportal-mcp-server
Dimetrics MCP Server - Vollständige API-Integration
Ein Model Context Protocol (MCP) Server basierend auf dem offiziellen FastMCP Python SDK, der eine vollständige Integration mit der Dimetrics Web-API bietet. Ermöglicht GitHub Copilot die natürlichsprachige Verwaltung von Apps, Services, Resources, Attributen und echten Daten.
✨ Features
- 🏗️ App Management: Vollständiges CRUD für Apps
- ⚙️ Service Management: Vollständiges CRUD für Services mit App-Verknüpfung
- 📊 Resource Management: Vollständiges CRUD für Resources mit Service-Verknüpfung
- 🔧 Attribute Management: Vollständiges CRUD für Attribute mit 25+ unterstützten Typen
- 💾 Generics API (Data CRUD): Vollständiges CRUD für echte Daten in Resources
- 🔍 Erweiterte Abfragen: Directus-ähnliche Filter, Aggregationen, Volltext-Suche
- 🚀 FastMCP Integration: Basiert auf dem offiziellen MCP Python SDK
- 🔑 Flexible Authentifizierung: Token-basierte API-Authentifizierung
- 📋 Natürlichsprachliche Steuerung: GitHub Copilot Integration
🛠️ Verfügbare Tools (35 Tools)
📱 App Management
| Tool | Beschreibung | Parameter |
|---|---|---|
create_app | Erstellt eine neue App | name, description, prefix |
list_apps | Listet alle Apps auf | search, page_size, page, limit |
get_app_details | Holt App-Details | object_id |
update_app | Aktualisiert eine App | object_id, name, description, prefix |
delete_app | Löscht eine App | object_id |
📂 Category Management
| Tool | Beschreibung | Parameter |
|---|---|---|
create_category | Erstellt eine neue Category | name, description, prefix |
list_categories | Listet alle Categories auf | search, page_size, page, limit |
get_category_details | Holt Category-Details | object_id |
update_category | Aktualisiert eine Category | object_id, name, description, prefix |
delete_category | Löscht eine Category | object_id |
⚙️ Service Management
| Tool | Beschreibung | Parameter |
|---|---|---|
create_service | Erstellt einen neuen Service | name, app_space, description, title, icon, etc. |
list_services | Listet alle Services auf | search, page_size, page, limit |
get_service_details | Holt Service-Details | object_id |
update_service | Aktualisiert einen Service | object_id, name, title, description, etc. |
delete_service | Löscht einen Service | object_id |
📊 Resource Management
| Tool | Beschreibung | Parameter |
|---|---|---|
create_resource | Erstellt eine neue Resource | name, service, description, title, icon, etc. |
list_resources | Listet alle Resources auf | search, page_size, page, limit |
get_resource_details | Holt Resource-Details | object_id |
update_resource | Aktualisiert eine Resource | object_id, name, title, description, etc. |
delete_resource | Löscht eine Resource | object_id |
🔧 Attribute Management
| Tool | Beschreibung | Parameter |
|---|---|---|
list_attributes | Listet Attribute einer Resource | resource_name, search, page_size, page |
get_attribute_details | Holt Attribut-Details | resource_name, attribute_id |
create_attribute | Erstellt ein neues Attribut | resource_name, name, attribute_type, etc. |
update_attribute | Aktualisiert ein Attribut | resource_name, attribute_id, name, etc. |
delete_attribute | Löscht ein Attribut | resource_name, attribute_id |
create_attributes_bulk | Erstellt mehrere Attribute | resource_name, attributes_json |
💾 Generics API (Data CRUD)
| Tool | Beschreibung | Parameter |
|---|---|---|
list_generic_entries | Listet Einträge mit Filter/Aggregation | resource_name, search, directus_filter_json, aggregate_json, etc. |
create_generic_entry | Erstellt einen neuen Eintrag | resource_name, entry_data_json |
get_generic_entry | Holt einen spezifischen Eintrag | resource_name, entry_id |
update_generic_entry | Aktualisiert einen Eintrag (PATCH) | resource_name, entry_id, update_data_json |
delete_generic_entry | Löscht einen Eintrag | resource_name, entry_id, confirm_deletion |
🎯 Erweiterte Features
Directus-ähnliche Filter
# Beispiele für directus_filter_json
'{"state": {"_eq": "ok"}}' # Gleichheit
'{"amount": {"_gte": 10}}' # Größer gleich
'{"name": {"_contains": "Marathon"}}' # Textsuche
'{"_and": [{"state": {"_eq": "ok"}}, {"amount": {"_gte": 25}}]}' # UND-Verknüpfung
Aggregationen
# Beispiele für aggregate_json
'{"sum": "amount"}' # Summe
'{"count": "name"}' # Anzahl
'{"avg": "distance_km"}' # Durchschnitt
'{"sum": "amount", "count": "name", "avg": "amount"}' # Mehrere gleichzeitig
Volltext-Suche
# search Parameter
search="Marathon" # Sucht in allen Textfeldern
search="Dauerlauf" # Findet passende Einträge
🚀 Schnellstart
1. Installation
# Abhängigkeiten installieren
pip install -r requirements.txt
2. Konfiguration
# .env Datei erstellen
cp .env.example .env
# API-Zugangsdaten eintragen
DIMETRICS_API_URL=https://dimetrics.api.nc.released.services/api
DIMETRICS_API_KEY=your_token_here
3. Tests
# Grundfunktionalität testen
python3 test_minimal_new.py
# CRUD-Operationen testen
python3 test_generics_crud.py
# MCP-Tools testen
python3 test_mcp_generics_crud.py
# Aggregationen und Filter testen
python3 test_aggregations.py
python3 test_directus_filters.py
4. MCP Server starten
# Server starten
python3 -m dimetrics_mcp_server
# Mit uv (falls installiert)
uv run mcp dev dimetrics_mcp_server/__main__.py
5. GitHub Copilot Integration
{
"mcpServers": {
"dimetrics": {
"command": "python3",
"args": ["-m", "dimetrics_mcp_server"],
"cwd": "/path/to/dimetrics-mcp-server",
"env": {
"DIMETRICS_API_URL": "https://dimetrics.api.nc.released.services/api",
"DIMETRICS_API_KEY": "your_token_here"
}
}
}
}
📈 Projekt-Status
✅ Vollständig Implementiert
- Apps Management: Alle CRUD-Operationen funktional
- Categories Management: Alle CRUD-Operationen funktional
- Services Management: Alle CRUD-Operationen funktional
- Resources Management: Alle CRUD-Operationen funktional
- Attributes Management: Alle CRUD-Operationen funktional
- Generics API: Vollständiges CRUD mit erweiterten Features
- Filter-System: Directus-kompatible Filter
- Aggregationen: Sum, Count, Average und mehr
- Volltext-Suche: Durchsuchung aller Textfelder
🎯 Erfolgreiche Test-Implementierung
Das System wurde mit einer vollständigen Lauftagebuch-App getestet:
App: Lauftagebuch
├── Service: Laufaktivitäten
└── Resource: Läufe
├── name (INPUT_FIELD)
├── state (DROPDOWN_FIELD)
├── distance_km (NUMERIC_FIELD)
├── duration_minutes (NUMERIC_FIELD)
├── date_created (TIMESTAMP_FIELD)
├── notes (TEXT_FIELD)
├── weather (DROPDOWN_FIELD)
└── amount (NUMERIC_FIELD)
Erfolgreiche CRUD-Tests:
- ✅ Erstellung von Einträgen mit allen Attributen
- ✅ Filtern nach Status, Distanz, Datum
- ✅ Aggregationen (Summe der Distanzen, Durchschnitt, etc.)
- ✅ Updates von Einträgen (PATCH)
- ✅ Sichere Löschung mit Bestätigung
- ✅ Volltext-Suche in Namen und Notizen
📚 Dokumentation
- : Vollständige CRUD-Dokumentation mit Beispielen
- : Filter, Aggregationen und Suche
- : Directus-Filter Referenz
- : Test-App Dokumentation
🔧 Technische Details
Architektur
- FastMCP: Offizieller MCP Python SDK
- httpx: Asynchroner HTTP Client für API-Kommunikation
- pydantic: Datenvalidierung und -serialisierung
- python-dotenv: Umgebungsvariablen Management
API-Endpunkte
- Apps:
/api/apps/ - Categories:
/api/categories/ - Services:
/api/services/ - Resources:
/api/resources/ - Attributes:
/api/attributes/{resource_name}/ - Generics:
/api/generics/{resource_name}/
Authentifizierung
headers = {
"Authorization": f"Token {api_key}",
"Content-Type": "application/json"
}
🤝 Verwendung mit GitHub Copilot
Beispiel-Prompts
# App-Verwaltung
"Erstelle eine App namens 'Projektmanagement'"
"Liste alle Apps auf"
"Lösche die App mit ID abc-123"
# Service-Verwaltung
"Erstelle einen Service 'Tasks' in der App 'Projektmanagement'"
"Aktualisiere den Service-Titel zu 'Aufgaben'"
# Resource-Verwaltung
"Erstelle eine Resource 'Tickets' im Service 'Tasks'"
"Liste alle Resources auf"
# Daten-Management
"Erstelle einen neuen Laufeintrag mit 5km Distanz"
"Zeige alle Läufe über 10km"
"Berechne die Gesamtdistanz aller Läufe"
"Lösche den Eintrag mit ID xyz-789"
🚨 Wichtige Hinweise
Sicherheitsfeatures
- Lösch-Bestätigung: Alle DELETE-Operationen erfordern explizite Bestätigung
- Datenvalidierung: Vollständige Validierung aller Ein- und Ausgaben
- Fehlerbehandlung: Umfassende Fehlerbehandlung mit aussagekräftigen Meldungen
Bekannte Einschränkungen
- Attribut-Details (
get_attribute_details): API-Berechtigungsproblem (403 Forbidden) - Namens-Validierung: Dimetrics API lehnt lange Namen mit Underscores ab
- Prefix-Limite: Maximal 5 Zeichen für automatisch generierte Prefixes
Status: 🟢 Production Ready - Vollständige API-Integration mit 35 funktionalen Tools
4. Server starten
# MCP Server starten
python3 -m dimetrics_mcp_server
🔧 GitHub Copilot Integration
Fügen Sie diese Konfiguration zu Ihrem MCP Client hinzu:
{
"mcpServers": {
"dimetrics": {
"command": "python3",
"args": ["-m", "dimetrics_mcp_server"],
"cwd": "/path/to/mcp-server",
"env": {
"DIMETRICS_API_URL": "https://dimetrics.api.nc.released.services/api",
"DIMETRICS_API_KEY": "your_token_here"
}
}
}
}
💬 Beispiel-Anweisungen
"Erstelle eine App namens 'Stromverträge' mit dem Prefix 'power_'"
"Liste alle Apps auf, die 'MCP' enthalten"
"Zeige mir die Details der App mit ID xyz"
"Lösche die App mit der ID xyz"
🏗️ API Struktur
Der Server interagiert mit folgenden Dimetrics API Endpunkten:
# App erstellen
POST /apps/
{
"name": "App Name",
"title": "App Name",
"prefix": "app_",
"description": "Beschreibung"
}
# Apps auflisten
GET /apps/?search=suchbegriff
# App Details
GET /apps/{object_id}
# App löschen
DELETE /apps/{object_id}/
🧪 Entwicklung
Tests ausführen
# Minimaler Test (ohne API)
python3 test_minimal_new.py
# Vollständiger API Test
python3 test_dimetrics_api.py
Neue Tools hinzufügen
- Erweitern Sie
api_client.pyfür neue API-Endpunkte - Fügen Sie neue
@mcp.tool()Funktionen in__main__.pyhinzu - Testen Sie mit den Testskripten
� Basiert auf
📝 Nächste Schritte
Dieses minimale Beispiel kann schrittweise erweitert werden um:
- 📊 Tabellen Management (create_table, list_tables)
- 🔧 Attribut Management (create_attribute, list_attributes)
- 💾 Daten Management (CRUD-Operationen)
- 🎯 Erweiterte Features (Bulk-Operationen, Templates)
🎯 Status: Minimal-Implementation abgeschlossen
✅ App Management funktionsfähig
🔧 Bereit für schrittweise Erweiterung