itglue-mcp
{"type": "text"}# itglue-mcp
Schreibgeschützter MCP-Server über den IT-Glue-Mandanten von Example Corp / examplecorp (your-company.itglue.com). Beantwortet aus dem Chat „Was wissen wir über diesen Kunden?" und beantwortet „Was sind die Anmeldedaten für X?" mit einem IT-Glue-Link statt eines Geheimnisses.
Aufgebaut auf dem hauseigenen Remote-MCP-Standard: fastmcp-Ressourcenserver + Entra-ID-Authentifizierung, hinter Nginx Proxy Manager auf Portainer. Siehe ~/.claude/context/mcp-server-playbook.md.
Erkenntnisse aus der API- und Inhaltsprüfung, die dieses Design geprägt haben, finden Sie in FEASIBILITY.md. Lesen Sie §0 und §1, bevor Sie etwas ändern.
Die zwei Garantien
1. Es wird nie etwas in IT Glue geschrieben
Der verwendete API-Schlüssel hat volle Schreib- und Löschrechte. Verifiziert, nicht angenommen:
PATCH /configurations/999999999 -> 404 "Record not found"
PATCH /passwords/999999999 -> 404 "Record not found"
DELETE /configurations/999999999 -> 404Ein Schlüssel ohne Schreibberechtigung schlägt mit 401/403 fehl, bevor die Datensatzsuche stattfindet. Eine 404 bedeutet, dass die Mutation autorisiert war und lediglich nichts zu tun hatte. IT Glue gibt keine klassischen API-Schlüssel mit Lesebereich aus, daher gibt es keine serverseitige Berechtigung, auf die man sich stützen kann — die Garantie liegt vollständig in dieser Codebasis:
client.pystellt genau eine Anforderungsmethode bereit,get(), diemethod="GET"fest codiert.Es gibt keinen
post/patch/put/delete-Helfer. Einen hinzuzufügen ist eine Sicherheitsregression, kein Feature.Ein
WriteAttemptError-Auslöser feuert, wenn jemals ein Nicht-GET konstruiert wird.tests/smoke_local.pyprüft sowohl die fehlenden Methoden als auch die fehlenden Verben.
Wenn jemals ein Rückschreiben gebaut wird (FEASIBILITY.md Option C), erfolgt es in einem separaten Prozess mit einem separaten Schlüssel. Diese Trennung ist das gesamte Sicherheitsargument, denn IT-Glue-Dokumente sind kundenerstellter Text, den ein Modell zusammenfasst — also nicht vertrauenswürdige Eingabe.
2. Es wird nie ein Anmeldedatenwert zurückgegeben
itglue_find_credential gibt einen Zeiger zurück: den Namen der Anmeldedaten, die Kategorie, zu welchem Gerät sie gehören, wann sie zuletzt rotiert wurden, ob OTP aktiviert ist, und einen IT-Glue-Deep-Link. Der Mensch klickt auf den Link und meldet sich bei IT Glue an, um das Geheimnis zu enthüllen.
Feld | Zurückgegeben? | Warum |
| Nie | Nicht konfigurierbar. IT Glue verweigert diesem Schlüssel auch einen Wert ( |
| Nie | Nicht konfigurierbar. In diesem Mandanten hatten 15 von 25 Stichproben Notizen, und Passwortnotizen sind der Ort, an dem PINs und Wiederherstellungscodes leben. |
| Nie | TOTP-Seed / Selektor-Material. |
| Standardmäßig aus | Halbe Anmeldedaten. |
| Ja | Das ist das Ergebnis. |
Die Schwärzung erfolgt auf dem Weg in den Spiegel (redact.py), sodass kein nachgelagertes Tool ein Feld leaken kann, indem es vergisst, es zu entfernen. Datensätze, die IT Glue als restricted markiert, werden vollständig verworfen.
Related MCP server: invgate-mcp
Warum es einen lokalen Spiegel gibt
IT Glues filter[name] ist nur exakte Übereinstimmung, und einige Filter werden stillschweigend ignoriert statt abgelehnt:
Abfrage | Ergebnis |
| 1 |
| 0 |
| 0 |
| alle 318 Kontakte (Filter ignoriert) |
Die serverseitige Suche benötigt also entweder die exakte Zeichenfolge, die das Modell nicht hat, oder sie lügt still. Daher wird alles in den RAM gespiegelt und lokal durchsucht (search.py, index.py).
Sync-Kosten, gemessen: ~10 Anfragen für ~7.000 strukturierte Datensätze; ~400 Anfragen für 300 Dokumentkörper (95 Organisationslisten + Abrufe pro Dokument), bei einer Obergrenze von 3.000 pro 5 Minuten. Der Kern erwärmt sich in Sekunden; Dokumente erwärmen sich im Hintergrund über einige Minuten, und Dokumenttools melden status: indexing, anstatt zu hängen.
Es wird nichts auf der Festplatte gespeichert — der Korpus ist klein, sodass ein Neustart einfach neu synchronisiert und es keinen Fehlermodus für veralteten Cache gibt.
Die Suche ist bewusst nachsichtig, weil echte Abfragen wie „EF Vista Del Mar Unified Controller" aussehen: ein Akronym, ein vollständiger Name und ein Produkt, das in den Daten als Unifi geschrieben ist. Behandelt durch Akronymabgleich (EF → Example Foundation), Fuzzy-Abgleich pro Wort (unified ≈ unifi, Verhältnis 0,83), Subtraktion von Organisations-Tokens und atomare Identifikatorbehandlung, sodass 192.0.2.51 nicht in ['10','105','251'] zerlegt wird.
Werkzeuge
Werkzeug | Was es tut |
| Einen Namen/Akronym/Fragment zu Organisationen auflösen. Bei Mehrdeutigkeit zuerst verwenden. |
| Welche Anmeldedaten für ein Gerät/einen Dienst existieren + IT-Glue-Links. Nie ein Wert. |
| Volltextsuche über Dokumentkörper. Gibt Ausschnitt + letztes Aktualisierungsdatum + Link zurück. |
| Volltext eines Dokuments, HTML → Klartext. |
| Gerät nach Name, Hostname, IP, Seriennummer oder MAC. Durchsucht Konfigurationen und flexible Assets. |
| Ganzer Kunde in einem Aufruf: Standorte, Kontakte, Geräteanzahl, Dokumente, Domains, Abläufe. |
| Straßenadressen, Postleitzahlen, Telefone. Die saubersten Daten im Mandanten (79% vollständig). |
| E-Mails, Telefone, Titel; |
| Garantien, SSL, Domains — ablaufend oder überfällig. |
| Lückenbericht, schlimmste zuerst: fehlende Felder, keine Standortadresse, kein Technical Overview Sheet, Anmeldedaten seit 3+ Jahren nicht rotiert. |
| Konnektivität, Spiegel-Frische, Sicherheitslage. Führen Sie dies zuerst aus, wenn etwas nicht stimmt. |
Alle sind mit readOnlyHint: true annotiert.
Die Abfrage, für die dies gebaut wurde
„Was sind die Anmeldedaten für den Example Foundation UniFi-Controller?"
itglue_find_credential leitet die Organisation aus dem Satz ab, subtrahiert deren Namenswörter, führt einen Fuzzy-Abgleich von unified→unifi über 460 EF-Anmeldedatensätze durch und gibt fünf Zeiger zurück — die zwei auf dem aktuellen Unifi Controller (New Staging) und die drei älteren VDM_Cloudwifi-Anmeldungen — jeweils mit einem klickbaren Link, der Geräte-URL und dem Datum der letzten Rotation. Kein Geheimnis verlässt den Server.
Lokale Entwicklung
python -m venv .venv && .venv/Scripts/activate # Windows
pip install -r requirements.txt
cp .env.example .env # fill in ITGLUE_API_KEY; set MCP_AUTH_ENABLED=false
python -m itglue_mcpSetzen Sie niemals einen Server ohne Authentifizierung ein. MCP_AUTH_ENABLED=false ist nur für MCP Inspector auf localhost.
Smoke-Test (live, schreibgeschützt)
python tests/smoke_local.py47 Assertions gegen den Live-Mandanten. Liest ~/.claude/credentials/itglue.env, wenn ITGLUE_API_KEY nicht in der Umgebung gesetzt ist, und benötigt keine fastmcp-Installation. Die Anmeldedaten-Assertions sind die wichtigen — wenn eine fehlschlägt, stoppen und beheben, bevor Sie bereitstellen.
Bereitstellung
Entra-App + Gruppe + Token-Lebensdauer —
scripts/setup_entra_app.ps1(standardmäßig Trockenlauf;-Applyzum Ausführen). Stellt die App, die SicherheitsgruppeITGlue-MCP-Usersmit den fünf anfänglichen Mitgliedern, Zuweisungsdurchsetzung und eine 23h59m-Zugriffstoken-Lebensdauerrichtlinie bereit. Siehe docs/ENTRA_SETUP_CHECKLIST.md.Portainer-Stack + NPM — PORTAINER_DEPLOY.md. Host-Port 8111 (am 29.07.2026 auf
10.0.0.10als frei geprüft — 8100 und 8110 sind belegt). Öffentlicher Hostitglue-mcp.example.com.
Wartung
IT-Glue-Schlüssel rotieren — noch offen. Er liegt jetzt unter
~/.claude/credentials/itglue.envim hauseigenenKEY=VALUE-Format (migriert am 30.07.2026 von einer Klartext-Datei.itglueapicreds.txt), aber das war eine Formatänderung, keine Rotation — der Schlüsselwert ist unverändert. Er hat Schreib- und Löschrechte und lag für einen unbekannten Zeitraum in einer Klartext-.txt. Zum Rotieren: Erstellen Sie einen neuen Schlüssel in IT Glue → Konto → Einstellungen → API-Schlüssel, aktualisieren Sieitglue.envund denITGLUE_API_KEYdes Portainer-Stacks, und widerrufen Sie dann den alten.IT Glue widerruft automatisch API-Schlüssel, die 90+ Tage lang nicht verwendet wurden. Die Spiegelaktualisierung hält diesen warm; wenn der Server jemals geparkt wird, erwarten Sie beim Aufwachen eine 401.
Fügen Sie Zugriff über die Gruppe
ITGlue-MCP-Usershinzu und entfernen Sie ihn, nicht über den Code.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseAqualityNot gradedmaintenanceAn MCP server that enables LLMs to interact with IT Glue documentation, including organizations, configurations, passwords, and flexible assets. It provides tools for listing, creating, and updating managed service provider (MSP) data through the IT Glue API.31
- AlicenseAqualityCmaintenanceA read-only MCP server for InvGate Asset Management, enabling natural language queries for assets, people, computers, servers, software, and API health.12121MIT
- AlicenseAqualityCmaintenanceA read-only MCP server that enables AI assistants to query ServiceNow instances—incidents, changes, users, CMDB—with malformed query linting and injection protection.7MIT
- FlicenseNot gradedqualityCmaintenanceProvides read-only, citation-backed semantic search and retrieval-augmented generation over enterprise documents via standardized MCP tools, with local embeddings for privacy.
Related MCP Connectors
Search your AI chat history (ChatGPT, Claude, Codex) from any MCP client. Remote, private, read-only
Official Microsoft MCP Server to query Microsoft Entra data using natural language
Read-only MCP server for ClassQuill, a tutoring-business-management platform.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/JohnGilligan2/itglue-docs-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server