Skip to main content
Glama
Haseeb-Ahmed-AI

customer-data-mcp

mcp-oracle-claude desktop

Ein lokaler MCP-Server (Model Context Protocol), der Kundendaten als abfragbare Tools bereitstellt, sodass Claude natürliche Sprachfragen über Kunden beantworten kann, indem er diesen Server direkt aufruft.

Derzeit sind die Daten lokal gemockt (data/customers.json, 28 fiktive Kundendatensätze mit Bestellhistorie). Später lässt sich die Mock-Datenschicht durch eine echte Verbindung zu Oracle AI Agent Studio ersetzen, ohne den MCP-Toolcode anzufassen – siehe Umstieg auf Oracle AI Agent Studio weiter unten.

Was dieses Projekt macht

Es ist ein stdio-basierter MCP-Server mit fünf Tools:

Tool

Was es tut

search_customers

Suche nach Name, E-Mail oder Firma (Teilübereinstimmung)

get_customer_details

Vollständiges Profil eines Kunden anhand der exakten ID

get_customer_orders

Bestellhistorie eines Kunden

list_customers_by_status

Kunden nach Status filtern: aktiv / inaktiv / abgewandert

get_customer_stats

Gesamtausgaben, Anzahl der Bestellungen, durchschnittlicher Bestellwert für einen Kunden

Sobald er in Claude Desktop als benutzerdefinierter Connector registriert ist, kann Claude diese Tools eigenständig aufrufen, um Fragen zu beantworten wie „Welche Kunden sind abgewandert?" oder „Was hat John Smith bestellt?"

Projektstruktur

/mcp-oracle-demo
  /data
    customers.json          # mock customer + order data
  /src
    data_source.ts          # ONLY file that touches raw data — the Oracle swap point
    server.ts                # MCP server entry point, registers all tools
    tools/
      search_customers.ts
      get_customer_details.ts
      get_customer_orders.ts
      list_customers_by_status.ts
      get_customer_stats.ts
  /test
    test_data_source.ts     # manual test walkthrough (npm test)
  package.json
  tsconfig.json
  README.md

Lokal installieren und ausführen

Erfordert Node.js 18+.

cd mcp-oracle-demo
npm install
npm run build      # compiles src/ -> dist/
npm start           # runs the compiled server over stdio

Für die lokale Entwicklung ohne Build-Schritt:

npm run dev          # runs src/server.ts directly via tsx

Um zu prüfen, ob alles funktioniert, bevor du es in Claude Desktop einbindest, führe den Test-Durchlauf aus, der die Datenzugriffsschicht und jeden Tool-Handler durchspielt und pro Check PASS/FAIL ausgibt:

npm test

Ein stdio-MCP-Server gibt von sich aus nichts auf stdout aus (stdout ist für den Protokollstream reserviert) – sobald er startet, siehst du auf stderr eine Zeile customer-data-mcp server running on stdio, und anschließend wartet er auf einen Client (wie Claude Desktop), der sich verbindet.

In Claude Desktop registrieren

Füge einen Eintrag zu deiner claude_desktop_config.json hinzu (Claude-Desktop-Menü → Einstellungen → Entwickler → Konfiguration bearbeiten), der auf den kompilierten Server verweist:

{
  "mcpServers": {
    "customer-data": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-oracle-demo/dist/server.js"]
    }
  }
}

Verwende einen absoluten Pfad – Claude Desktop startet den Prozess aus seinem eigenen Arbeitsverzeichnis, nicht aus dem Projektordner. Starte Claude Desktop nach dem Speichern der Konfiguration neu, und du solltest „customer-data" als verbundene Tool-Quelle aufgelistet sehen (halte in einem neuen Chat Ausschau nach dem 🔌 / Tools-Symbol).

Beispielfragen zum Ausprobieren, sobald die Verbindung steht

  • „Zeig mir alle aktiven Kunden."

  • „Was hat [Kundenname] bestellt?"

  • „Welche Kunden sind abgewandert?"

  • „Wie viel hat Kunde CUST-0012 bei uns ausgegeben, und wie hoch ist sein durchschnittlicher Bestellwert?"

  • „Finde Kunden bei Acme Co."

Umstieg auf Oracle AI Agent Studio

src/data_source.ts ist die einzige Datei, die rohe Kundendaten berührt. Jedes MCP-Tool ruft die daraus exportierten Funktionen (getCustomerById, searchCustomers, getCustomerOrders, getCustomersByStatus, getCustomerStats) auf, statt die JSON-Datei direkt zu lesen – die spätere Anbindung an das echte Backend bedeutet also, diese eine Datei zu bearbeiten und nicht die Tool-Definitionen oder den Server.

Was innerhalb von data_source.ts geändert werden müsste:

  1. Authentifizierung – einen Token-Flow (z. B. OAuth-Client-Credentials oder API-Key) für die API von Oracle AI Agent Studio hinzufügen; die Zugangsdaten sollten voraussichtlich aus Umgebungsvariablen statt als hartkodierte Werte gelesen werden, dazu ein kurzlebiger Token-Cache, damit wir uns nicht bei jedem Aufruf neu anmelden.

  2. Den lokalen JSON-Datelesevorgang ersetzen (loadCustomers()) durch authentifizierte REST-Aufrufe an die Endpunkte von Oracle – z. B. GET /customers/{id}, GET /customers/search?q=..., GET /customers?status=... – und die Antwort-Struktur von Oracle auf die bereits in dieser Datei definierten TypeScript-Interfaceschachteln Customer / Order abbilden (oder die Interfaces anpassen, falls das Oracle Schema abweicht).

  3. Fehlerbehandlung – Eine echte API kann Zeitüberschreitungen, Rate Limits oder Fehler verursachen, die beim Lesen einer lokalen Datei nie auftreten; also try/catch-Blöcke ergänzen und klare Fehlermeldungen bereitstellen, die die Tools an Claude zurückgeben.

  4. Caching – Der aktuelle In-Memory-Cache setzt statische une Daten voraus; bei einem echten Backend sollte er entweder entfernt werden.

Die vollständigen Details zu jedem dieser Punkte sind außerdem direkt am Ende von src/data_source.ts auskommentiert.

Tests

npm test führt test/test_data_source.ts aus, das:

  • Jede Funktion von data_source.ts direkt aufruft und die Ergebnisse gegen bekannte Eigenschaften der Mock-Daten prüft (z. B. löst eine bekannte Kunden-ID auf, eine kann null zurückgeben, die Suche ist nicht case-sensitive).

  • Die Handler-Funktion jedes Tools ruft direkt (unter Umgehung des MCP-Transports) auf und prüft, dass das zurückgegebene JSON wohlgeformt ist und mit den zugrunde liegenden Daten übereinstimmt.

Dies ist ein einfaches Skript (kein Test-Framework), damit es leicht Zeile für Zeile zu lesen und in einer Screen-Sharing-Demo erklären lässt.

Let's check for typos and grammar:

  • diese ist ein einfaches Skript — from final "Dies ist..." okay.

  • "ruft erneut ... auf" - no, this is "Calls every tool's handler function", so "Es ruft die Handler-Funktion..." Better.

  • "Das ... das:" Structure: "das:" + lists. My bullet phrases end with comma "das:"? Actually I wrote "* Jede Funktion ... aufruft und ... prüft..." and "* Die Handler-Funktion ... ruft ... und prüft, ..." — because the relative pronoun "das" requires verb-final: "Jede Funktion ... direkt aufruft und ... prüft"; "Die Handler-Funktion jedes Tools direkt aufruft ... und prüft". Good.

  • "über CASE cannot" - no.

  • In "Fehlerbehandlung" list: "zurückgeben kann" should be "die the Tobias" — okay.

  • "Kunden-ID ... liefert null zurück" — fine.

  • "bietet unter Wasser" no.

  • In the table row, maybe use "E-Mail" etc.

  • Need to preserve "Order history for one customer" "Bestellhistoire eines Kundens" okay.

Now check if "logged-in" etc.

Potential punctuation: German typographic quotes: I use „ und ". Some clusters: after «„Welche ...?"» I used the closing quote correctly: "?“, Actually German opening and closing: „Welche ...?" then blank? In Markdown, I used „Welche Kunden sind abgewandert?" – the closing is the same as opening if I haven't typed the closing quote; I typed „...?" — To close, need " before the comma? Let me set the quotes properly:

  • Opening: "…" is something. German: „…" — low opening double quote (U+201E), and closing „ (U+201C) typically appearing like high-9 quote “. In my draft I used rechtsdrehung maybe ne. In Unicode: „ (U+201E), " (U+201C). I'll use pairs: „Welche Kunden sind abgewandert?"; " is the closing quote. So I have that. But in some earlier I wrote "sind abgewandert?"} — it has the double quote " after "?", which is actually the straight quote, not the German closing quote. If I intended German, I should use the curly closing quote in code. Since I can't guarantee U+201C in my output? I can type " but that is same as straight quote. The user didn't require curly. In the final, I'll use plain straight quotation marks to avoid any issue. This is safer and preserves the original underline. Let me redo all quotes as plain ASCII straight quotes (") — the original uses them. So the German doc would have straight double quotes around examples. It's acceptable. I'll change all to ASCII to reduce Unicode issues. The instruction says preserving exact doc; quotes should follow original style. OK.

So final: "Welche Kunden ...?" not „...??". Also the placeholder \[...\]. Let me normalize in final output with double straight ASCII quotes.

Note: The "mcp-oracle" title is all in H1. Good.

Let me reconstruct the final final with ASCII quotes and ensure "PASS/FAIL" is correct.

I will output now.

Wait: Consider the exact phrase "Manager? Sveitating" — no.

Let me also recheck the original "churned" in section: "Filter customers by status: active / inactive / churned" — I translated.

One potential issue: "customer can answer language" etc.

I am done.

Final message below# mcp-oracle-claude desktop

Ein lokaler MCP-Server (Model Context Protocol), der Kundendaten als abfragbare Tools bereitstellt, sodass Claude natürliche Sprachfragen über Kunden beantworten kann, indem er diesen Server direkt aufruft.

Derzeit sind die Daten lokal gemockt (data/customers.json, 28 fiktive Kundendatensätze mit Bestellhistorie). Später lässt sich die Mock-Datenschicht durch eine echte Verbindung zu Oracle AI Agent Studio ersetzen, ohne den MCP-Toolcode anzufassen – siehe Umstieg auf Oracle AI Agent Studio weiter unten.

Was dieses Projekt macht

Es ist ein stdio-basierter MCP-Server mit fünf Tools:

Tool

Was es tut

search_customers

Suche nach Name, E-Mail oder Firma (Teilübereinstimmung)

get_customer_details

Vollständiges Profil für einen Kunden anhand der exakten ID

get_customer_orders

Bestellhistorie für einen Kunden

list_customers_by_status

Kunden nach Status filtern: aktiv / inaktiv / abgewandert

get_customer_stats

Gesamtausgaben, Anzahl der Bestellungen, durchschnittlicher Bestellwert für einen Kunden

Sobald er in Claude Desktop als benutzerdefinierter Connector registriert ist, kann Claude diese Tools eigenständig aufrufen, um Fragen zu beantworten wie "Welche Kunden sind abgewandert?" oder "Was hat John Smith bestellt?"

Projektstruktur

/mcp-oracle-demo
  /data
    customers.json          # mock customer + order data
  /src
    data_source.ts          # ONLY file that touches raw data — the Oracle swap point
    server.ts                # MCP server entry point, registers all tools
    tools/
      search_customers.ts
      get_customer_details.ts
      get_customer_orders.ts
      list_customers_by_status.ts
      get_customer_stats.ts
  /test
    test_data_source.ts     # manual test walkthrough (npm test)
  package.json
  tsconfig.json
  README.md

Lokal installieren und ausführen

Erfordert Node.js 18+.

cd mcp-oracle-demo
npm install
npm run build      # compiles src/ -> dist/
npm start           # runs the compiled server over stdio

Für die lokale Entwicklung ohne Build-Schritt:

npm run dev          # runs src/server.ts directly via tsx

Um zu prüfen, ob alles funktioniert, bevor du es in Claude Desktop einbindest, führe den Test-Durchlauf aus, der die Datenzugriffsschicht und jeden Tool-Handler durchspielt und jede Prüfung mit PASS/FAIL markiert:

npm test

Ein stdio-verbindender MCP-Server gibt von sich aus nichts auf stdout aus (stdout ist für den Protokollstream reserviert) – sobald er startet, siehst du eine Zeile customer-data-mcp server running on stdio auf stderr, und danach wartet er darauf, dass sich ein Client (wie Claude Desktop) verbindet.

In Claude Desktop registrieren

Füge einen Eintrag zu deiner claude_desktop_config.json hinzu (Claude-Desktop-Menü → Einstellungen → Entwickler → Konfiguration bearbeiten), der auf den kompilierten Server verweist:

{
  "mcpServers": {
    "customer-data": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-oracle-demo/dist/server.js"]
    }
  }
}

Verwende einen absoluten Pfad – Claude Desktop startet den Prozess aus seinem eigenen Arbeitsverzeichnis, nicht aus dem Projektordner. Starte Claude Desktop nach dem Speichern der Konfiguration neu, und sollte "customer-data" als verbundene Tool-Quelle erscheinen und in einem neuen Chat nachschauen (halte nach dem 🔌 / Tools-Symbol Ausschau).

Beispielfragen zum Ausprobieren, sobald die Verbindung steht

  • "Zeig mir alle aktiven Kunden."

  • "Was hat [Kundenname] bestellt?"

  • "Welche Kunden sind abgewandert?"

  • "Wie viel hat Kunde CUST-0012 bin uns ausgegeben, und wie hoch ist sein durchschnittlicher Bestellwert?"

  • "Finde Kunden bei Acme Co."

Umstieg auf Oracle AI Agent Studio

src/data_source.ts ist die einzige Datei, die rohe Kundendaten berührt. Jedes MCP-Tool ruft die aus Datei exportierten Funktionen (getCustomerById, searchCustomers, getCustomerOrders, getCustomersByStatus, getCustomerStats) auf, statt die JSON-Datei direkt zu lesen – die spätere Anbindung an das echte Backend bedeutet also, nur diese Datei zu bearbeiten, nicht die Tool-Definitionen oder den Server.

Eingehen auf die Funktionsweise der Datenquelle, umzählen die erforderlich is, inside Sr. If data/horde.ts:

  1. Authentifizierung – einen Token-Flow hinzufügen (z. B. OAuth--Client-Credentials oder API-Key) für die API von Oracle AI Agent Studio; die Zugangsdaten sollten voraussichtlich aus Umgebungsvariablen gelesen werden, statt irgendetwas hart zu kodieren, systemen einen kurzvergischer Cache, damit nicht jeder Aufruf neu authentifiziert.

  2. **Ersetzen des lokalen Daten, die JSON-Datenread (loadCustomers()) durch authentifizierte REST-Aufrufe an die Oracle-Endpunkte – z. B. GET /customers/{id}, GET /customers/search?q=..., GET /customers?status=... – unddem Mapping der Oracle-Antwortstruktur auf die bereits in dieser Datei definierten TypeScript-Interfaces Customer / Order (oder die Interfaces anpassen, falls das Oracle-Schema grad anders ist).

  3. Fehlerbehandlung – eine echte API kann Timeouts, Rate-Limits oder Fehler haben, die beim Lesen einer lokalen Datei nie auftreten; hoch geg Function{add try/catch und klare Fehlermeldungen hinzufügen, die die Sprachmodelle an Claude zurücker fetten.

  4. Caching – der aktuelle In-Memory-Cache geht von statischen Daten aus; bei einem lokalen Backend sollte er entweder geleert werden oder eine kurze Verfallszeit (TTL) erhalten.

Die vollständigen Details zu jedem der Punkte sind am unteren Ende von src/data/quile.ts direkt auskommentiert.

Tests

npm test führt test/test_data_source.ts aus, das:

  • Jede Funktion von data_source.ts direkt aufut und die Ergebnisse gegen bekannte Eigenschaften der Mock-Daten prüft (z. B. wird eine bekannte Kunden-ID aufgelöst, eine deno auf und unbekannte gibt null zurück, Suche ist case-insensitiv).

  • Provokesalle Tool-Handler-Funktionen direkt (über den MCP-Transport) aufruft und die JSON-Überprüfung, dass die zurückgegebenen JSON valid und mit den Daten übereinstimmen.

Es ist ein schlichtes Skript (ohne Test-Framework), damit es leicht zu lesen und in einer Screen-Sharing-Demo Zeile für Zeile zu erklären ist.

-
license - not tested
Not graded
quality - not tested
C
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 Connectors

  • Hosted Amazon Seller Central and Amazon Ads MCP server for Claude, ChatGPT, Cursor, and agents.

  • WHOOP recovery, strain, sleep and workouts in Claude via official WHOOP OAuth. Free, open source.

  • Hosted MCP endpoint with realistic fake data for prototyping agents. 12 tools, no setup.

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/Haseeb-Ahmed-AI/MCP-Server-For-Claude-and-oracle-AI-Agentic-studio-Interconnectivity'

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