Purpose
Agent Skill Loader is a Model Context Protocol (MCP) server that acts as a bridge between a static Claude Code Skills library and dynamic AI agents (such as Claude Desktop, Cursor, or any MCP client). It enables agents to discover, read, and install skills on demand, without manually copying files.
Main Capabilities
- MCP Prompts: Skills appear as slash commands in the client and are injected without tool calls.
- Real-time updates: Through a file watcher, listChanged notifications are triggered when skills are added or removed.
- Discovery: list_skills - scans the configured skill directories, with optional search filtering.
- Dynamic learning: read_skill - retrieves the SKILL.md content.
- Persistence: install_skill - permanently copies a skill into your project.
- Configuration: manage_search_paths - adds/removes skill directories at runtime.
- Troubleshooting: debug_info - diagnoses configuration and path issues.
Usage
Installation
- Option A: Install from npm (recommended).
- Option B: Build from source.
After installation, register it in .mcp.json.
Configuration
The server automatically detects its workspace and aggregates skill paths from the following sources:
- Default: %USERPROFILE%.claude\plugins\cache (standard location)
- Dynamic configuration: skill-paths.json (located in the project root)
Environment variables are also supported.
Dynamic Path Management
Without manually editing configuration files, paths can be managed at runtime using tools:
- Add: manage_search_paths(operation="add", path="F:\My\Deep\Skills")
- Remove: manage_search_paths(operation="remove", path="...")
- List: manage_search_paths(operation="list"), which creates/updates skill-paths.json.
MCP Prompts (Slash Commands)
If the client supports MCP Prompts (Claude Desktop, Cursor, etc.), skills automatically appear as slash commands. Select a skill from the slash command menu to directly inject its content, without tool calls.
Tools
Agents can access five tools:
- list_skills(query?): Returns a JSON list of available skills. The optional query filters by name/description substring (case-insensitive).
- read_skill(skill_name): Returns the skill's Markdown instructions.
- install_skill(skill_name, target_path?): Copies the skill folder to .agent/skills/<name>. For security reasons, target_path must be within the current workspace.
- manage_search_paths(operation, path?): Adds, removes, or lists skill search paths.
- debug_info(): Returns diagnostic information (paths, status, warnings).
Example Agent Prompt
"I need to write a DAX measure, but I'm not sure about best practices." The agent automatically calls list_skills, finds writing-dax-measures, calls read_skill, and answers based on expert knowledge; the user can also invoke the skill directly as a slash command.
Applicable Scenarios
- You want MCP clients such as Claude Desktop and Cursor to load Claude Code Skills on demand.
- You need to dynamically manage skill search paths across multiple projects.
- You want newly added skills to take effect in real time without restarting the client.
- You need to persistently install skills into the project for agent use.
Limitations
- An MCP-compatible client is required to use Prompts or Tools.
- The target_path of install_skill must be within the current workspace, otherwise it will be rejected.
- Details such as specific installation commands, environment variable names, and the npm package name are not fully provided in the supplied materials and are not yet available.
- Information such as platform compatibility, fees, and pricing is not stated in the materials and is not yet available.
Troubleshooting
If a skill is not discovered, you can use debug_info() to view:commands)
If the client supports MCP Prompts (Claude Desktop, Cursor, etc.), skills automatically appear as slash commands. Select a skill from the slash command menu to directly inject its content, without tool calls.
Tools
Agents can access five tools:
- list_skills(query?): Returns a JSON list of available skills. The optional query filters by name/description substring (case-insensitive).
- read_skill(skill_name): Returns the skill's Markdown instructions.
- install_skill(skill_name, target_path?): Copies the skill folder to .agent/skills/<name>. For security reasons, target_path must be within the current workspace.
- manage_search_paths(operation, path?): Adds, removes, or lists skill search paths.
- debug_info(): Returns diagnostic information (paths, status, warnings).
Example Agent Prompt
"I need to write a DAX measure, but I'm not sure about best practices." The agent automatically calls list_skills, finds writing-dax-measures, calls read_skill, and answers based on expert knowledge; the user can also invoke the skill directly as a slash command.
Applicable Scenarios
- You want MCP clients such as Claude Desktop and Cursor to load Claude Code Skills on demand.
- You need to dynamically manage skill search paths across multiple projects.
- You want newly added skills to take effect in real time without restarting the client.
- You need to persistently install skills into the project for agent use.
Limitations
- An MCP-compatible client is required to use Prompts or Tools.
- The target_path of install_skill must be within the current workspace, otherwise it will be rejected.
- Details such as specific installation commands, environment variable names, and the npm package name are not fully provided in the supplied materials and are not yet available.
- Information such as platform compatibility, fees, and pricing is not stated in the materials and is not yet available.
Troubleshooting
If a skill is not discovered, you can use debug_info() to view:
- search_paths: which directories are being scanned
- path_status: whether each path exists and is readable
- warnings: any errors encountered during scanning (permission denied, empty files, etc.)
Project Structure
- src/index.ts: main server logic (tools + prompts + watchers).
- src/utils.ts: skill scanning, description extraction, prompt helpers, debouncing.
- build/: compiled JavaScript output.
- package.json: dependencies (@modelcontextprotocol/sdk, chokidar, zod).
To add a new skill, place a folder containing a SKILL.md file into any of the watched directories. The server will automatically pick it up and send a listChanged notification, with no restart required.