oitvoip-mcp
oitvoip-mcp
MCP-Server für Oitvoip (gehostete VoIP/UCaaS-Reseller-Plattform, basierend auf NetSapiens — API-Host-Muster ist {tenant-pbx-host}/ns-api/). Stellt die Domain-, Reseller-, Geräte-, Subscriber- und CDR-Methoden der ns-api von NetSapiens als MCP-Tools bereit.
Hinweis zur Benennung: Die eigene Integration von MSPbots ist als „Oitvoip" registriert (
subjectCode=NS— kurz für NetSapiens); die zugrunde liegende API und die gesamte offizielle Dokumentation verwenden die Bezeichnungen „NetSapiens" / „ns-api". Dieser MCP deckt genau die 5 Methoden ab, die MSPbots selbst konfiguriert hat.
Überblick
Zustandsloser HTTP-Dienst. Es werden niemals Anmeldedaten gespeichert — jede Anfrage übermittelt ihre eigenen Anmeldedaten über Header, die nur für die Lebensdauer dieser einzelnen Anfrage verwendet werden.
Unterstützt parallele Anfragen; die Isolierung der Anmeldedaten pro Anfrage erfolgt über Pythons
contextvars, nicht über eine globale/geteilte Client-Instanz.Einstiegspunkte:
POST /mcp(MCP-Protokoll) undGET /health(Gesundheitsprüfung).Standardport:
8080(konfigurierbar überMCP_HTTP_PORT).
Related MCP server: whmcs-mcp-server
Authentifizierung
NetSapiens verwendet das standardmäßige OAuth2-Password-Grant-Verfahren:
POST https://{site}/ns-api/oauth2/token/
grant_type=password&client_id=...&client_secret=...&username=...&password=...
-> {"access_token": "...", "expires_in": 3600, "token_type": "Bearer", ...}Das resultierende access_token ist 1 Stunde gültig, aber dieser Server authentifiziert sich bei jedem einzelnen Tool-Aufruf neu, anstatt es über MCP-Anfragen hinweg zwischenzuspeichern — es wird nichts zwischengespeichert oder persistiert. Jeder echte ns-api-Aufruf sendet dann Authorization: Bearer <access_token>.
Header-Parameter für die Autorisierung
Header | Typ | Erforderlich | Standardwert | Enum-Werte | Feldbeschreibung | Beispiel |
| string | Ja | Kein | Keine | PBX-Hostname des Mandanten (ohne Protokollpräfix) |
|
| string | Ja | Kein | Keine | NetSapiens OAuth2 API Client ID |
|
| string | Ja | Kein | Keine | NetSapiens OAuth2 API Client Secret |
|
| string | Ja | Kein | Keine | Subscriber-Anmeldename (mit Domänensuffix) |
|
| string | Ja | Kein | Keine | Zugehöriges Passwort |
|
Fehlt einer der Header, wird 401 zurückgegeben:
{
"error": "Missing credentials",
"message": "This server requires the X-Oitvoip-Site, X-Oitvoip-Client-Id, X-Oitvoip-Client-Secret, X-Oitvoip-Username, X-Oitvoip-Password headers",
"required_headers": ["X-Oitvoip-Site", "X-Oitvoip-Client-Id", "X-Oitvoip-Client-Secret", "X-Oitvoip-Username", "X-Oitvoip-Password"],
"optional_headers": []
}Eine ungültige Anmeldeinformation oder ein authentifiziertes, aber nicht ausreichend berechtigtes Subscriber-Konto erscheint als unauthorized-Fehler-Envelope auf Tool-Ebene (die Meldung enthält die eigene Detailangabe des Anbieters, z. B. Invalid Scope [APP001]), nicht als HTTP-Fehler dieses Servers — siehe „Bekannte Lücken".
Umgebungsvariablen
Variable | Typ | Erforderlich | Standardwert | Beschreibung |
| int | Nein |
| HTTP-Listener-Port |
| string | Nein |
| HTTP-Listener-Adresse |
MCP-Endpunkt
POST /mcp— MCP-Protokoll (streambarer HTTP-Transport)GET /health— Gesundheitsprüfung, gibt{"status": "ok"}zurück (reine lokale Prüfung, ruft die Anbieter-API nicht auf)
Tool-Liste
Tool | Funktion | Parameter |
| Listet alle bereitgestellten Domänen (Mandanten) des Reseller-Kontos auf | Keine |
| Ruft die Details auf Reseller-Ebene für die angegebene Domäne ab |
|
| Listet die unter der angegebenen Domäne registrierten SIP-Geräte/-Endpunkte auf |
|
| Listet die Benutzer/Nebenstellen der angegebenen Domäne auf |
|
| Ruft die Gesprächsdatensätze (CDR) für die angegebene Domäne und den angegebenen Datumsbereich ab |
|
Die Antworten sind die JSON-Antworten des Anbieters (Array oder Objekt, je nach Methode), kompakt serialisiert (ohne Einrückung, ensure_ascii=False). Wenn eine Antwort ~20.000 Zeichen überschreiten würde, wird das größte Listenfeld gekürzt und das Ergebnis enthält truncated: true sowie die ursprüngliche Anzahl, anstatt einen unbegrenzten Datenblock zurückzugeben. Alle 5 Tools sind schreibgeschützt (readOnlyHint) — es gibt keine Schreib-/Lösch-Tools in diesem Dienst.
Im Fehlerfall geben die Tools einen strukturierten JSON-Fehler-Envelope zurück, anstatt eine Ausnahme auszulösen:
{"error": {"code": "unauthorized", "message": "...", "retryable": false}}code ist einer der Werte not_configured / unauthorized / not_found / invalid_argument / rate_limited / upstream_error; retryable gibt an, ob der Agent bedenkenlos erneut versuchen darf (true für rate_limited und upstream_error).
Testbeispiel
# Health check
curl -s http://localhost:8080/health
# Call a tool via the MCP protocol (streamable HTTP) — requires an
# initialize handshake first per the MCP spec; abbreviated example below
# shows the tool-call request body only:
curl -s -X POST http://localhost:8080/mcp \
-H "X-Oitvoip-Site: pbx.example.com" \
-H "X-Oitvoip-Client-Id: 58900.mspbot" \
-H "X-Oitvoip-Client-Secret: <your-client-secret>" \
-H "X-Oitvoip-Username: 1000@example" \
-H "X-Oitvoip-Password: <your-password>" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "mcp-session-id: <session-id-from-initialize>" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "oitvoip_get_subscribers",
"arguments": {"domain": "example.58900.service"}
}
}'Live-verifiziert (2026-07-30) gegen einen echten Mandanten: Alle 5 Tools wurden über diesen laufenden Server End-to-End aufgerufen: oitvoip_get_subscribers lieferte echte Subscriber-/Nebenstellen-Datensätze; oitvoip_get_devices lieferte echte registrierte SIP-Geräte (Polycom-Endpunkte, Live-Registrierungsstatus); oitvoip_get_cdr2 lieferte echte Gesprächsdatensätze für den angegebenen Datumsbereich. oitvoip_get_domains und oitvoip_get_resellers erreichten die API korrekt und lieferten einen klaren, erwarteten 401 Invalid Scope [APP001]-Fehler auf Tool-Ebene — die bereitgestellten Test-Anmeldedaten sind ein Konto auf Subscriber-Ebene (scope: "Office Manager"), das auf dieser speziellen NetSapiens-Instanz keine Admin-Rechte für Domänen/Reseller besitzt; siehe „Bekannte Lücken".
API-Referenz
Öffentlich, keine Anmeldung erforderlich: https://api.ucaasnetwork.com/ns-api/apidoc/ (vollständige ns-api-Referenz, einschließlich der OAuth2-, Domain-, Reseller-, Device-, Subscriber- und CDR-Objekte)
Bekannte Lücken
Der Umfang entspricht exakt den 5 von MSPbots konfigurierten Endpunkten, nicht der vollständigen API-Oberfläche des Anbieters — ns-api deckt außerdem Callqueue, Agent, Phonenumber, Dialplan, Contacts, Presence, Call Queue Report/Stat, Echtzeit-Anrufsteuerung und mehr ab (gemäß der eigenen Objektliste der öffentlichen Dokumentation); diese fallen hier nicht in den Umfang.
oitvoip_get_domainsundoitvoip_get_resellerskonnten nicht vollständig mit echten Daten live verifiziert werden — das bereitgestellte Testkonto authentifiziert sich erfolgreich (was beweist, dass der OAuth2-Ablauf und diese Implementierung korrekt sind), ist aber auf eine „Office Manager"-Rolle auf Subscriber-Ebene beschränkt, die NetSapiens für diese beiden Objekte auf Admin-Ebene mit401 Invalid Scope [APP001]ablehnt. Dies ist eine bere
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
- AlicenseNot gradedqualityDmaintenanceMCP Server that integrates various Vonage APIs as MCP tools, to make it easier for developers to work with and create Vonage applications.653Apache 2.0
- AlicenseBqualityBmaintenanceMCP server to help manage a WHMCS installation.623919MIT
- AlicenseNot gradedqualityAmaintenanceAn MCP server for the NinjaOne RMM platform, enabling tools to manage devices, organizations, alerts, jobs, and policies through NinjaOne's API.23Apache 2.0
- AlicenseBqualityAmaintenanceMCP server for Sherweb Partner API - distributor billing, service provider management, customer subscriptions, and payable charges11Apache 2.0
Related MCP Connectors
MCP Server for agents to onboard, pay, and provision services autonomously with InFlow
An MCP server that let you interact with Cycloid.io Internal Development Portal and Platform
MCP server for Vonage API documentation, code snippets, tutorials, and troubleshooting.
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/MSPbotsAI/oitvoip-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server