Graph of Skills MCP
Graph of Skills builds a dependency graph over SKILL.md files and serves the agent only the skills a task needs, through MCP
- 227 ★ on the repository
- Last commit
Extended access
Why this level
- Runs a Python server through uv and sends skill texts to an embeddings provider, with the key kept in `.env`
- The `index_skills` and `add_skill` tools modify the graph and read skill directories on disk
Install
- Works in
Manual install
claude mcp add graph-of-skills -- uv run --directory /path/to/graph-of-skills gos-claudeFirst `git clone https://github.com/davidliuk/graph-of-skills.git`, `uv sync` and `cp .env.example .env` with an embeddings key. For a ready graph add `--workspace data/gos_workspace/skills_200_v1`.
Access and checks
How we reviewExtended accessThe tool runs code or makes network calls and only reads external data.
- Runs a Python server through uv and sends skill texts to an embeddings provider, with the key kept in `.env`
- The `index_skills` and `add_skill` tools modify the graph and read skill directories on disk
This is third-party code. Review the repository files before installing.
What it does
Graph of Skills (GoS) addresses large skill libraries: loading every `SKILL.md` into context runs out of room, and vector search does not know that one skill needs another. GoS builds a graph over the library ahead of time, with dependencies, workflow links and semantic edges, and at task time serves a small ranked set together with prerequisites and related skills. Retrieval runs in four steps. Candidates are taken by embeddings and by exact tokens, the lists are merged, the result is reranked by graph structure and a capped, agent-readable bundle is returned. The method was accepted at EMNLP 2026, and the repository holds SkillsBench evaluations and skill libraries for reproducing the results. For Claude Code the repository ships an MCP server, `gos-claude`. `.mcp.json` picks it up when the project is opened, or you register it with `claude mcp add graph-of-skills -- uv run --directory /path/to/graph-of-skills gos-claude`. The tools are `search_skills`, `retrieve_skill_bundle`, `hydrate_skills`, `list_skills`, `get_skill_detail`, `get_skill_neighbors`, `get_status`, plus `index_skills` and `add_skill` for building and extending the graph.
Who it is for. Researchers and developers with a library of hundreds of skills whose agent drowns in the list of available skills, and teams who want to reproduce the method from the paper.
Good fit when
- The library holds hundreds of `SKILL.md` files and the agent cannot load them all into context
- A skill for a task depends on other skills and you need the set with its prerequisites
- The agent has to find skills for processing 3D mesh files: a `search_skills` query returns a ranked shortlist
- You grow the library and want to add skills to an existing graph through `add_skill`
- You need to check the method on SkillsBench with prebuilt workspaces
Not a fit when
- The library has a dozen skills: plain loading without a graph is enough
- You have no embeddings provider key (OpenAI, Gemini or compatible): the index cannot be built without one
- You want a one-command install: the project installs by clone and `uv sync`, and the graph is downloaded or built separately
Example request
Use GoS to find skills for processing 3D mesh files, fetch their bundle with prerequisites and complete the task following their instructionsMCP
- Transport
- stdio
- Authentication
- key is optional
Environment variables
OPENAI_API_KEYsecret- Embeddings provider key; OpenRouter uses `OPENROUTER_API_KEY`, the rest is in `.env.example`.
Limitations
- Python 3.10–3.12, `uv` and an embeddings provider key (OpenAI, Gemini or compatible) set in `.env` are required.
- Installation is a repository clone plus `uv sync`, and prebuilt workspaces are downloaded with `./scripts/download_data.sh --workspace`.
- This is a research project: evaluation ran on SkillsBench, and the repository was last updated on 30 August 2026.
- Building the graph calls models and spends provider tokens, and OpenRouter response caching is on by default.
How to disable. Run `claude mcp remove graph-of-skills`, and if the server was picked up through `.mcp.json`, delete that entry or close the project. The repository folder with workspaces is removed by hand.
FAQ
How do I connect Graph of Skills to Claude Code?
Clone the repository, run `uv sync`, fill in `.env` and download the workspaces. Then open the project in Claude Code (the server is picked up through `.mcp.json`) or register it with `claude mcp add graph-of-skills -- uv run --directory /path/to/graph-of-skills gos-claude`.
How is GoS different from vector skill search?
Vector search ranks skills by text similarity. GoS also uses the graph of dependencies and links, so it returns a skill together with its prerequisites and workflow neighbours.
Which MCP tools does GoS have?
`search_skills`, `retrieve_skill_bundle`, `hydrate_skills`, `list_skills`, `get_skill_detail`, `get_skill_neighbors`, `get_status`, `index_skills` and `add_skill`. The first ones search and load, the last ones build and extend the graph.
Where do I get a ready graph?
The workspaces and data are downloaded by `./scripts/download_data.sh --workspace`; the skill libraries and benchmark data are published on Hugging Face as DLPenn/graph-of-skills-data.
Which embeddings providers work?
OpenAI directly, OpenRouter, Gemini or any OpenAI-compatible provider. The model and dimension are set in `.env` with `GOS_EMBEDDING_MODEL` and `GOS_EMBEDDING_DIM`.
Discussion
No questions or reviews yet.
Related
MCP serversClaude Skills MCP: semantic search for skills
Claude Skills MCP
An MCP server with vector search: the agent describes a task and gets matching skills from the Anthropic and K-Dense collections
Meta Skill (ms)
Meta Skill
Meta Skill (ms) keeps skills locally in SQLite and Git, searches them with a hybrid index and serves agents over MCP
Local semantic search over 374 skills: the agent finds one by describing its task and reads the full text only after choosing.
Skill search from inside the conversation: the agent finds a SKILL.md, reads it and applies it with no prior install
A desktop app and CLI to install, sync and organize agent skills across Claude Code, Codex, Cursor and other tools
A Go terminal UI for agent skills: list, check, update and find new ones in a single window
README in short
The README begins with authors, links to the EMNLP 2026 paper and an update timeline. It then explains the skill graph idea and the four-step retrieval pipeline, results on SkillsBench and on library sizes up to 2000 skills, installation and embedding provider setup. Working with Claude Code through the MCP plugin and the list of CLI commands are covered separately.