Skip to main content
Glama

MCPController

MCPController ist eine MCP-Anwendung zur Verwaltung von Ärzten mit einem einzigen Administrator. ChatGPT verbindet sich über OAuth 2.1 mit PKCE, der Administrator meldet sich an, wählt aus, welche Arztberechtigungen er erteilen möchte, und der MCP-Server stellt Arzt-Tools bereit, die von MongoDB unterstützt werden.

Architektur

ChatGPT
  ↓
OAuth
  ↓
Admin Login
  ↓
Admin Consent
  ↓
Granted Permissions
  ↓
MCP Access Token
  ↓
MCP /mcp
  ↓
Permission Check
  ↓
Doctor Tools
  ↓
MongoDB

Related MCP server: GPT MCP Service

Was diese App tut

  • Ein Administrator besitzt das gesamte System.

  • Es gibt keine öffentliche Registrierung und keinen Multi-User-Kontowechsel.

  • Der Administrator authentifiziert sich mit Anmeldedaten aus Umgebungsvariablen.

  • Der Zustimmungsbildschirm ermöglicht es dem Administrator, doctor:read, doctor:write und doctor:delete zu genehmigen.

  • Der MCP-Server prüft die genehmigten Bereiche bei jedem Tool-Aufruf erneut.

  • Arztdaten werden über ein einfaches Mongoose-Modell in MongoDB gespeichert.

Authentifizierung

Die Browser-Sitzung ist vom MCP-Bearer-Token getrennt.

  • Browser-Sitzung: HTTP-only-Cookie für die Admin-Oberfläche und den Zustimmungsbildschirm.

  • MCP-Zugriffstoken: Bearer-Token, das von ChatGPT gegen /mcp verwendet wird.

  • OAuth verwendet den Autorisierungscode-Flow mit PKCE.

  • Autorisierungscodes sind einmalig verwendbar und kurzlebig.

  • Zugriffstokens und Refresh-Tokens werden vor der Speicherung gehasht.

Der Admin-Login verwendet ADMIN_EMAIL und ADMIN_PASSWORD aus .env.

Arztverwaltung

Das Domänenmodell ist bewusst klein gehalten:

  • name - erforderliche Zeichenkette

  • specialization - erforderliche Zeichenkette

  • createdAt / updatedAt - von Mongoose-Zeitstempeln verwaltet

Die Arzt-CRUD-Operationen sind in einer Service-Schicht implementiert und werden sowohl von der REST-Admin-API als auch von der MCP-Tool-Schicht verwendet.

OAuth-Ablauf

  1. ChatGPT öffnet den Autorisierungs-Endpunkt.

  2. Wenn der Administrator nicht authentifiziert ist, geht der Browser zu /login.

  3. Der Administrator meldet sich an.

  4. Die Zustimmungsseite zeigt die angeforderten Arztberechtigungen.

  5. Der Administrator genehmigt eine Teilmenge oder lehnt die Anfrage ab.

  6. Der Autorisierungscode wird gegen ein Zugriffstoken eingetauscht.

  7. ChatGPT verwendet dieses Token auf /mcp.

Berechtigungsablauf

Angeforderte Bereiche werden wie folgt auf MCP-Tools abgebildet:

  • doctor:readlist_doctors, get_doctor

  • doctor:writeadd_doctor, update_doctor

  • doctor:deletedelete_doctor

Das Backend erzwingt Berechtigungen zweimal:

  • OAuth schreibt nur genehmigte Bereiche in den Autorisierungscode und das Token.

  • Jedes MCP-Tool prüft die Token-Bereiche, bevor es MongoDB berührt.

MCP-Tools

Tool

Bereich

Verhalten

list_doctors

doctor:read

Gibt alle Ärzte zurück

get_doctor

doctor:read

Gibt einen Arzt anhand der doctorId zurück

add_doctor

doctor:write

Erstellt einen Arzt mit name und specialization

update_doctor

doctor:write

Aktualisiert einen Arzt anhand der doctorId

delete_doctor

doctor:delete

Löscht einen Arzt anhand der doctorId

Umgebungsvariablen

Verwenden Sie eine .env-Datei im Projektstamm. Die Anwendung lädt sie aus dem Projektstamm.

Erforderliche Werte für lokales npm run dev (Vite auf 5173, API auf 3000):

NODE_ENV=development
PORT=3000
APP_URL=http://localhost:5173
API_URL=http://localhost:3000
MONGODB_URI=mongodb://127.0.0.1:27017/mcpcontroller
ADMIN_EMAIL=admin@example.com
ADMIN_PASSWORD=change-this-password
JWT_SECRET=change-this-to-a-long-random-secret
MCP_SERVER_NAME=MCPController
MCP_SERVER_VERSION=1.0.0

Der Code unterstützt auch Variablen für Token-/Sitzungslebensdauer mit sicheren Standardwerten:

  • JWT_EXPIRES_IN

  • AUTH_CODE_TTL_SECONDS

  • ACCESS_TOKEN_TTL_SECONDS

  • REFRESH_TOKEN_TTL_SECONDS

Auf Vercel müssen APP_URL und API_URL beide die öffentliche HTTPS-Origin sein (siehe Bereitstellung unten).

Lokale Einrichtung

  1. Abhängigkeiten installieren:

npm install
  1. MongoDB lokal starten.

  2. Beispieldaten einfügen:

npm run seed
  1. Die App starten:

npm run dev

In der Entwicklung läuft der React-Client über Vite und leitet API-Anfragen an das Backend weiter.

Testen

Führen Sie die automatisierten Prüfungen aus mit:

npm test

Führen Sie den Client-Build aus mit:

npm run build

Die aktuelle Testsuite umfasst:

  • Admin-Login

  • Registrierung deaktiviert

  • Arztmodell und CRUD-Service

  • OAuth-Bereichsgenehmigung

  • MCP-Tool-Berechtigungsdurchsetzung

  • Token-Widerruf

ChatGPT verbinden

Verwenden Sie die vom Server bereitgestellte Autorisierungs-URL:

  • /.well-known/oauth-authorization-server

  • /.well-known/oauth-protected-resource

  • /oauth/token

  • /mcp

Typischer Ablauf:

  1. ChatGPT entdeckt die OAuth-Metadaten.

  2. ChatGPT fordert die Autorisierung für die MCP-Ressource an.

  3. Der Browser leitet zum Admin-Login-Bildschirm weiter.

  4. Der Administrator überprüft die Berechtigungen und klickt auf Allow & Connect.

  5. ChatGPT tauscht den Code gegen Tokens ein.

  6. ChatGPT ruft die MCP-Tools mit dem Bearer-Token auf.

Bereitstellung

Die App ist eine einzige Origin: Express bedient /api, /oauth, /mcp, OAuth-Discovery und den React-Build.

Vercel

Dieses Repository enthält bereits vercel.json und api/index.js. Vercel führt die Express-App als eine serverlose Funktion aus und schreibt jeden Pfad darauf um.

1. MongoDB Atlas

  1. Erstellen Sie einen Cluster (kostenloses M0 ist ausreichend).

  2. Erstellen Sie einen Datenbankbenutzer.

  3. Netzwerkzugriff: Erlauben Sie 0.0.0.0/0, damit Vercel eine Verbindung herstellen kann (oder fügen Sie bei Bedarf Vercel-IPs hinzu).

  4. Kopieren Sie die Verbindungszeichenfolge, zum Beispiel:

mongodb+srv://USER:PASSWORD@cluster0.xxxxx.mongodb.net/mcpcontroller?retryWrites=true&w=majority

2. Projekt bereitstellen

  • Pushen Sie dieses Repository nach GitHub.

  • Importieren Sie das Repository in Vercel.

  • Framework-Preset: Other (lassen Sie es). vercel.json legt Installation und Build fest.

  • Root-Verzeichnis: Lassen Sie es als Repository-Stamm (setzen Sie es nicht auf client oder server).

  • Node.js-Version: 20.x oder neuer.

3. Umgebungsvariablen in Vercel

Projekt → Einstellungen → Umgebungsvariablen. Setzen Sie sie für Production (und Preview, wenn Sie Preview-URLs verwenden).

Name

Beispiel

Hinweise

NODE_ENV

production

Vercel setzt dies normalerweise automatisch.

APP_URL

https://your-app.vercel.app

Kein abschließender Schrägstrich. Muss mit der Live-Origin übereinstimmen.

API_URL

https://your-app.vercel.app

Gleicher Wert wie APP_URL auf Vercel.

MONGODB_URI

mongodb+srv://…/mcpcontroller

Atlas-URI.

ADMIN_EMAIL

Ihre Admin-E-Mail

Wird für die Anmeldung an der Zustimmungs-UI verwendet.

ADMIN_PASSWORD

ein starkes Passwort

Wird beim Login verglichen; wird nie an den Browser gesendet.

JWT_SECRET

lange zufällige Zeichenkette

Signierung des Sitzungs-Cookies. Verwenden Sie nicht die Beispielwerte.

JWT_EXPIRES_IN

7d

Optional.

AUTH_CODE_TTL_SECONDS

120

Optional.

ACCESS_TOKEN_TTL_SECONDS

3600

Optional.

REFRESH_TOKEN_TTL_SECONDS

2592000

Optional.

MCP_SERVER_NAME

MCPController

Optional.

MCP_SERVER_VERSION

1.0.0

Optional.

Setzen Sie ADMIN_PASSWORD oder JWT_SECRET nicht in die React-App. Der Client kommuniziert nur mit /api.

Wenn Sie später eine benutzerdefinierte Domain hinzufügen, ändern Sie APP_URL und API_URL auf https://your-domain.com und stellen Sie erneut bereit.

Generieren Sie JWT_SECRET mit:

node -e "console.log(require('crypto').randomBytes(48).toString('hex'))"

4. Erste Bereitstellung und Seed

  1. Bereitstellen.

  2. Öffnen Sie https://your-app.vercel.app/api/health – Sie sollten { "ok": true, ... } sehen.

  3. Seeden Sie MongoDB von Ihrem Rechner aus, gerichtet auf Atlas (nicht auf Vercels serverlose Funktion):

# In the project root, temporarily set MONGODB_URI to the Atlas URI in .env
npm run seed

Der Seed erstellt die Admin-Benutzerzeile, Beispieldaten für Ärzte und einen lokalen MCP-Inspector-Client. Melden Sie sich danach auf der Live-Site mit ADMIN_EMAIL / ADMIN_PASSWORD an.

5. ChatGPT verbinden

Verwenden Sie die bereitgestellte Origin:

  • https://your-app.vercel.app/.well-known/oauth-authorization-server

  • https://your-app.vercel.app/.well-known/oauth-protected-resource

  • https://your-app.vercel.app/mcp

Fügen Sie in ChatGPT (oder MCP Inspector) diese MCP-URL hinzu. ChatGPT öffnet die Login- und Zustimmungsbildschirme auf derselben Domain und ruft dann /mcp mit einem Bearer-Token auf.

CLI-Bereitstellung (optional)

npm i -g vercel
vercel login
vercel env pull   # optional: sync env locally
vercel --prod

Nach der ersten Produktionsbereitstellung kopieren Sie die URL in APP_URL und API_URL, falls Sie einen Platzhalter verwendet haben, und stellen Sie erneut bereit, damit die OAuth-Metadaten auf die echte Origin zeigen.

Sicherheitshinweise

  • Setzen Sie ADMIN_PASSWORD oder JWT_SECRET nicht dem Browser aus.

  • Bewahren Sie OAuth-Tokens gehasht in der Datenbank auf.

  • Genehmigen Sie nur die Bereiche, die der Administrator tatsächlich von ChatGPT verwenden lassen möchte.

  • Widerrufen Sie den Zugriff, wenn die Verbindung nicht mehr vertrauenswürdig sein soll.

  • Der Admin-Login dient nur dazu, ChatGPT zu autorisieren und Arztdaten zu verwalten; es gibt keinen öffentlichen Anmeldeablauf.

Seed-Daten

Das Seed-Skript erstellt:

  • Beispieldaten für Ärzte

  • einen Beispiel-OAuth-Client für die lokale Inspector-Nutzung

Es erstellt keine Demo-Benutzer und codiert keine Admin-Anmeldedaten fest.

F
license - not found
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

View all related MCP servers

Related MCP Connectors

  • Odoo ERP for AI agents: hosted OAuth endpoint, gated writes, one endpoint for every instance.

  • Self-hosted federated MCP gateway: one OAuth 2.1 MCP server in front of N apps, user-level scopes.

  • MCP server for Argo RPG Platform — connects AI assistants to campaign data via OAuth2

View all MCP Connectors

Latest Blog Posts

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/im-Saqib-Nawab/MCPController'

If you have feedback or need assistance with the MCP directory API, please join our Discord server