tecof-mcp
Official@tecof/mcp
Stdio-MCP-Server für die Tecof Developer API v1. Läuft innerhalb eines Tecof-Theme-Repositorys; liest die Theme-Komponenten von der Festplatte (AST), übersetzt die einfachen „Abschnittsdefinitionen" des Agenten in ein Editor-Dokument und erstellt/aktualisiert Entwurfsseiten über die Developer API. Die Veröffentlichung erfolgt immer über das Panel (es gibt kein Publish in der API).
SDK:
@modelcontextprotocol/server@^2(+zod@^4) —McpServer+serveStdioNode ≥ 20, ESM
Tool-Annotationen (
readOnlyHint,destructiveHint) und_meta["anthropic/requiresUserInteraction"](Löschen) werden unterstützt
Installation
Im Stammverzeichnis des Theme-Repositorys:
# 1) Panelden API anahtarı üretin: Ayarlar → Geliştirici / API Anahtarları (scope: pages:read, pages:write)
# 2) .env (gitignore'da) içine yazın
echo 'TECOF_API_TOKEN=tcf_...' >> .envDer Server läuft über npx; eine globale Installation ist nicht erforderlich:
npx -y @tecof/mcp@latestUmgebungsvariablen
TECOF_PROJECT_DIR → CLAUDE_PROJECT_DIR → process.cwd() – in dieser Reihenfolge wird das Projektverzeichnis ermittelt; .env und .env.local werden von dort gelesen. process.env wird nicht überschrieben – Dateiwerte füllen nur leere Schlüssel (.env.local > .env).
Variable | Erforderlich | Beschreibung |
| ja |
|
| ja* | Backend-Adresse; falls nicht vorhanden, wird |
| nein | Globale Theme-ID; falls nicht vorhanden |
| nein | Lokales Vorschau-Root (Standard: |
| nein | Falls sich das Theme-Repository in einem anderen Verzeichnis befindet |
Bei fehlendem Token/URL startet der Server trotzdem; list_components und validate_document funktionieren, Seiten-Tools geben einen Hinweisfehler zurück. Logs werden nur auf stderr geschrieben; auch unbehandelte Fehler landen auf stderr, der Prozess stürzt nicht ab.
Sicherheit: TECOF_API_URL muss https sein. Wird eine http://-Adresse (außer Loopback) angegeben, wird beim Start eine stderr-Warnung ausgegeben und jedem Tool-Fehler derselbe Hinweis angehängt; http→https-Weiterleitungen werden nicht verfolgt (Node fetch entfernt bei Weiterleitungen den Authorization-Header, was zu irreführenden 401 führt) – eine 3xx-Antwort wird in den Fehler „TECOF_API_URL-Schema/-Host falsch" umgewandelt. Das Request-Timeout (30 s) umfasst Header- und Body-Lesen vollständig.
Claude Code — .mcp.json
{
"mcpServers": {
"tecof": {
"type": "stdio",
"command": "npx",
"args": ["-y", "${TECOF_MCP_PACKAGE:-@tecof/mcp@latest}"]
}
}
}Die Env-Variable TECOF_MCP_PACKAGE überschreibt die Paket-Spezifikation – vor der Veröffentlichung auf npm oder für die lokale Entwicklung diesen Repo-Ordner angeben (npx -y /pfad/zu/tecof-mcp führt das bin im Ordner aus):
export TECOF_MCP_PACKAGE=/Users/<siz>/Desktop/Tecof/tecof-mcp # claude'u bu shell'den başlatınVeröffentlichung (npm)
npm run build && npm test && node scripts/smoke.mjs
npm version patch # ya da minor
npm publish --access public # @tecof kapsamı — tecof-theme-editor/analytics ile aynı hesapCodex — .codex/config.toml
[mcp_servers.tecof]
command = "npx"
args = ["-y", "@tecof/mcp@latest"]Gemini CLI — .gemini/settings.json
{
"mcpServers": {
"tecof": {
"command": "npx",
"args": ["-y", "@tecof/mcp@latest"]
}
}
}Das Token wird in keiner Konfigurationsdatei gespeichert; es bleibt in .env. Der Client-Prozess startet im Stammverzeichnis des Theme-Repositorys, der Server liest die .env von dort.
Related MCP server: anticms-mcp
Tools
Tool | Eingabe | Funktion |
| — | Shop, Sprachen, Theme (themeId/merchantThemeId/domain), Token-Scope/-Ablauf, Seitenanzahl |
|
| Themenkatalog (vom Datenträger, AST, mtime-Cache). |
|
| Seitenliste (Slug aufsteigend) |
|
| outline: Abschnitts-/Slot-Baum (id, Typ, Kurztext); full: draftData |
|
| Validiert ohne zu speichern; |
|
| Erstellt Entwurf; Header/Footer werden aus gemeinsamen Komponenten der |
|
| GET → Operationen anwenden → validieren → PUT (optimistisches Sperren mit |
|
| Soft Delete – Benutzerbestätigung erforderlich |
|
| 1-stündige Entwurfsvorschau-Links (Storefront + lokal) |
Ergebnisse werden als content[0].text (JSON) + structuredContent zurückgegeben; Fehler enthalten isError: true mit Feld-/Pfadinformationen (damit der Agent sie korrigieren kann).
update_page-Operationen
append_section{section} (vor dem Footer), insert_section{section, before?|after?} (ohne Anker wie append vor dem Footer),
replace_section{id, section}, remove_section{id}, move_section{id, before?|after?},
set_props{id, props} (flaches Zusammenführen), set_slot{id, slot, children} (ersetzt den Slot vollständig; neue Kinder werden zuerst erstellt, bei Fehlern bleibt der alte Inhalt erhalten),
set_root_props{props}.
Verhaltenshinweise:
Gemeinsame Komponenten sind schreibgeschützt – einschließlich ihrer untergeordneten Knoten. Ein Knoten mit
sharedComponentId(Header/Footer) und alle seine Nachkommen unter dessen Zonen (Logo, NavLink, FooterColumn …) können nicht überset_props/set_slot/replace_section/remove_sectiongeändert werden; es wird der Fehler „gemeinsame Komponente – bitte im Panel-Editor bearbeiten" zurückgegeben. Die gemeinsame Wurzel selbst kann mitremove_sectionvon der Seite entfernt werden (mit Warnung; die Master-Vorlage bleibt unberührt). In derget_page-Gliederung sind diese Knoten mitshared: truemarkiert.Fehler-/Warnungsunterscheidung (Operationsmodus): Das vom GET stammende Dokument wird zuerst normalisiert (in props verbliebene Inline-Slot-Arrays → Zonen;
SharedComponentRef-Knoten mit gelöschtem Master werden mit Warnung verworfen – das Backend macht beim PUT dasselbe). Knoten, die der Agent in dieser Runde hinzugefügt/geändert hat, werden streng geprüft (unbekannter Typ, Allow-Verletzung, Element-at-Root → Fehler); Verstöße in bereits vorhandenen, unveränderten Knoten sind nur Warnungen – eine unabhängige Aktualisierung wird nicht blockiert, nur weil sich das Theme geändert hat. Imdocument-Modus sowie beicreate_page/validate_documentwerden alle Knoten streng geprüft.Leere
operations: [](auch ohne Meta) → Fehler „keine Operationen anzuwenden"; es wird kein PUT gesendet. Wird nurmetaangegeben, wirddraftDatanicht gesendet (Status wechselt nicht von published→changed, es wird keine unnötige Revision erstellt); das FeldsavedDraftin der Antwort zeigt dies an.Backend-Speicherwarnungen (
warnings: [{code,path,message}]im Antwortstamm, z. B. Verwerfen einer Header-Verknüpfung mit gelöschtem Master) werden in dercreate_page/update_page-Antwort alsserver: [code] path: message-Zeilen zurückgegeben.
Autorenformat
Der Agent schreibt keinen Dokument-JSON, sondern einen Abschnittsbaum; ID-Erzeugung, defaultProps-Zusammenführung, Slot→Zone-Konvertierung und Mehrsprachigkeits-Kurzbefehle werden serverseitig durchgeführt.
{
"type": "FeaturesSection",
"props": { "columns": "3", "background": "dark" },
"variant": "dark", // bileşenin variants anahtarı (varsa)
"slots": {
"contentSlot": [
{ "type": "Title", "props": { "text": { "tr": "Neden biz?", "en": "Why us?" }, "size": "lg" } }
],
"itemsSlot": [
{ "type": "Card", "props": { "href": "/hakkimizda" },
"slots": { "contentSlot": [ { "type": "Paragraph", "props": { "text": "<p>Hızlı teslimat</p>" } } ] } }
]
}
}Transformationsregeln:
Wenn
typenicht im Katalog vorhanden ist, Fehler;element-Kategorie an der Wurzel ist ein Fehler; Slot-Kind außerhalb vonallowist ein Fehler.props=defaultProps(−id, −Inline-Slot-Kinder) ←variants[variant].props(+_variant) ← Benutzer-props.Wenn
slots[slot]angegeben ist, wird es verwendet; andernfalls die Beispielkinder aus defaultProps; bei[]leer. Alle werden inzones["<id>:<slot>"]geschrieben,props[slot] = [].Mehrsprachigkeits-Kurzbefehle:
"text"→[{code: Standardsprache, value}];{tr, en}→[{code,value}]; fehlende Sprache ist eine Warnung.link:"/pfad"→[{code, value:{url, target:"_self"}}].upload: URL-String → externer Dateidatensatz.Wenn der
select/radio-Wert außerhalb vonoptionsliegt, Fehler. Schlüssel mit_-Präfix sind ein Fehler (classNameist frei).id: 8 Zeichen
[A-Za-z0-9_-], dokumentweit eindeutig (eine gültige und eindeutigeprops.idwird akzeptiert).
Entwicklung
npm install
npm run build # tsc → dist/ (+ dist/bin.js +x)
npm test # vitest (parser, build, validate, operations, api mock, config, uçtan uca MCP)
node scripts/smoke.mjs # dist/bin.js'i stdio ile ayağa kaldırıp initialize + tools/list doğrularTests senden keine Anfragen an echte Backends (fetch-Mock); der Themenkatalog wird aus den Kopierkomponenten unter test/fixtures/theme gelesen.
Programmatische Nutzung (HTTP-Transport usw.):
import { buildServer, ServerContext, loadConfig } from "@tecof/mcp";
const ctx = new ServerContext({ config: loadConfig() });
const server = buildServer({ ctx }); // McpServer — istediğiniz transport'a bağlayınResources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityDmaintenanceMCP server for integrating coding agents (Claude Code CLI, etc.) with the GIMS Automation system. Enables development of automation scripts, data source types, activator types, and Git synchronization.61MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for generating AntiCMS v3 JSON component templates with validation and field type support.11MIT
- AlicenseBqualityDmaintenanceMCP Server for Git operations, agent templates, and project utilities.992MIT
- AlicenseAqualityBmaintenanceMCP server that lets agents edit real Microsoft Word (.docx) documents - tracked changes, tables, styles, comments, content controls, and document properties - with every edit validated and previewed before saving. Built on the Open XML SDK (no Word automation); reads and writes documents in place through filesystem or SharePoint storage.714MIT
Related MCP Connectors
MCP server for AgentDocs (agentdocs.eu): read, search, write, comment on & share Markdown docs.
MCP server for the PDFGate API. Generate PDFs, manage documents and handle e-signatures.
A MCP server built for developers enabling Git based project management with project and personal…
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/tecof/tecof-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server