Skill Graph MCP Server
Skill Graph
Ein Claude Code-Plugin, das die Skills und Agents, die Sie bereits haben, in einen Graphen verwandelt, den Sie abfragen können – aus einer Sitzung, in Ihrem Browser oder in einer Desktop-App.
Es katalogisiert jeden Agenten und jeden Skill in den Ordnern, auf die Sie es verweisen, zählt, welche davon tatsächlich welche anderen erwähnen, durchsucht Ihren Rechner nach Projekten, die jeden einzelnen installiert haben, und stellt das alles als MCP-Tools zur Verfügung. Alles, was es weiß, stammt aus dem Lesen echter Dateien.

Klicken Sie auf einen Knoten, um zu sehen, was darauf verweist, worauf er verweist, welche Projekte ihn installiert haben, sowie Ihre eigenen Notizen, Bewertungen und Tags:

Installation
/plugin marketplace add QuantumWars/project-graphx
/plugin install skill-graphFühren Sie dann in jedem Projekt, für das Sie einen Graphen möchten, Folgendes aus:
/skill-graph:setup # say where your skills and agents live — then offers to build
/skill-graph:build # rescan, whenever the sources change
/skill-graph:view # look at it, in your browser/skill-graph:setup fragt vor dem Erstellen nach, anstatt es einfach zu tun, da ein Build mit gesetzten scanRoots jeden Scan-Root durchläuft. Wenn Sie zustimmen, gelangen Sie direkt von nichts zu einem Graphen.
Jedes Projekt erhält seinen eigenen Graphen. Wenn Sie stattdessen ein einziges Verzeichnis haben möchten, das von allen Projekten gemeinsam genutzt wird, führen Sie stattdessen /skill-graph:setup-global aus – siehe Ein Graph oder einer pro Projekt.
/skill-graph:view benötigt keinen Download – es stellt den Viewer über node bereit, das das Plugin bereits benötigt. /skill-graph:app öffnet denselben Viewer stattdessen als natives Desktop-Fenster, allerdings auf Kosten einer einmaligen Installation von etwa 280 MB Electron.
Related MCP server: skills-mcp
Voraussetzungen
Für | Sie benötigen | Hinweise |
Die MCP-Tools |
| Der Server wird bereits gebündelt ausgeliefert. Kein |
|
| Nur Standardbibliothek. Auf macOS ist dies mit den Xcode-Befehlszeilentools enthalten. |
| nichts weiter | Gleiches |
|
| Nur zum Importieren der Skills eines externen Repos. |
|
| Einmalige Electron-Installation, nur beim ersten Start. Optional. |
Ausführen der Tests |
| Nur für Mitwirkende. |
Windows wird für /skill-graph:build nicht unterstützt. Die Build-Befehle rufen python3 auf, das Windows-Python-Installationen normalerweise nicht bereitstellen (es ist python oder py). install_skill hat dieselbe Abhängigkeit und schlägt nach dem Kopieren von Dateien fehl, sodass ein halb angewendeter Zustand zurückbleiben kann. WSL funktioniert.
Das Paketierungsskript der Desktop-App zielt nur auf macOS arm64 ab. Verwenden Sie auf anderen Plattformen /skill-graph:view oder führen Sie es unverpackt mit npm start aus app/ aus.
Ein Graph oder einer pro Projekt
Standardmäßig ist das Datenverzeichnis <project>/.claude/graph, sodass zwei Projekte niemals die Graphen des anderen sehen. Das ist normalerweise das, was Sie möchten, und der Grund, warum Ihnen nichts zwischen nicht verwandten Repos folgt.
GRAPH_DATA_DIR überschreibt dies. Setzen Sie es, und jedes Projekt liest und schreibt in dasselbe Verzeichnis:
dataDir = GRAPH_DATA_DIR or <project>/.claude/graph/skill-graph:setup-global erledigt das Ende-zu-Ende – wählt den Speicherort, findet jede Quelle auf dem Rechner, schreibt die Konfiguration mit absoluten Roots, setzt die Variable in ~/.claude/settings.json und erstellt den Graphen. Es wird beim nächsten Neustart wirksam, da ein MCP-Server seine Umgebung beim Prozessstart liest.
Die gemeinsame Nutzung des Verzeichnisses teilt auch das Overlay, sodass Notizen, Bewertungen und Tags maschinenweit statt pro Repo werden. Wenn Sie überall dieselben Skills, aber nicht dieselben Notizen haben möchten, setzen Sie die Variable nicht – geben Sie jedem Projekt eine normale Konfiguration, deren Quell-Roots absolut sind. Relative Roots werden relativ zum Projekt aufgelöst; absolute nicht, sodass mehrere Projekte dieselben Ordner katalogisieren und dennoch ihre eigenen Graphen behalten können.
Projektbezogene Graphen werden durch die Umstellung auf global nie gelöscht. Entfernen Sie die Variable, und sie sind wieder aktiv.
Wo die Dinge leben
Der Code wird mit dem Plugin ausgeliefert. Die Daten gehören zum Projekt:
<your project>/.claude/graph/
├── config.json what to catalogue, what to scan (you own this — commit it)
├── graph-data.json the built graph (regenerated wholesale)
├── overlay.json your notes, ratings, tags, edges (survives rebuilds)
└── imported-repos/ shallow clones from add_repoEs werden niemals Graphdaten in das Plugin-Verzeichnis geschrieben, das bei jeder Neuinstallation gelöscht wird. Zwei Projekte auf demselben Rechner erhalten zwei unabhängige Graphen und sehen niemals die des anderen.
Die einzige Ausnahme ist Electron selbst: /skill-graph:app installiert es unter app/ des Plugins, sodass ein Plugin-Update einen erneuten Download bedeutet. /skill-graph:view muss nichts neu installieren, was der Hauptgrund dafür ist, dass es die Standardeinstellung ist.
graph-data.json wird bei jedem /skill-graph:build von Grund auf neu erstellt. Bearbeiten Sie es niemals von Hand – Ihre Bearbeitung verschwindet. Alles, was Sie über die Tools hinzufügen, wird in overlay.json gespeichert, das von Builds nie berührt wird.
Konfiguration
.claude/graph/config.json:
{
"sources": [
{ "repo": "my-project", "root": ".claude/agents", "kind": "agent" },
{ "repo": "my-project", "root": ".claude/skills", "kind": "skill" }
],
"scanRoots": ["~/code"],
"scanExclude": ["/node_modules/"]
}sources – Verzeichnisse, die die zu katalogisierenden Agents und Skills enthalten.
kind: "agent"für einen Ordner mit*.md;kind: "skill"für einen Ordner mit<name>/SKILL.md-Verzeichnissen. Relative Pfade werden relativ zum Projektstammverzeichnis aufgelöst. Ein fehlender Root wird mit einer Warnung übersprungen, nicht mit einem Absturz.scanRoots – Bäume, die nach Projekten durchsucht werden, die diese Skills installiert haben. Dies füllt die Angabe „wer verwendet dies tatsächlich“.
[]bedeutet, nichts zu scannen, und wird so beibehalten.scanExclude – Entfernen Sie jeden Pfad, der eine dieser Teilzeichenfolgen enthält.
Ein Projekt, das eine konfigurierte Quelle besitzt, wird niemals als Benutzer seines eigenen Katalogs gezählt. Ohne dies würde ein Repo, das seine eigenen .claude/skills katalogisiert, sich selbst als Benutzer jedes darin enthaltenen Skills melden, und jede Nutzungszahl wäre um eins erhöht.
Was die Tools Ihnen sagen – und was nicht
Kanten sind gezählte Erwähnungen. Eine Kante existiert, weil der Text einer Datei den Namen eines anderen Knotens enthält. Das ist eine echte, reproduzierbare Messung – keine kuratierte Aussage, dass zwei Dinge zusammengehören. Ein Skill, der nach einem gebräuchlichen Wort benannt ist, sammelt zufällig Kanten.
Nutzung ist eine Dateisystem-Tatsache. usedBy ergibt sich aus der Überprüfung, ob die Datei tatsächlich vorhanden ist. „Nicht vorhanden“ bedeutet „unter Ihren Scan-Roots nicht gefunden“, niemals „ungenutzt“.
Kategorien sind eine Schätzung. Sie stammen aus einer Schlüsselwort-Heuristik zur Build-Zeit, die zuerst den Namen liest und nur dann auf die Beschreibung zurückfällt, wenn der Name nichts aussagt – ein Ding namens python-testing ist Python, ein Ding, das Python nur beiläufig erwähnt, ist es nicht. Es ist dennoch eine Heuristik: Sie wird einige Dinge seltsam einordnen und sagt general, wenn sie es nicht sagen kann. Tags werden manuell vergeben und bedeuten, was jemand entschieden hat. Bevorzugen Sie Tags.
Importierte Repos haben keine Kanten. add_repo extrahiert nur Frontmatter; Querverweise werden für Importe nicht berechnet. Null Verbindungen bei einem importierten Skill sind eine Aussage über den Importeur, nicht über den Skill. Aus diesem Grund ist das Importieren eines Verzeichnisses, das Sie bereits als Quelle konfiguriert haben, schlimmer als nutzlos, und warum es abgelehnt wird – siehe unten.
Wenn zwei Dinge denselben Namen haben
Zwei nicht verwandte Repos können jeweils einen code-reviewer enthalten, und beide gehören in den Graphen. Eine Suche nach Namen kann also wirklich mehrdeutig sein, und die Antwort nennt stattdessen die IDs:
{ "error": "ambiguous", "candidates": ["myproj:agent:code-reviewer", "import:other:agent:code-reviewer"] }Jedes Tool, das einen Knoten akzeptiert, akzeptiert auch eine ID, sodass ein Kandidat aus dieser Liste direkt zurückgegeben werden kann, um die Bindung aufzulösen – einschließlich install_skill und uninstall_skill, bei denen die Auswahl des falschen echte Dateien kopiert oder löscht.
add_repo lehnt ein Verzeichnis ab, das der Build bereits katalogisiert. Beide Wege würden dieselben Dateien erreichen – der Build schreibt sie in graph-data.json, ein Import speichert sie in overlay.json, und beide werden zur Lesezeit zusammengeführt – daher würde jedes Element darunter zweimal unter einem Namen erscheinen, und keine ID könnte sie unterscheiden, da es dieselbe Datei ist. Es stoppt, bevor es etwas schreibt, nennt die Datei, die sich bereits im Graphen befindet, und endet mit „Es wurde nichts importiert.“
Zwei verschiedene Repos, die zufällig denselben Skill-Namen haben, sind in Ordnung und werden trotzdem importiert; die Prüfung erfolgt auf Pfade, nicht auf Namen.
Der Graph ist eine Momentaufnahme
Er spiegelt den letzten Build wider. Fügen Sie einen Skill von Hand hinzu, ändern Sie eine Quelle oder installieren Sie etwas außerhalb dieser Tools, und er ist veraltet, bis Sie ihn neu erstellen. install_skill und uninstall_skill scannen sich selbst neu; nichts anderes tut dies.
Entwicklung
bun install --frozen-lockfile # exactly the versions CI and the bundle were built from
bun test # unit + end-to-end
bun run bundle # rebuild server/server.bundle.mjs after editing server/bun.lock fixiert, woraus das gebündelte Artefakt kompiliert wurde, und app/package-lock.json fixiert das Electron, mit dem die Desktop-App getestet wurde. CI installiert mit --frozen-lockfile, sodass eine Abhängigkeit, die ohne Aktualisierung der Lock-Datei erhöht wird, den Lauf fehlschlagen lässt, anstatt stillschweigend ausgeliefert zu werden.
Der Viewer kann direkt ausgeführt werden, was der schnellste Weg ist, um an app/ zu iterieren:
node server/viewer-server.js --data-dir <project>/.claude/graphBündeln Sie nach jeder Änderung unter server/ neu. .mcp.json führt das Bundle aus, nicht den Quellcode, daher ist eine nicht gebündelte Bearbeitung eine Bearbeitung, die nicht ausgeliefert wird. Die End-to-End-Suite startet das Bundle genau so, wie Claude Code es tut, und schlägt fehl, wenn es veraltet ist, und CI baut es neu und schlägt fehl, wenn sich die gebündelte Kopie unterscheidet.
bun run bundle führt auch scripts/normalize-bundle.js aus, das das __dirname-Literal, das der Bundler zur Build-Zeit eingefroren hat, durch einen Laufzeitausdruck ersetzt. Ohne dies würde das Artefakt den absoluten Pfad desjenigen enthalten, der es erstellt hat, und zwei Maschinen würden niemals dieselben Bytes produzieren – was den CI-Vergleich überhaupt erst ermöglicht.
Lizenz
MIT – siehe LICENSE.
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
- AlicenseAqualityDmaintenanceConnects AI coding agents to the SkillFlow marketplace to search, discover, and retrieve detailed information about agent skills. It enables users to browse trending skills, categories, and publisher data directly through MCP-compatible environments.5531MIT
- AlicenseAqualityBmaintenanceA self-hostable, open-source, semantically-searchable Agent Skills registry delivered over MCP, with a three-tier progressive disclosure architecture.7275Apache 2.0
- Flicense-qualityCmaintenanceCompiles skill definitions and serves them to AI agents via MCP, enabling tools for context packing, dependency resolution, and skill searching.
- Alicense-qualityBmaintenanceDiscovers and manages portable agent capabilities (skills and MCP servers) from configurable collections, providing search, inspection, and local installation via CLI and MCP tools.1MIT
Related MCP Connectors
A registry of 5,900+ peer-authored skills any MCP agent can search and load on demand.
Create, browse, remix, collaborate on, and run durable AI workflow nodes from MCP hosts.
Scan agent skills and MCP servers for malicious patterns before you load them
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/QuantumWars/project-graphx'
If you have feedback or need assistance with the MCP directory API, please join our Discord server