Enhancement
Summary
FastMCP skills discovery currently exposes any directory containing a SKILL.md, even when the skill frontmatter contains enabled: false.
It would be useful for SkillsDirectoryProvider (and the convenience skills providers built on top of it) to honor an enabled frontmatter flag and skip disabled skills during discovery.
That makes it hard to keep skills installed in a repository or user skills directory while intentionally hiding some of them from MCP clients. In practice, teams may want to:
- keep draft or experimental skills in the filesystem
- temporarily disable problematic skills without deleting them
- ship a shared skills directory where only a subset should be discoverable
- use the same
SKILL.md metadata model for both descriptive fields and enable/disable lifecycle control
A disabled skill still being listed as an MCP resource can create client-side confusion, because the skill looks available even though the project or maintainer considers it inactive.
For example:
---
name: my-skill
description: Experimental skill
enabled: false
---
With the current behavior, this skill is still discovered and exposed.
The expected behavior would be for it to be ignored by discovery until enabled is removed or set to true.
Proposed Implementation
Honor an enabled frontmatter field during skills discovery, with behavior similar to:
- missing
enabled => treated as enabled
enabled: true => discovered normally
enabled: false => excluded from discovery
This could be implemented in SkillsDirectoryProvider after loading/parsing the skill metadata for each candidate directory.
A minimal version would be enough:
- parse frontmatter as today
- if
enabled is explicitly false, skip registering that SkillProvider
Additional context
We ran into this while integrating FastMCP skills discovery in a wrapper/server layer and had to add custom filtering downstream to avoid exposing disabled skills to clients.
Enhancement
Summary
FastMCP skills discovery currently exposes any directory containing a
SKILL.md, even when the skill frontmatter containsenabled: false.It would be useful for
SkillsDirectoryProvider(and the convenience skills providers built on top of it) to honor anenabledfrontmatter flag and skip disabled skills during discovery.That makes it hard to keep skills installed in a repository or user skills directory while intentionally hiding some of them from MCP clients. In practice, teams may want to:
SKILL.mdmetadata model for both descriptive fields and enable/disable lifecycle controlA disabled skill still being listed as an MCP resource can create client-side confusion, because the skill looks available even though the project or maintainer considers it inactive.
For example:
With the current behavior, this skill is still discovered and exposed.
The expected behavior would be for it to be ignored by discovery until
enabledis removed or set totrue.Proposed Implementation
Honor an
enabledfrontmatter field during skills discovery, with behavior similar to:enabled=> treated as enabledenabled: true=> discovered normallyenabled: false=> excluded from discoveryThis could be implemented in
SkillsDirectoryProviderafter loading/parsing the skill metadata for each candidate directory.A minimal version would be enough:
enabledis explicitly false, skip registering thatSkillProviderAdditional context
We ran into this while integrating FastMCP skills discovery in a wrapper/server layer and had to add custom filtering downstream to avoid exposing disabled skills to clients.