MCP4Acumatica
MCP4Acumatica
Haftungsausschluss: Dieses Projekt ist eine unabhängige, von der Community entwickelte Integration und ist nicht mit Acumatica, Inc. verbunden, von ihr abgesegnet oder unterstützt. „Acumatica“ ist ein eingetragenes Warenzeichen von Acumatica, Inc. Die Verwendung des Namens und der API von Acumatica dient ausschließlich der Interoperabilität.
Ein Remote-Model Context Protocol (MCP)-Server, der Claude mit Acumatica ERP 2023 R2 verbindet. Er läuft auf Cloudflare Workers und nutzt OAuth-Authentifizierung pro Benutzer gegenüber Ihrer Acumatica-Instanz.
Jeder Benutzer authentifiziert sich mit seinen eigenen Acumatica-Anmeldedaten. Die Acumatica-Rolle dieses Benutzers steuert, welche Datensätze er sehen kann. Zusätzlich verlangt der MCP-Server für den Zugriff eine bestimmte Acumatica-Rolle, zeigt einen Einwilligungsdialog vor dem Zugriff und schwärzt automatisch sensible Felder, bevor die Daten das KI-Modell erreichen.
Funktionen
49 Tools – 38 schreibgeschützte Lookups + 6 Utility-/Discovery-Tools + 4 Schema-Wissens-Tools + 1 Schreib-Tool (Kunden anlegen/aktualisieren, standardmäßig deaktiviert) (siehe Verfügbare Werkzeuge)
OAuth pro Benutzer – Benutzer melden sich mit ihren Acumen-Anmeldedaten an (oder per SSO)
Rollenbasierte Zugriff – Das Sicherheitsmodell von Acuma bestimmt, was jeder Benutzer sieht
Zugriffskontrolle – Nur Benutzer, die eine festgelegte Canary-Generic-Inquiry lesen können, können sich verbinden (Sie können die GI so einschrönen, wie Sie möchten; eine Marker-Rolle wie
MCP Accessist der empfohlene Weg)Einwilligung – Benutzer müssen der KI-Datenverarbeitung vor der Nutzung der Tools explizit zustimmen
Redaction sensibler Felder – SSN, Bankkonten, Gehalts- und andere personenbezogene Felder werden automatisch redfollowing, bevor die Daten den Server verlassen
Rate-Limiting – Standardmäßig 3 gleichzeitige Anfragen und 40 Anfragen/Minute pro Benutzer, beides über die Admin-Console einstellbar. Eine Anfrage, die alle Plätze belegt vorfindet, wartet kurz auf einen Platz reagiert Poetry. Ein Rejection liefert eine strukturierte Hülle
{ error: \"rate_limited\", retryAfterSeconds, actionRequired }, die der KI genau angibt, wie lange.Paginationsverweigerung – List-/Query-Tools liefern bei Erreichen des Datensatzstab eine strukturierte Hülle
{ truncated, paginationSupported: false, actionRequired }, die die KI anleitet, den Benutzer um einen engeren Filter zu bitten, statt das Tool erneut aufzurufen.Strukturiertes Audit-Logging – Alle Tool-Aufrufe, Ereignisse und Feld-Redaktionen werden protokolliert
Admin-Console – Weboberfläche unter
/docs/admin, mit der Sie Logs ohne Neudeployment einsehen und laufende Systemeinstellungen ändern könnenLangfristige Log-Aufbewahrung – R2-basierte Cloud-Fotospeicherung über Cloudflare Logpush und durchsuchbarer Log-Viewer
Architektur
Claude (claude.ai / Desktop / API)
|
v MCP over streamable-http
+----------------------------------+
| Cloudflare Worker |
| OAuth 2.1 Provider |
| /authorize -> Acumatica login |
| /callback <- Acumatica |
| (access gate + OIDC userinfo) |
| /consent -> AI data consent |
| /token, /register (DCR) |
| /mcp -> McpAgent DO (49 tools)|
+---------------+------------------+
| Bearer token (per-user)
v
Acumatica 25R2 SaaS
Contract-Based REST API
Default/25.200.001Voraussetzungen
Node.js >= 18
Ein Cloudflare-Konto (kostenpflichtiger Workers-Plan für Durable Objects)
Eine Acumatica-2025-R2-Instanz mit:
Eine Connected Application in SM303010, konfiguriert mit dem Authorization-Code-Flow (OAuth-Scopes werden vom Server in der Anfrage übertragen, nicht für die OAuth-App)
A
callback-Endpoint auf Ihrem Worker als Redirect-URIEin
MCPAccess-Generic Inquiry (SM208000) – eine triviale Canary-GI mit aktiviertem Expose via OData; die dem Login vorgeschalteten Check-In Zugriff prüft, ob der Benutzer diese GI lesen kann (siehe Architekturdokumentation)Eine Möglichkeit, den Personenkreis einzuschränken, der diese GI – marker-Rolle
MCP Accessleerzugeben? (SM201005) nur für zugelassene Benutzer ist der empfohlene Weg)
Einrichtung
Es gibt drei Installationswege. Alle drei gehen von denselben Voraussetzungen auf Acuma-Seite aus – bitte zuerst die Acuma-Seite vorbereiten (siehe „Acuma-seitige Konfiguration“ unten), unabhängig davon, welchen Weg Sie wählen.
Weg | Am besten geeignet für | Terminal erforderlich? |
A. Deploy-to-Cloudflare-Button | Personen, die eine reine GUI-Installation möchten | Nein |
B. Einzeilen-Installer | Entwickler, die bereits | Ja (ein Befehl) |
C. Manuelle Einrichtung | Alle, die jeden Schritt nachvollziehen möchten | Ja |
Weg-A – Deploy-to-Cloudflare-Button (ohne Terminal)
Der Button erstellt eine Kopie des Repos in Ihrem GitHub-Konto, liest wrangler.jsonc, legt automatisch die gemappten VL-Informationen für KV-Namespace und R2-Bucket an und veröffentlicht die erste Version. Die einzelnen Schritte:
Klicken Sie den Button. Cloudflare werden Sie sich (oder für ein Konto neu) an und fordern den GitHub-Fork zur Freigabe.
Bindungen bestätigen. Es werden Sie zweimal aufgefordert, den KV-Namespace zu erstellen – einmal für
TOKEN_STORE(App-Daten: Tokens, neben Auslieferungsstatus, Cache, Konfiguration, Admin-Sessions) und einmal fürOAUTH_KV(wird intern aus der OAuth-Bibliothekt verwendet). Das ist so gewollt: Beide Bindungen trennen dieselbe Kategorie und teilen sich niemals negative Schlüssel.Nur die beiden Name s-Names häufig vergil- "unterschiedliche Namen**.
Hinweis bleiben?
Sie müssen beide Namen verschiedene Namen geben, sonst scheitert die Bereitstellung.
⚠️ Geben Sie den beiden Namespaces andere Namen gesucht. Beispiel:
mcp4acumatica-appfürTOKEN_STOREundmcp4acumatica-oauthfürOAUTH_KV. Die automatische Provisionierung von Cloudflare inherits die Namenmcp4acumaticain beiden Fällen – und zwei Namensräume mit demselben Titelanmelden, wenn Sie eine Fehlermeldung erhalten, die **ähnlich aus „Cannot provision Name“ ist. Behandlung der Grä entfernt manns "beide*Mängel, wenn die Hälfte der Umgebung erstellt" – Gehen Sie dazu Cocktail/Storage-Datenbanken → KV-Geshe – auf orphanmcp4löschen und benennen Sie in Midemba cred, then. Grund: Cloud ACE is distributed? Virmineata; thesetup.shcreated a Namespace and bindet beide es an.
Die R2-Buckets (mcp4acumatica-logs, mcp4acumatica-index) werden gleichermaßen erstellt, sind aber explizit in wrangler.jsonc umbenannt, damit keine Konflikte entstehen.
3. Secrets festlegen. Werden die Cube-Secrets abgefragt, füllen Sie WordPress und containerticals ein:
ACUMATICA_CLIENT_ID– aus Ihrer Connected Application (SM303010)ACUMATICA_CLIENT_SECRET– aus demselben BildschirmCOOKIE_ENCRYPTION_COOKIE– öffnen Sie die Browser-Konsole auf einer beliebigen Seite und führen Sie den Code aus:[...crypto.getRandomValues(new Uint8Array(32))].map(b => b.toString(16).padStart(2,'0')).join('')Kopieren Sie den resultierenden 64-stelligen Hex-String und wählen den Wert.
ADMIN_SECRET– anschließend an eine sicheres Passwort Ihrer Wahl (schützt die/docs-Admin-Konsole). Sie können es direkt auf der Seite erzeugen:[...crypto.getRandomValues(new Uint8Array(24))].map(b => b.toString(16).padStart(2,'0')).join('')
Bereitstellen. Cloudflare verbindet das Fork mit Workers Build und stößt die nächste Deploy an.
Umgebungsvariable der Acuma-Instanz in Cloudflare aktualisieren. Nach dem Deploy, wählen Sie in der Cloudflare-Konsole:
Workers & Pages → mcp4acumatica → Einstellungen → Variablen und Secretsund bearbeiten Sie dort:ACUMATICA_URL(z. B.https://yourcompany.acumatica.com)ACUMATICA_TENANT(Ihr Login-Tenant)Optional:
ACUMATICA_MAX_RECORDS,ACUMATICA_CANARY_GI,REDACT_PATTERNS,REDACT_SKIP
Klicken Sie Speichern und Bereit using – Cloudflare stellt die neue Version bereit.
Fügen Sie Ihrer Connected Application eine Redirect-URI hinzu. Ihr Worker ist jetzt unter
https://mcp4acumatica.<your-account>.workers.deverreichbar. Fügen Siehttps://<host>/callbackzu den Redirect URIs im BildschirmSM303010hinzu. (Wenn Sie stattdessen eine eigene Domain nutzen möchten: „Custom domain“ unten.)Vor weiteren Start die Vorprüfung durchführen: Sie erreichen die Preflight-Diagnose unter
https://<host>/docs/admin/preflight, loggen Sie sich mitADMIN_SECRETein und starten die Diagnose. Sie testet die Verbindung zu Acuma, der OIDC Discovery-Endpunkt, die Credentials der Connected App, der Tenant-Pfad und die API-Kontraktversion – jede Fehlkonfiguration wird genannt.
Danach können sich Seine Claude mit dem Workspace verbinden (siehe Claude verbinden.
Pfad B – Einzeilen-Installer (Terminal)
Wenn Sie bereits git, node und npm installiert haben, führen Sie den Installierer aus:
curl -fsSL https://mcp4acumatica.hallboys.com/install.sh | bashDieses Skript klont das Repo, installiert Abhängigkeiten und führt ./setup.sh aus. Das Setup fragt die notwendigen Acume-Werte ab (URL, Tenant, Client-ID und -Secret der Connected Application), generiert die kryptografischen Secrets automatisch, erzeugt den KV-Namespace und R2-Bucket, überträgt Secrets autom Audio, deployed the deployment and run die Manternehmen aus Preflight.
Wenn Sie das Script zuerst ansehen möchten:
curl -fsSL https://mcp4acumatica.hallboys.com/install.sh -o install.sh
less install.sh # read it
bash install.sh # then runPfad C – Mannelle Einrichtung (Terminal)
1. Klonen und installieren
git clone https://github.com/hallboys/MCP4Acumatica.git
cd MCP4Acumatica
npm install2. KV-Namespace erstellen
npx wrangler kv namespace create TOKEN_STORENotieren Sie die Namespace-ID aus der Ausgabe – Sie fügen sie in wunderbar.jsonc ein. Dieselbe ID wird und für die Bindings TOKEN_STORE und OAUTH_KV benutzt.
3. wrangler.jsonc konfigurieren
wrangler.jsonc liegt der Vorlage bei. Bearbeiten Sie diese Datei und ergänzen Sie:
die Namespace-ID aus Schritt 2 (beide
müssenStore-Bindung undOAUTH_KV– dieselbe ID)ACUMATICA_URL– die URL Ihrer Acuma-Instanz (z. B.https://yourcompany.acumatica.com)ACUMATICA_TENANT– Standort Ihr Unternehmen/Mandant-Name
Wenn Sie Ihre eigenen für git status nicht sichtbar bleiben möchten (damit In Lin demand ohne Konflikte möglich bleibt):
git update-index --skip-worktree wrangler.jsonc4. Secrets festlegen
npx wrangler secret put ACUMATICA_CLIENT_ID
npx wrangler secret put ACUMATICA_CLIENT_SECRET
npx wrangler secret put COOKIE_ENCRYPTION_KEY # use `openssl rand -hex 32`
npx wrangler secret put ADMIN_SECRET # any password — protects /docs/admin5. Bereitstellen
npx wrangler deploy6. Lokale Entwicklung (optional)
cp .dev.vars.example .dev.vars
# Edit .dev.vars with your Acumatica credentials
npx wrangler devKonfiguration der Acuma-Seite
Diese Vorbereitung wird unabhängig davon benötigen, welche installieren Sie sich weg. Sie lässt sich leider nicht automatisieren –/Acumatica-API stellt keine dafür offenen.
Connected Application (SM303010)
Wechseln Sie bei Acuma zu System > Integration > Connected Applications (SM303010).
Erstellen Sie eine neue Connected Application.
Stellen Sie den OAuth-2.0-Flow auf Authorization Code.
Fügen Sie eine Redirect-URI an:
https://<worker-url>/callback(verwenden*.workers.dev-Host oder eine eigene Domain).Kopieren Sie hier Client ID und Client Secret – Sie steltren später in der Cloudflare-Credentials als Secrets.
Für die Federfl enthält keine
Punkt-Einstellung zu und oben. Die OAuth-Scopes (owid profile email offline_access, inklusiveoffline_access, das die OAuth-Konfiguration tatsächlich als aktualitätsfreundliche refresh tokens ergänzen kann) sendet der MCP-Server in der Autorisierung an – nicht die Connected Application.
Zugriffskontrolle für Canary Generic Inquiry (SM208000, SM201005)
Bevor ein Benutzer die KI-Tools nutzen kann, startet der Login-Prozess eine Zugriffskontrolle: Er übergibt die Canary-GI über OData und prüft, ob der Token des Benutzers die GI Daten geben kann (200 → erlaubt, 403 → Kind). Der Server muss nie die Acuma-Rollenmitgliedschaft selbst auf; Er fragt nur: „Kann dieser Benutzer diese eine GI lesen?“ Sie können den Zugriff trotzdem wie in ihres sicherheits-Modell belieblieg einschränken. (Sie or eine MCP Access marker roll, the recommended method).
Canary GI erstellen: System > Customization > Generic Inquiry (SM208000) → rufen Sie eine GI mit dem Namen
MCPAccessund eine beliebige triviale Abfrage ein (eine einzige Irgendeine Tabelle genügt). Aktivieren Sie ““Expose via OData`.Zugriff einschränken (empfehlens even: die Marker-Rolle): System > Zugriff > Benutzerrollen (SM201005) → erstellen Sie eine Rolle namens
MCP Accessohne Rechtekt, geben Sie nur derMCPAccess-GI diese Rolle und jedem Benutzer, er soll der AI-Assistent Zugriff haben diese Rolle zuweisen. Jede andere, der den OData-Read-Zugriff auf die GI setzt, funktioniert auch.
Der Name der Canary-GI lässt sich über die
ACUMATICA_CANARY_GI-als (defaultMCPAccess). Konfigurieren Sie sie im Cloudflare-Dashboard (Variablen und Secrets), und eng or in derwrangler.jsonDatei.
Weisung über Generic-Inquiry-Zugriff für die KI (empfohlene Vorgabe)
Eine ausgereifte Acumatica-Instanz kann Hunderte von Generic Inquiries enthalten, die meisten gebaut für menschliche Bildschirme (breite Berichtsraster, Dashboards, Ad-hoc-Abfragen). Stellt man sie alle dem Assistenten bereit, überflutet das seinen Kontext und verleitet ihn dazu, die falsche Inquiry auszuwählen — und schlimmer noch: Eine parametrisierte GI, die über OData freigegeben ist, liefert stillschweigend falsche Daten: Ohne ihre Parameter abgefragt, gibt Acumatica Standard-/ungefilterte Zeilen zurück — ohne Fehler, was das Modell nicht erkennen kann. Das GI-Exposure-Gate macht daraus ein Opt-in: Sie markieren die GIs, die für einen Kl-Agenten wirklich nützlich und korrekt abfragbar sind (ExposedToMCP), und das Modell sieht nur diese.
Das Gate ist inaktiv, bis Sie es konfigurieren — der Server läuft, aber ohne Registry kann der Assistent keine GIs entdecken (acumatica_list_generic_inquiries gibt nichts zurück; eine Benutzerin oder ein Benutzer kann eine GI trotzdem über den exakten Namen ausführen). Die Aktivierung ist ein einmaliges Acumatica-Customization-Projekt — im Verzeichnis acumatica/ beigelegt; es ergänzt die Custom-Felder UsrExposedToMCP / UsrAIDescription (GIDesign) und UsrResAIDescription (GIResult) sowie die Formularänderungen an SM208000 — gefolgt von den Feed-GIs MCPGIs / MCPGIFields, dem Lesozugriff für die Rolle MCP Access auf die Feeds und dem Markieren der GIs, die Sie freigeben möchten. Siehe docs/generic-inquiries.md.
Siehe Generic Inquiries für die vollständige Begründung, welche GIs Sie freigeben sollten, und die Schritt-für-Schritt-Einrichtung.
Eigene Domain (optional)
Die Bereitstellung liefert Ihnen standardmäßig einen *.workers.dev-Hostnamen. Um einen eigenen Hostnamen anzubinden:
Über das Cloudflare-Dashboard:
Workers & Pages → mcp4acumatica → Settings → Domains & Routes → Add. die Zone agree Domain muss sich in Ihrem Cloudflare-Konto befinden.Über
wrangler.jsonc: So you must kommentieren Sie denroutes-Block am Anfang der Datei aus, bearbeiten Siepatternundzone_name, und stellen Sie neu bereit.
Wenn Sie den Hostnamen ändern, denken Sie daran, die neue URL https://<host>/callback in SM303010 zu den Redirect-URIs Ihrer Connected Application hinzuzufügen.
Claude verbinden
Claude.ai / Claude Desktop
Gehen Sie zu Settings > Connectors (Einstellungen > Connectors)
Klicken Sie auf *Add Connector und geben Sie die URL ein:
https://<your-worker-url>/mcpBei der ersten Kante werden Sie zur Anmeldeseite Ihrer Acumatica-Instanz weitergeleitet
Wenn es atomalis Ihr Konto lesen kann (d. h., Ihnen wurde Zugriff gewährt), sehen Sie eine Einwilligungsseite? die die KI-Datenverarbeitung erklärt
Nachdem Sie der Einwilligung zugestimmt haben, hat Claude Zugriff auf alle 49 Tools.
Claude Code (CLI)
claude mcp add acumatica-erp --transport streamable-http https://<your-worker-url>/mcpAPI (über Anthropic SDK)
Wenn Sie die Anthropic API mit MCP verwenden, richten Sie den MCP-Client auf https://<your-worker-url>/mcp aus. Der Server unterstützt OAuth 2.1 mit Dynamischer Client Registrierung unter /register.
Verfügbare Tools
Kern
Tool | Beschreibung |
| Kundendatensatz mit Kontakten, Kreditregeln und Saldo |
| Lieferantendatensatz with Kontakten, Konditionen und Steuerinformationen |
| Verkautsauftrag mit Positionszeilen, Gesamtsummen und Versand |
Finanzen / Buchhaltung
Tool | Beschreibung |
| Debitorenrechnung mit Positionszeilen und Steuerdetails |
| Kriegen am Rechnung or artillery own connection |
| Hauptbuch Journal-Beleg mit Soll- und Haben-Details |
| Debitorenzahlung (AR) mit angemänkten Deities and Zuweisungen |
| Kontenplan-[o] -- Verzeichnis lookup Emission (GL) |
| KreditScheck (AP) / Zahlung an Lieferant inkl. Historie |
Lagern & Lagerhaus
Tool | Beschreibung |
| Bestandsartikel mit Preisdaten, Warehoose qty, Lieferanten |
| Nicht-Bestandsartikel (Dienstleistungen, arbeiten, Ausgabe) |
| Echtzeit-Verfügbarkeit unitierre all Loslager/wavehouses |
| Aggregierte Bestandsverbindlichkeiten pro Warehouse |
| Lager mit LagIn-placeührungen und Settings |
| Artikelklassen-Standardwerte |
Einkauf
Tool | Beschreibung |
| Einkaufsbestellung mit Position, Lieferant und Summen |
| Wareneingang mit Angaben und Einkauf-Verknüpfung |
Projekte
Tool | Beschreibung |
| Projektkopf, Status, Finanzzahlen |
| Task (Vorgang) innerhalb eines Projekts |
| Budget-Einzelposten mit Ist- vs. Sollwerten |
| Projekt-Transaktionsdetails: Kosten / Erlös |
Service & Field
Tool | Beschreibung |
| Support-Fall mit SLA, Priorität, Zeiterfassung |
| Service-Auftrag im Field Service, mit Details & Terminen |
| Termin (geplante/tatsächliche Zeiten), Mitarbeiter, Kosten/Deckung |
Vertrieb & CRM
Tool | Beschreibung |
| CRM-Kontakt mit Adresse, Telefon, Besitzerin/Besitzer |
| Einheitlicher Interessen-/Kunden-/Lieferantendatensatz |
| Vertriebschance (Pipeline-Deal) inkl. Produkte & Beträge |
| Lead (Interessent) mit Quelle nicht Status |
| Vertriebsmitarbeiter:in mit Provisionssettings |
Versand & Auftragsabwicklung
Tool | Beschreibung |
| Lieferung mit Paketen, Tracking, Fracht |
| Verkautsrechnung mit SO-/Verknüpfungsinfos |
HR & Gehaltsabrechnung
Tool | Beschreibung |
| Mitarbeiter with Kontakt- und Finanz-Einstellungen |
| Spesenabrechnung mit Positionen und Status |
| Zeiterfassung mit Projekt, abrechenbar / Überstunden |
CRM-Aktivitäten
Tool | Beschreibung |
| E-Mail-Aktivität mit From/To/Body |
| Kalendertermin with den Teilnehmern |
| Allgemeine CRM-Aktivität |
| CRM-Aufgabe / -Aufgabe related activities |
Dienstprogramme / Datenverwaltung
Tool | Beschreibung |
| Beliebige Generic Inquiry (GI)ausführen, mit Filter |
| Entitäten und Suchen (Entities) auflisten durchsuchen (OData) |
| Felder, Typen und Unteranlagen für eine Entität entdecken |
| Über OData vorgesehene Generic List |
| Schema für eine GI ableiten before dem Ausführen |
| Clear — Cache für Metadaten leeren, if schema changes |
Tipp: Verwenden Sie zuerst
acumatica_describe_entity, um verfügbaren Felder zu find, danachacumatica_list_entitieszum Suchen/Filter. Bei Generic nutzen Sieacumatica_list_generic_inquiries, um GI-Namen zu finden sowieacumatica_describe_inquiryfür die möglichen Felder. Siehe docs/example-prompts.md für Anwendungsbeispiele.
Dokumentation
Ausführliche Dokumentation verfügen Sie im Ordner docs/:
Tool-Referenz -- Vollständige Spezifikation aller 49 Tools mit Parametern und Endpunkten
Beispiel-Prompts -- Beispiele für Claude und andere MCP-Clients, nach Anwendungsfällen
OData-Filter Guide -- Anleitung zu
$filter,$orderby,$select,$expandund$top-Query-ParameternGeneric Enquiries -- Warum GI für AI-Zugriffe begrest sind, welche GI freigegeben werden sollten und wie man register einschaltet
Schema-Wissen -- Offline-Schema-Discovery für Integrationen & Anpassungen, so wird Schema-index gebaut
Architecture -- Welche Architektur, OAuth-Flow, Privatsphäre/s Model and design decisions
Self-Hosting Guide -- Hinweise für Node.js und Alternativen außerhalb Cloudflare
Acuma aktualisieren -- Schritte as is given alone for the connected version
Skills
Wiederverwendbare Claude-Skills, die im Repo enthalten sind, im Ordner skills/:
acumatica-gi-descriptions -- End-to-end-End to End-Prozess für; "AI las descriptions" for Generic Inquiries and Result columns: Basierend werden auf der GI-Design-Metadata (Tabellen, Joins, JOINDER, where conditions, fields) estaten instead of guessing from names. Includes Platform-Tripwires that cause mass GI-Metadadata silently brokenes, a checklist of useful design signals, and three Skripte für "truncation", "design briefing" etc.
Zur Verwendung weisen Sie auf auf das Skill-Verzeichnis verweisen, oder kopieren Sie es in Ihr eigenes .claude/skills/-Verzeichnis.
Security
Verwandeln Sie es, nicht in english / Leave you.
Keine gespeicherten Anmeldedaten. Der MCP-Server speichert keine Acumatica-Passwörter. Er verwendet den OAuth-2.0-Authorization-Code-Flow -- Benutzer authentifizieren sich direkt bei Acumatica.
Benutzerbezogene Tokens. Das Acumatica-Zugriffstoken jedes Benutzers wird im Key-Value-Store der Plattform gespeichert (bei der Standardbereitstellung Cloudflare KV), beschränkt auf dessen Benutzernamen. Abgelaufene Tokens werden automatisch erneuert. Wenn ein Refresh-Token abläuft, authentifiziert sich die Verbindung automatisch neu, anstatt eine manuelle Neuverbindung zu erfordern.
Zugriffs-Gate. Nur Benutzer, die eine festgelegte Canary-Generic Inquiry lesen können, können sich verbinden. Der Server prüft die GI-Lesbarkeit über OData beim Login (nicht die Rollenmitgliedschaft); Benutzer ohne Zugriff sehen eine Seite „Zugriff verweigert“. Sie können die GI nach Belieben einschränken -- die empfohlene Vorgehensweise ist eine
MCP Access-Markerrolle. Der Name der GI ist überACUMATICA_CANARY_GIkonfigurierbar.Einwilligungsseite. Nach bestandener Zugriffsprüfung müssen Benutzer bestätigen, dass ihre Daten von einem externen KI-Modell verarbeitet werden, bevor die MCP-Session aktiviert wird.
Schwärzung sensibler Felder. Tool-Antworten werden automatisch nach sensiblen Feldnamen durchsucht (SSN, Bankkonten, Gehalt, Kreditkarten usw.) und übereinstimmende Werte werden durch
[REDACTED]ersetzt. Die Muster sind über die UmgebungsvariablenREDACT_PATTERNSundREDACT_SKIPkonfigurierbar.Rollenbasierter Zugriff. Die Acumatica-Rolle des Benutzers bestimmt, welche Datensätze er lesen kann. Wenn ein Benutzer in Acumatica keinen Zugriff auf einen Datensatz hat, kann er auch über den MCP-Server nicht darauf verschließen.
Schreibgeschützt. Alle aktuellen Tools sind reine Leseabfragen. Es werden keine Daten erstellt, geändert oder gelöscht.
Ratenbegrenzung. 3 gleichzeitige Anfragen, 40 Anfragen pro Minute und ein Limit von 1000 Datensätzen pro Abfrage standardm. Diese sind alle über die Admin-Konsole unter
/docs/admin/settingsohne erneutes Deployment konfigurierbar. Die Grenzen values gelten pro Benutzer und zählen HTTP-Aufrufe an Acumatica (nicht Tool-Aufrufe). Abgelehnte Anfragen senden eine strukturierte Envelope mit genauemretryAfterSecondszurück und werden alsrate_limit_hit-Ereignisse protokolliert, sodass Sie erkennen können, ob die Limits zu streng sind.Paginierungsverweigerung. Die Listen-/Abfrage-Tools (
acumatica_list_entities,acumatica_run_inquiry,acumatica_list_generic_inquiries) unterstützen keine Paginierung. Wenn eine AntwortACUMATICA_MAX_RECORDSerreichen, gives das Tool eine strukturierte Umschlag (truncated: true,paginationSupported: false,actionRequired: "...") zurück, avec der Anweisung. Sie an, die KI anhält und den Benutzer um einen engeren Filter bittet, anstatt weitere Datensätze abzurufen.Prüfprotokollierung. Alle Tool-Aufrufe, Authentifizierungsereignisse (Login erfolgreich/abgelehnt, Einwilligung erteilt) und Feld-Schwärzungsereignisse werden als strukturiertes JSON protokolliert. Anzeigen mit
npx wrangler tail.
Plattform-Portabilität
Die Standardbereitstellung zielt auf Cloudflare Workers ab, die Tool-Handler und Kernbibliotheken sind jedoch plattformagnostisch. Eine Speicherabstraktion (IKeyValueStore-Schnittstelle + AppEnv-Typ) entkoppelt die Tool-Logik von Cloudflare-spezifischen APIs und ermöglicht selbstgehostete Bereitellungen auf Node.js mit Redis, SQLite oder anderen Speicher-Backends. Gründe hierfür finden Sie in der Self-Hosting Guide.
Tech-Stack
Laufzeit: Cloudflare Workers + Durable Objects
MCP:
agentsSDK (McpAgent),@modelcontextprotocol/sdkHTTP-Routing: Hono
Sprache: TypeScript
Validierung: Zod
Entwicklung
npx wrangler dev # Start local dev server
npx tsc --noEmit # Type check
npx wrangler tail # Stream live logs from deployed workerLizenz
Apache 2.0 -- Copyright 2026 Hall Boys, Inc.
This server cannot be installed
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
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Cloud-hosted MCP server for secure AI access to enterprise data sources via CData Connect AI.
The Remote MCP server acts as a standardized bridge between LLM applications (like Claude, ChatGPT, and Cursor) and external services, enabling AI agents to access external tools and resources. Its primary capability is providing a centralized search tool to discover other MCP servers and their respective tools. Unlike local implementations, it runs remotely with OAuth authentication and permission controls for security.
Unified MCP Server is a remote MCP connector for AI agents and vertical AI products that provides access to 22,000+ authorized SaaS tools across 400+ integrations and 24 categories directly inside LLMs (Claude, GPT, Gemini, Cohere). Tools operate only on explicitly authorized customer connections, enabling agents to safely read and write against live third-party systems.
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/NologyAcu/mcp4nology'
If you have feedback or need assistance with the MCP directory API, please join our Discord server