baselinker-mcp
baselinker-mcp
Ein MCP-Server, der die gesamte BaseLinker-API — Bestellungen, Rechnungen, Retouren, Kurierdienste, CRM, Lager, Produkte — einem LLM-Client wie Claude Code, Claude Desktop oder Cursor zur Verfügung stellt.
Vollständig. Alle 179 dokumentierten API-Methoden, keine davon nur als Stub.
Nur lesend, bis du etwas anderes bestimmst. Die 92 Schreibmethoden bleiben unsichtbar, solange du dich nicht anmeldest; bei deaktiviertem Schreibzugriff meldet jedes Tool
readOnlyHint: true.Lokal oder remote. stdio für einen Client auf deinem Rechner oder Streamable HTTP mit OAuth 2.1 (Keycloak) für einen gemeinsamen Endpunkt im Internet.
"How many orders came in yesterday that aren't paid yet?"
"Which catalog products dropped below 5 in stock this week?"
"Pull the courier label for order 1234567 and tell me the tracking number."Inhalt
Related MCP server: TextQL MCP Server
Schnellstart
Voraussetzungen: Node.js 20 oder neuer und ein BaseLinker-API-Token aus dem BaseLinker-Panel unter Konto & Sonstiges → Mein Konto → API.
git clone https://github.com/PiotrRaszkowski/baselinker-mcp.git
cd baselinker-mcp
npm install
npm run build
cp .env.example .env # paste your token into BASELINKER_API_TOKENDas Token kann auch direkt aus der Umgebung stammen, was Vorrang vor .env hat. .env wird aus dem Paketstammverzeichnis gelesen, sodass der Server unabhängig davon, aus welchem Verzeichnis dein MCP-Client ihn startet, korrekt startet.
Client verbinden
Claude Code
claude mcp add baselinker -e BASELINKER_API_TOKEN=your-token -- node /path/to/baselinker-mcp/dist/index.jsClaude Desktop, Cursor oder eine beliebige mcpServers-Konfiguration
{
"mcpServers": {
"baselinker": {
"command": "node",
"args": ["/path/to/baselinker-mcp/dist/index.js"],
"env": { "BASELINKER_API_TOKEN": "your-token" }
}
}
}Für einen gemeinsamen Endpunkt, der von claude.ai aus erreichbar ist, siehe Remote-Bereitstellung.
Tools
179 einzelne Tools würden den Kontext eines Modells und seine Fähigkeit, zwischen ihnen zu wählen, überlasten. Deshalb sind die Methoden so gruppiert, wie BaseLinker sie selbst gruppiert: zehn Tools, eines pro API-Kategorie. Jedes akzeptiert einen method-Namen und ein parameters-Objekt, und die Beschreibung jedes Tools listet die akzeptierten Methoden samt Parametern und Paginierungshinweisen auf.
Die Zahlen unten sind read + write; Schreibmethoden erscheinen nur, wenn BASELINKER_ALLOW_WRITES=true ist.
Tool | Umfang | Methoden |
| Bestellungen, Status, Zahlungen, Journal, PickPack-Warenkörbe | 15 + 22 |
| Rechnungen, Rechnungsdateien, Nummernkreise, Belege | 6 + 6 |
| Retouren, Status, Gründe, Zahlungen, Journal | 8 + 13 |
| Kurierdienste, Pakete, Etiketten, Protokolle, Dokumente | 11 + 4 |
| CRM-Kunden und -Status | 5 + 6 |
| Kataloge, Lager, Standorte, Kategorien, Hersteller, Lieferanten, Zahlungspflichtige, Tags | 18 + 24 |
| Produktlisten, Daten, Bestand, Preise, Protokolle | 5 + 5 |
| Lagerbelege, Bestellungen, Fulfillment-Lieferungen | 10 + 9 |
| Base-Connect-Integrationen und Auftragnehmerguthaben | 3 + 2 |
| Externe Lager (Shops, Großhändler) | 6 + 1 |
87 + 92 |
Parameter werden pro Methode gegen ein Zod-Schema validiert, bevor etwas gesendet wird. Ein fehlerhafter Aufruf führt also zu einem lesbaren Fehler statt zu einem BaseLinker-Fehlercode. Unbekannte Schlüssel werden unverändert weitergeleitet — BaseLinker fügt Parameter ohne Vorwarnung hinzu, und der Server bricht nicht ab, wenn das passiert.
Schreibmethoden
Standardmäßig deaktiviert. Zum Aktivieren:
BASELINKER_ALLOW_WRITES=trueSolange sie deaktiviert sind, werden Schreibmethoden weder im method-Enum eines Tools aufgeführt noch sind sie aufrufbar. Durch das Aktivieren werden alle 92 auf einmal eingeschaltet — Erstellen, Aktualisieren und Löschen von Bestellungen, Produkten, Beständen, Preisen, Rechnungen, Sendungen, Retouren und Lagerbelegen. Einige davon löschen Datensätze; einige lösen echte Kuriersendungen aus, die echtes Geld kosten. Es gibt keine Freischaltung pro Methode. Aktiviere den Schreibzugriff also nur für einen Client, dem du vertraust, und erwäge, für alles andere eine zweite schreibgeschützte Instanz zu betreiben.
Wissenswertes Verhalten
Ratenbegrenzung. BaseLinker erlaubt 100 Anfragen pro Minute. Ein clientseitiger Sliding-Window-Limiter setzt das durch — überzählige Aufrufe warten, anstatt zu scheitern.
Paginierung. Listenantworten sind begrenzt (in der Regel 100 Einträge für Bestellungen, Rechnungen und Retouren; 1000 für Katalogprodukte). Die Beschreibung jeder Methode enthält den entsprechenden Hinweis, z. B. erwartet getOrders, dass date_confirmed_from auf date_confirmed der zuletzt zurückgegebenen Bestellung plus eine Sekunde gesetzt wird, während getInventoryProductsList eine bei 1 beginnende page erwartet.
Dateidownloads. getLabel, getProtocol, getCourierDocument, getInvoiceFile, getInventoryDocumentFile und getInventoryFulfillmentDeliveryLabels geben die Datei als eingebettete MCP-Ressource mit echtem MIME-Typ zurück. Übergib den zusätzlichen Parameter save_to_path — wird lokal behandelt, nie an BaseLinker gesendet —, um sie stattdessen dekodiert auf der Festplatte zu speichern und { saved_to, extension, bytes } zurückzubekommen. Das ergibt nur über stdio Sinn, wo der Server auf deinem eigenen Rechner läuft; über HTTP wird es mit einem erklärenden Fehler abgelehnt.
Remote-Bereitstellung (HTTP + OAuth)
Mit --transport http spricht der Server Streamable HTTP und fungiert als OAuth-2.0-Ressourcenserver (RFC 9728): Er veröffentlicht Metadaten für geschützte Ressourcen, beantwortet nicht authentifizierte Aufrufe mit 401 plus einer WWW-Authenticate-Herausforderung und prüft jedes Zugriffstoken als RS256-JWT gegen die JWKS einer Keycloak-Realm. Clients entdecken die Realm über diese Metadaten und registrieren sich über die dynamische Client-Registrierung, sodass auf keiner Seite eine Client-ID oder ein Geheimnis konfiguriert ist.
node dist/index.js --transport http --host 0.0.0.0 --port 8000 --path /mcpPfad | Auth | Zweck |
| Bearer | MCP Streamable HTTP, zustandslos — ein neuer Server pro Anfrage |
| Bearer |
|
| öffentlich | RFC-9728-Ressourcenmetadaten |
| öffentlich | Liveness-Probe |
Der HTTP-Transport weigert sich, ohne eine Auth-Realm zu starten, es sei denn, du entscheidest dich ausdrücklich mit BASELINKER_MCP_AUTH_DISABLED=true dagegen. Das ist beabsichtigt: Bei aktiviertem Schreibzugriff übergibt ein nicht authentifizierter Endpunkt dein BaseLinker-Konto dem Internet.
deploy/ enthält die vollständige Anleitung — Keycloak-Realm-Einrichtung, einen gehärteten Compose-Dienst mit Traefik-Labels, Reverse-Proxy-Ausschnitte für Caddy und nginx, Verifikationsbefehle und ein Bedrohungsmodell. Die Kurzfassung:
docker build -t baselinker-mcp:0.2.0 .
docker run -d --name baselinker-mcp -p 8000:8000 \
-e BASELINKER_API_TOKEN=your-token \
-e BASELINKER_MCP_AUTH_REALM_URL=https://keycloak.example.com/realms/myrealm \
-e BASELINKER_MCP_AUTH_BASE_URL=https://mcp.example.com \
baselinker-mcp:0.2.0Dann einen Client darauf ausrichten:
claude mcp add --transport http baselinker https://mcp.example.com/mcpIn claude.ai sind es Einstellungen → Konnektoren → Benutzerdefinierten Konnektor hinzufügen, URL https://mcp.example.com/mcp, wobei Client-ID und Client-Geheimnis leer bleiben.
Eines sollte klar sein, bevor du es bereitstellst: Das BaseLinker-Token wird geteilt. Jeder, der sich in der Realm anmelden kann, arbeitet mit demselben BaseLinker-Konto. Weitere Grenzen findest du in SECURITY.md.
Konfigurationsreferenz
Alles ist eine Umgebungsvariable; .env im Paketstammverzeichnis wird automatisch geladen.
Immer
Variable | Standard | Zweck |
| — | Erforderlich. BaseLinker-API-Token |
|
|
|
Transport
CLI-Flags haben Vorrang vor diesen.
Variable | Flag | Standard | Zweck |
|
|
|
|
|
|
| Bindeadresse, nur HTTP |
|
|
| Bind-Port, nur HTTP |
|
|
| Endpunktpfad, nur HTTP |
OAuth — erforderlich, wenn der Transport http ist
Variable | Standard | Zweck |
| — | Keycloak-Realm, die Token ausstellt, z. B. |
| — | Öffentliche URL dieses Servers; zusammen mit dem Pfad ergibt sie die OAuth-Ressourcenkennung |
| unset | Audience(s), die ein Token enthalten muss. Benötigt einen Audience-Mapper in Keycloak; nicht gesetzt überspringt die Prüfung |
|
| Scopes, die jedes Token enthalten muss. |
|
|
|
| unset | DNS-Rebinding-Schutz: akzeptierte |
| unset | DNS-Rebinding-Schutz: akzeptierte |
Listen akzeptieren Kommas oder Leerzeichen.
Fehlerbehebung
Symptom | Ursache |
| Kein Token in der Umgebung oder in |
| Token von BaseLinker abgelehnt — im Panel neu generieren |
Eine Schreibmethode ist „unbekannt" |
|
Aufrufe werden unter Last langsamer | Der Ratenbegrenzer begrenzt dich auf 100 Anfragen/Minute. Funktioniert wie vorgesehen |
| Realm und Basis-URL festlegen oder mit |
| Token wurde nicht von der konfigurierten Realm signiert |
| Token enthält kein |
Weitere OAuth-spezifische Fälle findest du in deploy/README.md.
Entwicklung
npm run dev # run from sources (tsx), stdio transport
npm run start:http # built server, HTTP transport
npm test # unit tests — fully offline, no live API calls
npm run check # format check + typecheck + tests, what CI runs
npm run smoke # manual smoke test against the live API (uses .env)
npm run inspect # MCP Inspector against the built serverCONTRIBUTING.md beschreibt, wie die Tool-Registry aufgebaut ist und worauf beim Hinzufügen einer Methode zu achten ist.
Lizenz
MIT. Nicht mit BaseLinker verbunden oder von BaseLinker unterstützt.
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
- FlicenseNot gradedqualityDmaintenanceEnables interaction with the Hostinger Ecommerce API to retrieve product information and update product descriptions through the Model Context Protocol.
- AlicenseNot gradedqualityCmaintenanceTranslates natural language to SQL/GraphQL queries and executes them, enabling AI agents to interact with databases through the Model Context Protocol.1Apache 2.0
- AlicenseBqualityDmaintenanceEnables natural language control of Teamleader Focus CRM, invoicing, and project management through the Model Context Protocol.4253MIT
- AlicenseAqualityDmaintenanceEnables interaction with FastSpring e-commerce platform for managing orders, subscriptions, and accounts through natural language using the Model Context Protocol.119MIT
Related MCP Connectors
Manage your Savanto store from your AI: catalog, content, prompts, and analytics, by chat.
Manage your Jumpseller store with AI. Products, orders, customers, and more.
Stop re-explaining yourself to Agents. Give it the right context, right when needed.
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/PiotrRaszkowski/baselinker-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server