Hierarchical Skills For AI MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Hierarchical Skills For AI MCP Serversearch for FastAPI"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Hierarchical Skills For AI - A Skills Serving Hierarchical MCP Server
A hierarchical MCP (Model Context Protocol) server for managing skill definitions. Skills are stored as folders containing SKILL.md with YAML frontmatter, organized in a browsable tree structure with full-text search and a web UI.
When to Use / When Not to Use
Use this when
You have many skills (100+) and including all their frontmatter in the AI's context window would waste tokens
You want structured, hierarchical organization of skills by domain (coding, security, writing...)
You want search + browse so the AI can find the right skill without knowing the exact path
You want usage tracking so popular skills naturally rank higher over time
You want a web UI for humans to browse the same skill tree
Don't use this when
You have few skills (< 15) — just install them as per your agents' instructions, no server needed
Your skills are ephemeral or one-shot — the server setup overhead isn't worth it
You need real-time editing or CRUD from the web UI — it's read-only by design
You need multi-user auth or permissions — not built for that
You need relational queries or a database backend — this is filesystem + in-memory index
Related MCP server: agentskill-mcp
Architecture
Agent (MCP client) Human (browser)
↓ ↓
Skills MCP Server ← python mcp_server.py --port 8080
│ │
├── MCP (stdio) ├── HTTP (web UI)
│ browse(path, depth=1) │ GET /api/browse?path=&depth=
│ read(path) │ GET /api/search?q=
│ search(query) │ GET /api/read?path=
│ info(path) │ GET /api/info?path=
│ use(path) │
│ steps(path) │
│ reload() │
│ │
└──────────────────────────────┘
↓
┌───────────┼───────────┐
↓ ↓ ↓
File system Index Usage stats
(SKILL.md) (tags, (uses count,
aliases, last_used)
body,
relations)Quick Start
# Install
python3 -m venv venv
source venv/bin/activate
pip install -e .
# Run with sample skills (activate venv first)
python mcp_server.py --port 8080
# Open web UI
open http://localhost:8080CLI Arguments
Argument | Required | Default | Description |
| No |
| Path to root folder containing grouped skills |
| No | 4 | Maximum folder depth to walk |
| No | 8080 | Port for web UI |
| No | localhost | Host for web UI |
MCP Tools
Tool | Input | Output | Description |
|
| Child groups + skills (nested if | Navigate the skill hierarchy |
|
| Full SKILL.md body | Load skill content |
|
| Ranked paths | Search by name, tags, aliases, description, path segments |
|
| YAML metadata (no body) | Lightweight skill inspection |
|
| Updated metadata | Track skill usage (boosts search ranking) |
|
| Ordered step list | Get workflow sub-skills |
| — | Status | Re-scan repo, re-validate, re-index |
Skill File Format
Each skill lives in its own folder containing a SKILL.md file with YAML frontmatter delimited by ---.
Folder structure rules
skills/
coding/ # group folder (has subfolders, no SKILL.md)
python/
fastapi/ # skill folder → contains SKILL.md
SKILL.md
pytest/
SKILL.md
rust/
tokio/
SKILL.mdA folder is a skill if it contains
SKILL.mdA folder is a group if it has subfolders but no
SKILL.mdA folder can be dual (both group + skill) — has
SKILL.mdAND subfoldersFolders beyond
--max-depthare silently ignoredEmpty folders (no
SKILL.md, no subfolders) are silently ignoredUse lowercase with hyphens for folder names:
web-scrapingAll path lookups are case-insensitive —
"Coding/Python"and"coding/python"resolve to the same nodeCase collisions are rejected at startup: having both
Coding/andcoding/folders will abort the server — use consistent casing
Frontmatter fields
Field | Required | Type | Description |
| Yes | string | Unique identifier across the entire tree. Does not need to match folder name. |
| No | list | Keywords for search: |
| No | list | Alternative names an AI might search by: |
| No | string | One or two sentences explaining the skill. Indexed for search. |
| No | list of paths | Prerequisites the AI should know first: |
| No | list of paths | Conceptually similar skills: |
| No | list of paths | Natural next skills after mastering this one |
| No | list of paths | Ordered sub-skill paths for multi-step workflows |
| Auto | integer | Usage counter — auto-incremented by |
| Auto | string or null | ISO timestamp — auto-set by |
Example
---
name: fastapi
tags: [python, api, web]
aliases: [fast api, fastapi framework]
description: Python web framework for building APIs
depends_on: [python/basics]
related: [flask, starlette]
followed_by: [sqlalchemy, pytest]
uses: 0
last_used: null
steps: [setup/project-scaffold, coding/python/fastapi/routing]
---After the closing ---, write standard Markdown body content. The server never modifies the body — only uses and last_used in the frontmatter are updated automatically.
Validation rules
On startup and reload() the server validates every skill:
SKILL.mdmust exist and have valid YAML frontmatternamefield is required and must be unique across the entire treeDuplicate names cause an abort with per-skill error logging
Folders with case-colliding paths (e.g.
Coding/andcoding/) cause an abort — use consistent casingFolders beyond
--max-depthare silently ignored
Hierarchy guidelines
Keep
--max-depthbetween 3 and 5 levelsAim for 5–15 children per group node; split into sub-groups if exceeding 20
Use dual nodes (folder with
SKILL.md+ subfolders) when a group has general content applying to all childrenPrefer 3–8 tags per skill, lowercase, singular form
Project Structure
skills-mcp-server/
├── mcp_server.py # Root-level entry point
├── pyproject.toml # Project configuration
├── src/
│ ├── __init__.py # Package init
│ ├── __main__.py # Entry point
│ ├── main.py # CLI + server orchestration
│ ├── models.py # Data models
│ ├── frontmatter.py # YAML frontmatter parser
│ ├── discovery.py # Folder walker
│ ├── tree.py # In-memory skill tree
│ ├── index.py # Search index
│ ├── mcp_server.py # MCP tool definitions
│ ├── http_server.py # HTTP server for web UI
│ └── static/
│ └── index.html # Web UI (vanilla HTML/CSS/JS)
├── tests/
│ ├── test_discovery.py # Tests for discovery
│ ├── test_frontmatter.py # Tests for YAML parsing
│ └── test_tools.py # Tests for tree tools & search
├── sample_skills/ # Demo skills
├── HANDOFF.md # Session handoff notes
├── AGENTS.md # Agent conventions
└── IMPLEMENTATION_PLAN.md # Full implementation planDesign Principles
Hierarchy for humans, search for models — tree browsing and full-text search coexist
Filesystem as source of truth — no database needed
Minimal dependencies — only
mcpandpyyamlRead-only web UI — no editing, no auth, no build step
Self-improving index — usage tracking boosts popular/recent skills in search results
Tests
python -m pytest tests/ -vThis 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.
Latest Blog Posts
- 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/Aunxfb/HierarchicalSkillsForAI'
If you have feedback or need assistance with the MCP directory API, please join our Discord server