Agent Skills, MCP-Server oder Regeldatei: Was passt?
Vergleichen Sie Skills, MCP-Server und Regeldateien nach Tokenkosten und Pflegeaufwand. Die kurze Entscheidungsregel zeigt, wann welcher Mechanismus passt.
Agent Skills vs. MCP-Server vs. Regeldateien: die kurze Antwort
Agent Skills, MCP-Server und Regeldateien stellen einem Coding-Agent Wissen bereit. Wählen Sie anhand der Funktion dieses Wissens. MCP (Model Context Protocol) eignet sich für Daten, die beim nächsten Abruf anders sein können. Ein Skill eignet sich für eine Vorgehensweise, die Sie heute dokumentieren können und die auch in sechs Wochen noch korrekt ist. Eine Regeldatei eignet sich für die wenigen Fakten, die in jeder Sitzung gelten müssen.
Diese Entscheidung hat einen Preis: Kontext. Jedes Token, das für eine Anweisung verwendet wird, die der Agent nicht benötigt, steht nicht für den gelesenen Code zur Verfügung. Außerdem bezahlen Sie dieses Token bei jeder Anfrage erneut, weil das gesamte Kontextfenster mit jeder Anfrage erneut übertragen wird. Die nützliche Frage lautet daher nicht, welcher Mechanismus die Aufgabe erledigen kann. An den meisten Tagen können das alle drei. Die Frage ist, welcher Mechanismus im Leerlauf die geringsten Kosten verursacht.
Was die einzelnen Komponenten vor der Nutzung kosten
Die drei Varianten werden zu unterschiedlichen Zeitpunkten geladen; dieser zeitliche Unterschied ist entscheidend.
Eine Regeldatei wird bei jedem Start einer Sitzung vollständig geladen, unabhängig davon, ob sie relevant ist oder nicht. Claude Code liest CLAUDE.md zu Beginn jeder Konversation und lädt sie vollständig, ungeachtet ihrer Länge; lediglich Dateien über 4 MiB werden übersprungen. Das dokumentierte Ziel liegt bei unter 200 Zeilen pro Datei, da eine längere Datei mehr Kontext verbraucht und weniger zuverlässig befolgt wird. Beide Effekte wirken in die gleiche Richtung, weshalb eine 900 Zeilen lange Regeldatei eher schadet als nützt.
Eine Fähigkeit (Skill) wird in zwei Stufen geladen. Beim Start gelangt nur die description-Zeile aus dem jeweiligen SKILL.md-Frontmatter in den Kontext, sodass das Modell weiß, dass die Fähigkeit existiert und wann sie ungefähr anzuwenden ist. Der Hauptteil wird erst geladen, wenn die Fähigkeit aufgerufen wird. Ein 400 Zeilen langes Referenzdokument kostet Sie daher bis zum Moment seiner Verwendung so gut wie nichts.
Ein MCP-Server war früher die teure Variante, und hier sind die meisten Vergleiche, die Sie lesen werden, inzwischen veraltet. Die Werkzeugsuche ist im aktuellen Claude Code standardmäßig aktiviert. Nur die Werkzeugnamen und das Anweisungsfeld des Servers werden beim Sitzungsstart geladen; die vollständigen JSON (JavaScript Object Notation)-Schemata werden zurückgestellt, bis Claude nach ihnen sucht. Das Hinzufügen eines Servers kostet nicht mehr vorab Tausende von Token. Es entstehen zwar weiterhin Kosten, und in Konfigurationen, in denen die Werkzeugsuche deaktiviert ist, fallen diese weiterhin vollständig vorab an.
Die Daten hinter diesem Diagramm
[
{
"label": "Rules file, 200 lines",
"at_startup": "2,500",
"after_use": "2,500"
},
{
"label": "Skill, 12 KB body",
"at_startup": 40,
"after_use": "3,000"
},
{
"label": "MCP server, tool search on",
"at_startup": 500,
"after_use": "3,200"
},
{
"label": "MCP server, tool search off",
"at_startup": "4,500",
"after_use": "4,500"
}
]Dies sind Schätzungen, keine Messwerte von Ihrem System. Sie basieren auf der Textgröße, die der jeweilige Mechanismus lädt, bei etwa vier Zeichen pro Token: Eine 200 Zeilen lange Regeldatei entspricht etwa 10 KB Markdown, eine Fähigkeitsbeschreibung etwa 160 Zeichen, und ein Server, der zwölf Werkzeuge bereitstellt, umfasst etwa 18 KB Schema plus einen 2 KB großen Anweisungsblock. Claude Code begrenzt das Anweisungsfeld des Servers sowie die Beschreibung jedes Werkzeugs, das vorab geladen wird, standardmäßig auf 4.096 Zeichen, und eine über die Werkzeugsuche geladene Werkzeugbeschreibung auf 16.384 Zeichen; für diesen Teil gibt es also eine Obergrenze. Vor v2.1.296 lag das kürzere Limit bei 2.048 Zeichen, und CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH ersetzt beide Grenzwerte, falls Sie es festlegen. Der nächste Abschnitt zeigt Ihnen, wie Sie Ihre eigenen tatsächlichen Zahlen ablesen können.
Betrachten Sie die ersten beiden Zeilen zusammen. Die Regeldatei kostet 2,500 Token in einer Sitzung, in der sie niemand benötigte. Die Fähigkeit kostet in derselben Sitzung 40 Token und 3,000 in der einen von zehn Sitzungen, in denen sie ausgelöst wird. Die letzten beiden Zeilen zeigen denselben Server zweimal, einmal mit aktivierter und einmal mit deaktivierter Werkzeugsuche: 500 Token gegenüber 4,500. Diese Differenz ist der Grund, warum sich alte Ratschläge über den hohen Kontextverbrauch von MCP immer noch halten.
Stand Oktober 2026 verwendet Claude Code die Werkzeugsuche bei Claude Opus 4, Sonnet 4, Haiku 4.5 und neueren Modellen sowie bei Opus 4.5, Sonnet 4.5, Haiku 4.5 und neuer auf der Agent Platform von Google Cloud. Bei älteren Modellen und bei Microsoft Foundry-Bereitstellungen, die auf Azure gehostet werden, wird jedes MCP-Werkzeug unabhängig von Ihren Einstellungen vorab geladen. Mit ANTHROPIC_BASE_URL, das auf ein LLM-Gateway verweist, ist die Werkzeugsuche seit v2.1.304 standardmäßig aktiviert; ältere Versionen deaktivierten sie dort, sofern Sie sich nicht explizit dafür entschieden haben. Verwenden Sie ENABLE_TOOL_SEARCH zur Steuerung: false lädt jedes Schema vorab, true stellt sie zurück (unter Verwendung derselben Modell- und Bereitstellungs-Fallbacks wie bei der Standardeinstellung), und auto lädt sie nur dann vorab, wenn sie in 10 % des Kontextfensters passen. Ein Server, der mit "alwaysLoad": true konfiguriert ist, lädt seine Werkzeuge ungeachtet von ENABLE_TOOL_SEARCH vorab.
# Load schemas up front only if they fit in 5% of the window
ENABLE_TOOL_SEARCH=auto:5 claudeDie entscheidende Frage lautet: Ändern sich die Daten zwischen den Aufrufen?
Stellen Sie diese Frage zuerst, weil sie eine Option sofort ausschließt. Wenn der Agent etwas lesen oder schreiben muss, das beim nächsten Zugriff anders sein kann, benötigen Sie einen Server. Dazu gehören ein Issue-Tracker, eine Datenbank, ein Monitoring-Dashboard oder Ihre eigene interne API (application programming interface). Die Information aufzuschreiben, hilft nicht, weil sie in dem Moment veraltet ist, in dem jemand anderes den Datensatz bearbeitet. Auch Ihre eigene Codebasis gehört auf diese Liste, weil sich ihre Struktur mit jedem Commit ändert. Daher ist es sinnvoll, dem Agenten über MCP eine geparste Übersicht des Repositorys bereitzustellen, statt die Struktur in einer Datei zu beschreiben, die mit der Zeit veraltet.
Wenn die Antwort auch in sechs Wochen noch korrekt wäre, ohne dass jemand sie pflegen muss, benötigen Sie einen Skill. Eine Release-Checkliste. Eine Migrationsprozedur. Die Struktur Ihrer Fehlerantworten. Die Vorgaben dieses Repositorys für das Schreiben von Tests. Ein Skill ist eine Datei in git. Er benötigt weder einen Port noch einen Prozess und kann nur dadurch fehlschlagen, dass sein Inhalt falsch ist. Das lässt sich bei einer Code-Review erkennen.
Wenn es sich um eine einzelne Tatsache handelt, die für Arbeiten gelten muss, an die Sie bisher noch nicht gedacht haben, tragen Sie sie in die Regeldatei ein. Run make lint before committing. Never push to main. Handlers live in src/api/handlers/. Eine Zeile pro Regel. Sobald ein Eintrag zu einer Abfolge von Schritten wird, ist er keine Tatsache mehr, sondern eine Prozedur. Er sollte dann in einen Skill verschoben werden.
Wann eine Regeldatei ausreicht
Regeldateien werden von verschiedenen Orten geladen, sortiert von allgemein nach spezifisch: eine verwaltete Richtliniendatei, Ihre persönliche ~/.claude/CLAUDE.md, die ./CLAUDE.md oder ./.claude/CLAUDE.md des Projekts sowie eine git-ignorierte ./CLAUDE.local.md. Alle gefundenen Dateien werden aneinandergehängt, anstatt sich gegenseitig zu überschreiben; Dateien, die näher an Ihrem Arbeitsverzeichnis liegen, werden zuletzt gelesen.
Seit v2.1.277 liest Claude Code auch AGENTS.md, jedoch standardmäßig nur, wenn sich keine CLAUDE.md, .claude/CLAUDE.md oder CLAUDE.local.md in Ihrem Arbeitsverzeichnis oder darüber befindet. Wenn Ihr Repository beides enthält, liest Claude nur die CLAUDE.md-Dateien. Pflegen Sie daher keine zwei Kopien, die auseinanderdriften könnten.
ln -s AGENTS.md CLAUDE.mdDer Symlink gibt bei Erfolg keine Meldung aus. Starten Sie eine Sitzung, führen Sie /context aus und bestätigen Sie, dass CLAUDE.md unter Memory files erscheint. Wenn sie dort nicht aufgeführt ist, hat der Agent sie nie erkannt, und eine Umformulierung wird nicht helfen. Wenn Sie zusätzlich Claude-spezifische Zeilen wünschen, verwenden Sie stattdessen die Import-Form und platzieren Sie diese unter dem Import.
@AGENTS.md
## Claude Code
Use plan mode for changes under `src/billing/`.Hier lauert eine Falle. @path-Importe speichern keinen Kontext. Die importierte Datei wird beim Start expandiert und zusammen mit der Datei geladen, die auf sie verwies, bis zu einer Tiefe von vier Sprüngen. Das Aufteilen einer 600 Zeilen langen Regeldatei in sechs Importe sorgt für Ordnung für Menschen und ändert die Token-Kosten um exakt nichts. Die Konventionen hinter AGENTS.md und ihrem für Menschen lesbaren Pendant sind lesenswert, bevor Sie sich auf ein Layout festlegen.
Was die Kosten tatsächlich senkt, ist .claude/rules/ mit einem paths-Feld. Eine Regeldatei mit paths-Frontmatter wird nur geladen, wenn der Agent eine Datei berührt, die auf eines der Muster passt.
---
paths:
- "src/api/**/*.ts"
---
# API rules
- Every endpoint validates its input.
- Use the standard error response shape.Eine Regel ohne paths-Feld wird beim Start mit der gleichen Priorität wie .claude/CLAUDE.md geladen. Das bewährte Muster sind daher kurze, bedingungslose Regeln, ergänzt um eine paths-Liste für alles, was nur innerhalb eines bestimmten Verzeichnisses relevant ist.
Wenn Sie eine Skill benötigen
Eine Skill ist ein Verzeichnis, das eine SKILL.md enthält. Persönliche Skills befinden sich unter ~/.claude/skills/<name>/SKILL.md und gelten für jedes Projekt auf Ihrem Rechner. Projekt-Skills befinden sich unter .claude/skills/<name>/SKILL.md, werden mit dem Repository übertragen und können wie jede andere Datei in einem Pull Request geprüft werden.
mkdir -p ~/.claude/skills/summarize-changes---
name: summarize-changes
description: Summarizes uncommitted changes and flags anything risky. Use when the user asks what changed, wants a commit message, or asks to review their diff.
---
Run `git status` and `git diff` against the merge base.
Group the changes by intent, not by file.
Call out anything touching auth, migrations or deletions.Der description ist der einzige Teil dieser Datei, der im Kontext steht, bevor die Skill ausgeführt wird; er erfüllt daher zwei Aufgaben. Er beschreibt, was die Skill tut, und legt fest, wann sie verwendet werden soll. Eine Beschreibung wie "Hilft bei Deployments" bietet dem Modell keinen Anhaltspunkt für einen Abgleich mit einer Anfrage. Die Skill wird daher nie ausgeführt, und Sie kommen zu dem Schluss, dass Skills nicht funktionieren.
Der Verzeichnisname wird zum Befehl, das obige Beispiel ergibt also /summarize-changes. In einer persönlichen oder Projekt-Skill legt ein Frontmatter-name, das sich vom Verzeichnisnamen unterscheidet, den Befehl fest, der im /-Menü angezeigt wird. Dies gilt jedoch nur, sofern kein anderer Befehl diesen Namen bereits verwendet; der Verzeichnisname ruft die Skill weiterhin auf.
Sobald eine Skill aufgerufen wird, geht ihr gerenderter Inhalt als einzelne Nachricht in die Konversation ein und bleibt dort für den Rest der Sitzung bestehen. Claude Code liest die Datei bei späteren Schritten nicht erneut ein. Schreiben Sie dauerhafte Anweisungen statt einmaliger Schritte und halten Sie den Inhalt kompakt, da ab diesem Zeitpunkt jede Zeile bei jeder Anfrage zusätzliche Kosten im Kontext verursacht. Nach der automatischen Komprimierung hängt Claude Code den letzten Aufruf jeder Skill erneut an und behält die ersten 5.000 Token jeder Skill innerhalb eines Gesamtbudgets von 25.000 Token bei. Wenn Sie mehrere große Skills in einer Sitzung aufrufen, werden die ältesten vollständig verworfen; deshalb kann es scheinen, als ob eine Skill nach einer langen Konversation keine Rolle mehr spielt. Rufen Sie sie erneut auf, und sie ist wieder aktiv. Eine prozesslastige Skill macht diesen Kompromiss deutlich: die unlazy-Skill und ihre Depth-Tree-Methode verbraucht echten Kontext für Gates und eine Plandatei, liefert dafür aber einen Agenten, der nicht vorzeitig erklärt, die Arbeit sei beendet. Wenn derselbe Prozess auf mehr als eine Codebasis zutrifft, teilen Sie eine Skill über mehrere Repositories hinweg, anstatt die Datei zu kopieren.
Wenn Sie einen MCP-Server benötigen
Das Hinzufügen erfolgt mit einem einzigen Befehl. Der Transport bestimmt die Form.
# Remote HTTP server
claude mcp add --transport http notion https://mcp.notion.com/mcp
# Remote HTTP server behind a bearer token
claude mcp add --transport http secure-api https://api.example.com/mcp \
--header "Authorization: Bearer your-token"
# Local stdio server: everything after -- is passed through untouched
claude mcp add --env AIRTABLE_API_KEY=YOUR_KEY --transport stdio airtable \
-- npx -y airtable-mcp-server-- ist wichtig. Bei einem stdio-Server trennt es die eigenen Optionen von Claude Code von der Befehlszeile, die Ihren Server startet. Wenn Sie es weglassen, wird ein --port 8080, das für den Server bestimmt ist, als Option für claude mcp add interpretiert. claude mcp add weist es anschließend zurück.
claude mcp list
claude mcp get notionclaude mcp add bestätigt den Vorgang mit einer Zeile Added .... Das zeigt nur, dass die Konfiguration auf die Festplatte geschrieben wurde. claude mcp list zeigt den tatsächlichen Zustand an, weil der Befehl neben jedem Server einen Status ausgibt: ✔ Connected, ! Needs authentication oder ✘ Failed to connect. Ein Fehlerstatus bedeutet, dass Claude Code diesen Server nicht erreichen konnte. Die Listenabfrage selbst ist dadurch nicht fehlgeschlagen. Innerhalb einer Sitzung liefert /mcp dieselbe Übersicht pro Server und zusätzlich die Anzahl der Tools.
Jeder Aufruf eines MCP-Servers ist unabhängig und enthält alle benötigten Informationen. Das ist der Grund, warum sich ein MCP-Server nicht an Ihre vorherige Anfrage erinnert. Diese Designentscheidung hat eine Konsequenz, die Sie übernehmen müssen: Jeder Zustand, der erhalten bleiben soll, muss hinter dem Server in einer Datenbank oder Datei gespeichert werden. Diese Komponente müssen Sie nun selbst betreiben.
Ein MCP-Server ist ein Prozess, den Sie betreiben müssen
Hier liegt der Aufwand, den die Anbietervergleiche auslassen. Ein Skill ist eine Datei. Ein MCP-Server ist Software, die irgendwo ausgeführt wird. Wenn dieses System Ihr VPS (virtual private server) ist, sind Sie für dessen Verfügbarkeit verantwortlich.
Ein stdio-Server ist der einfache Fall. Claude Code startet ihn beim Beginn der Sitzung als untergeordneten Prozess. Beim Ende der Sitzung wird der Prozess beendet. Sie müssen nichts überwachen und keine Updates nach einem eigenen Zeitplan einspielen. Ein entfernter HTTP-Server ist ein dauerhaft laufender Dienst. Er benötigt alles, was ein solcher Dienst benötigt, angefangen bei einem eigenen Benutzer. Erstellen Sie den Benutzer mcp, unter dem die folgende Unit ausgeführt wird, und weisen Sie ihm das Verzeichnis des Servers zu:
sudo useradd --system --home-dir /srv/notes-mcp --shell /usr/sbin/nologin mcp
sudo chown -R mcp:mcp /srv/notes-mcp[Unit]
Description=Notes MCP server
After=network-online.target
Wants=network-online.target
[Service]
User=mcp
WorkingDirectory=/srv/notes-mcp
ExecStart=/usr/bin/node /srv/notes-mcp/dist/server.js
Environment=PORT=8931
Restart=on-failure
RestartSec=5
NoNewPrivileges=true
PrivateTmp=true
[Install]
WantedBy=multi-user.targetsudo systemctl daemon-reload
sudo systemctl enable --now notes-mcp
systemctl is-active notes-mcp
journalctl -u notes-mcp -n 50 --no-pagersystemctl is-active sollte active ausgeben. Gibt der Befehl failed aus, enthält das Journal den Grund. Beim ersten Start fehlen fast immer eine Umgebungsvariable oder ein anderer Prozess belegt bereits den Port. Restart=on-failure ist hier nicht optional, weil sich ein abgestürzter MCP-Server nicht selbst meldet. Sie erfahren davon erst, wenn der Agent Ihnen mitteilt, dass er Ihren Issue-Tracker nicht lesen kann.
Binden Sie den Prozess an 127.0.0.1 und schalten Sie einen Reverse Proxy mit TLS (Transport Layer Security) davor. Ein MCP-Server, der auf Ihre Datenbank zugreift und ohne Authentifizierung an einem öffentlichen Port antwortet, ist eine veröffentlichte Datenbank. Einen MCP-Server auf einem VPS betreiben behandelt den Proxy, das Zertifikat und die Firewall-Konfiguration ausführlich.
Ermitteln Sie anschließend den wiederkehrenden Aufwand realistisch. Der Dienst erhält Sicherheitsupdates nach seinem eigenen Zeitplan, unabhängig vom Agenten, der mit ihm kommuniziert. Sein OAuth-Token läuft ab, und claude mcp list gibt zu einem ungünstigen Zeitpunkt ! Needs authentication aus. Seine Zugangsdaten liegen in einer Konfigurationsdatei oder einem Authorization-Header. Sie müssen daher genauso sorgfältig behandelt werden wie jedes andere Geheimnis. Das ist ein eigenes Thema: Geheimnisse außerhalb der Reichweite eines AI-Agenten halten. Für einen Skill fällt keiner dieser Aufwände an.
Vergleichen Sie diese Option mit der Alternative, bevor Sie den Server einrichten. Wenn sich die Daten hinter dem geplanten Server ungefähr einmal pro Quartal ändern, ist ein Skill, der dem Agenten den Speicherort und die Bedeutung der Felder mitteilt, günstiger als ein Dienst, den Sie dauerhaft betreiben müssen.
So messen Sie Ihre eigenen Kontextkosten
Hören Sie auf zu schätzen und führen Sie /context innerhalb einer Sitzung aus. Dies gibt die Aufschlüsselung beim Start aus: System-Prompt, Speicherdateien, Tools und MCP-Server, jeweils mit dem Token-Gewicht.
Prüfen Sie zwei Dinge. Bestätigen Sie unter Memory files, dass jede von Ihnen erwartete Regeldatei aufgeführt ist. Eine fehlende Datei ist für den Agenten unsichtbar; dies ist also der erste Punkt, den Sie ausschließen sollten, wenn Anweisungen ignoriert werden. Wenn die Datei aufgeführt ist und die Regel dennoch übersprungen wird, liegt die Ursache woanders, und die Gründe, warum ein Agent eine Anweisung ignoriert, die er sehen kann sollten durchgegangen werden, bevor Sie die Zeile erneut umschreiben. Betrachten Sie anschließend die Kosten Ihrer Server. Wenn ein Server, den Sie zweimal im Monat nutzen, einer der größten Posten in dieser Liste ist, deaktivieren Sie ihn in /mcp und schalten Sie ihn für die Sitzungen, in denen er benötigt wird, wieder ein. Die Konfiguration bleibt in beiden Fällen erhalten.
Wenn der Discovery-Cache für Ihr Konto aktiviert ist, kann ein Remote-Server, den Sie bereits verwendet haben, einen Status wie cached 2h ago · connects on first use · 5 tools anzeigen. Das bedeutet, dass Claude Code die Tool-Liste aus einer früheren Sitzung gelesen hat, anstatt beim Start eine Verbindung herzustellen; die Verbindung erfolgt beim ersten Aufruf eines Tools. Die Tools sind ab Ihrer ersten Nachricht verfügbar, es gibt also nichts zu beheben. Der Cache ist standardmäßig deaktiviert, sofern er nicht durch eine schrittweise Einführung für Sie aktiviert wurde: Setzen Sie MCP_DISCOVERY_CACHE=0, damit jeder Server beim Start eine Verbindung herstellt, oder 1, um den Cache zu aktivieren. Für einen umfassenderen Überblick behandelt die Verwaltung des Claude Code Kontextfensters, was die Komprimierung überlebt, und was diese Token Sie tatsächlich kosten rechnet die Zahlen in Geld um.
Warum wird mein Skill nie ausgelöst?
Die häufigste Ursache ist die description. Dies ist der einzige Kontexttext, bevor der Skill ausgeführt wird. Wenn dieser die Situation nicht benennt, findet keine Übereinstimmung statt. Schreiben Sie den Trigger in den Satz: "Verwenden, wenn der Benutzer fragt, was sich geändert hat, eine Commit-Nachricht wünscht oder um eine Überprüfung seines Diffs bittet." Vage Beschreibungen schlagen lautlos fehl, was die Fehlersuche erschwert.
Die zweite Ursache ist ein Tippfehler im Frontmatter, was in Claude Code ebenfalls lautlos bleibt. Ein Feldname muss exakt übereinstimmen, einschließlich Bindestrichen. Claude Code ignoriert Felder, die es nicht erkennt, ohne eine Fehlermeldung auszugeben. Die explizite Fehlermeldung erscheint erst, wenn Sie den Skill paketieren oder auf claude.ai beziehungsweise die Skills API hochladen. Diese akzeptieren weniger Felder und lehnen den Rest direkt ab:
Unexpected key(s) in SKILL.md frontmatter: argument-hint. Allowed properties are: allowed-tools, compatibility, description, license, metadata, nameDie dritte Ursache ist der Speicherort. Projekt-Skills werden aus .claude/skills/ in Ihrem Arbeitsverzeichnis und in jedem übergeordneten Verzeichnis bis zum Repository-Root geladen. Skills in verschachtelten Verzeichnissen unterhalb des Startverzeichnisses werden beim Start nicht geladen. Sie erscheinen erst, wenn der Agent zum ersten Mal eine Datei in diesem Unterverzeichnis liest oder bearbeitet. Bis dahin werden sie nicht per Autocomplete vorgeschlagen und können nicht namentlich aufgerufen werden.
Das MCP-Äquivalent zu diesem lautlosen Fehler ist ein .mcp.json-Eintrag mit einem url und ohne type. Claude Code liest jeden Eintrag ohne type als stdio-Server, überspringt den Eintrag daher und meldet:
MCP server "notes" has a "url" but no "type"; add "type": "http" (or "sse" / "ws") to this entryAlle drei zusammen verwenden
Diese Mechanismen konkurrieren nicht um denselben Platz. Eine funktionierende Konfiguration verwendet jeden Mechanismus dort, wo sein Einsatz wenig Aufwand verursacht. Die Regeldatei enthält wenige Zeilen, die überall gelten. Skills enthalten die Abläufe und werden nur geladen, wenn sie benötigt werden. Ein MCP server, gelegentlich auch zwei, verbindet die Systeme, deren Inhalte Sie im Voraus nicht bestimmen können. Wenn Sie sich noch ein mentales Modell des ersten Mechanismus aufbauen, beschreibt was ein Agent Skill tatsächlich ist das Format ausführlich.
Mit einem Test lässt sich meist klären, wohin etwas gehört. Löschen Sie es, starten Sie eine neue Sitzung und geben Sie dem Agent die Aufgabe. Wenn der Agent lediglich langsamer ist, gehörte es in einen Skill. Wenn der Agent mit voller Überzeugung falsche Ergebnisse liefert, gehörte es in die Regeldatei. Wenn der Agent die Informationen überhaupt nicht abrufen kann, benötigen Sie den Server. Dann brauchen Sie außerdem einen Plan, wie dieser Server dauerhaft betrieben wird.
FAQ
Sollte ich einen Skill schreiben oder einen MCP-Server aufsetzen?
Entscheiden Sie anhand der Frage, ob sich die Information zwischen zwei Aufrufen ändert. Wenn der Agent einen Live-Zustand lesen muss, den jemand anderes bearbeiten kann – etwa ein Issue-Tracker, eine Datenbank oder ein Dashboard –, benötigen Sie einen MCP-Server. Alles, was Sie statisch niederschreiben, ist veraltet, sobald sich der Datensatz ändert. Wenn Sie die Antwort einmal aufschreiben könnten und sie auch in sechs Wochen noch korrekt wäre, schreiben Sie einen Skill. Der Skill ist eine Datei in git ohne laufenden Prozess, ohne zu öffnenden Port und ohne Patch-Zyklus. Er ist daher die kostengünstigere Option, sofern er überhaupt möglich ist.
Belegen MCP-Server immer noch mein Kontextfenster?
Deutlich weniger als früher. Die Werkzeugsuche ist im aktuellen Claude Code standardmäßig aktiviert. Daher werden beim Sitzungsstart nur die Werkzeugnamen und das Anweisungsfeld des Servers geladen; die vollständigen Schemata werden abgerufen, wenn Claude danach sucht. Dies gilt seit v2.1.304 auch für Sitzungen hinter einem LLM-Gateway, das über ANTHROPIC_BASE_URL konfiguriert wurde. Ein Vorabladen findet weiterhin statt bei ENABLE_TOOL_SEARCH=false, für einen Server, der auf "alwaysLoad": true eingestellt ist, bei Modellen, die älter sind als Claude Opus 4 und Sonnet 4 (älter als die 4.5-Generation auf der Agent Platform von Google Cloud), sowie bei Microsoft Foundry-Bereitstellungen auf Azure. Führen Sie /context aus, um Ihren aktuellen Status zu prüfen, da die Zahlen in älteren Vergleichsbeiträgen von einem Vorabladen ausgehen.
Liest Claude Code die Datei AGENTS.md?
Ja, seit v2.1.277, aber standardmäßig nur, wenn sich keine CLAUDE.md, .claude/CLAUDE.md oder CLAUDE.local.md in Ihrem Arbeitsverzeichnis oder darüber befinden. Wenn Ihr Repository beides enthält, liest Claude nur die CLAUDE.md-Dateien. Verweisen Sie daher auf die jeweils andere Datei, anstatt zwei Kopien zu pflegen. Führen Sie ln -s AGENTS.md CLAUDE.md für einen einfachen Symlink aus oder setzen Sie @AGENTS.md in die erste Zeile einer CLAUDE.md und fügen Sie darunter Claude-spezifische Anweisungen hinzu. Starten Sie anschließend eine Sitzung und führen Sie /context aus, um zu bestätigen, dass CLAUDE.md unter den Memory-Dateien erscheint.
Warum hat mein Skill mitten in einer Sitzung keine Wirkung mehr?
Die automatische Komprimierung ist der übliche Grund. Wenn das Gespräch zusammengefasst wird, hängt Claude Code den jeweils letzten Aufruf jedes Skills erneut an. Dabei werden die ersten 5.000 Token jedes Skills beibehalten, innerhalb eines kombinierten Budgets von 25.000 Token für alle Skills zusammen. Dieses Budget wird ausgehend vom zuletzt aufgerufenen Skill gefüllt. Wenn Sie also mehrere große Skills aufgerufen haben, werden die älteren vollständig verworfen. Rufen Sie den Skill erneut auf, um seinen vollständigen Inhalt wiederherzustellen.
Wie verhindere ich, dass eine lange Regeldatei in jeder Sitzung geladen wird?
Verschieben Sie Teile, die nur gelegentlich relevant sind, in .claude/rules/-Dateien mit einem paths-Feld im Frontmatter. So wird jede Datei nur geladen, wenn der Agent eine Datei berührt, die auf eines der Muster passt. Das Aufteilen der Datei in @path-Importe hilft nicht, da importierte Dateien beim Start zusammen mit der referenzierenden Datei expandiert und geladen werden. Alles, was ein mehrstufiges Verfahren und keine dauerhafte Tatsache ist, sollte stattdessen ein Skill werden, da der Inhalt eines Skills keine Kosten verursacht, bis er aufgerufen wird.