dimetrics-mcp-server

fellnerd/dimetrics-mcp-server

3.2

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.

Tools
4
Resources
0
Prompts
0

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

Werkportal MCP Server

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

ToolBeschreibungParameter
create_appErstellt eine neue Appname, description, prefix
list_appsListet alle Apps aufsearch, page_size, page, limit
get_app_detailsHolt App-Detailsobject_id
update_appAktualisiert eine Appobject_id, name, description, prefix
delete_appLöscht eine Appobject_id

📂 Category Management

ToolBeschreibungParameter
create_categoryErstellt eine neue Categoryname, description, prefix
list_categoriesListet alle Categories aufsearch, page_size, page, limit
get_category_detailsHolt Category-Detailsobject_id
update_categoryAktualisiert eine Categoryobject_id, name, description, prefix
delete_categoryLöscht eine Categoryobject_id

⚙️ Service Management

ToolBeschreibungParameter
create_serviceErstellt einen neuen Servicename, app_space, description, title, icon, etc.
list_servicesListet alle Services aufsearch, page_size, page, limit
get_service_detailsHolt Service-Detailsobject_id
update_serviceAktualisiert einen Serviceobject_id, name, title, description, etc.
delete_serviceLöscht einen Serviceobject_id

📊 Resource Management

ToolBeschreibungParameter
create_resourceErstellt eine neue Resourcename, service, description, title, icon, etc.
list_resourcesListet alle Resources aufsearch, page_size, page, limit
get_resource_detailsHolt Resource-Detailsobject_id
update_resourceAktualisiert eine Resourceobject_id, name, title, description, etc.
delete_resourceLöscht eine Resourceobject_id

🔧 Attribute Management

ToolBeschreibungParameter
list_attributesListet Attribute einer Resourceresource_name, search, page_size, page
get_attribute_detailsHolt Attribut-Detailsresource_name, attribute_id
create_attributeErstellt ein neues Attributresource_name, name, attribute_type, etc.
update_attributeAktualisiert ein Attributresource_name, attribute_id, name, etc.
delete_attributeLöscht ein Attributresource_name, attribute_id
create_attributes_bulkErstellt mehrere Attributeresource_name, attributes_json

💾 Generics API (Data CRUD)

ToolBeschreibungParameter
list_generic_entriesListet Einträge mit Filter/Aggregationresource_name, search, directus_filter_json, aggregate_json, etc.
create_generic_entryErstellt einen neuen Eintragresource_name, entry_data_json
get_generic_entryHolt einen spezifischen Eintragresource_name, entry_id
update_generic_entryAktualisiert einen Eintrag (PATCH)resource_name, entry_id, update_data_json
delete_generic_entryLöscht einen Eintragresource_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

  1. Erweitern Sie api_client.py für neue API-Endpunkte
  2. Fügen Sie neue @mcp.tool() Funktionen in __main__.py hinzu
  3. 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