Skill Jack MCP dynamically integrates Agent Skills into LLMs, providing on-demand access to specialized instructions and resources through MCP tools and resources.
Activate Skills - Use the
skilltool to load complete SKILL.md content by name, providing your LLM with step-by-step instructions and guidance for specific tasksAccess Skill Resources - Use the
skill-resourcetool to read specific files (scripts, snippets, templates, references, assets), list available files, or load entire directories within a skillDynamic Discovery - Automatically detects and updates available skills from configured directories when SKILL.md files change, sending
tools/listChangednotifications to clientsResource URIs - Access skills via
skill://URIs for manual selection in MCP clients, supporting single files, directories, or the main SKILL.md contentReal-time Updates - Subscribe to resources for notifications when skill files change, enabling live updates via
notifications/resources/updatedProgressive Disclosure - Follows Agent Skills pattern—lightweight metadata (name, description, location) loads first, then full instructions and files as needed
Multiple Directories - Configure one or multiple skills directories with automatic scanning, deduplication, and searching across all sources
Security Features - Includes path traversal prevention, configurable file size limits, and directory depth limits, while treating skill content as trusted
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., "@Skill Jack MCPload the 'mcp-server-ts' skill"
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.
Skilljack MCP
An MCP server that jacks Agent Skills directly into your LLM's brain.
Recommended: For best results, use an MCP client that supports
tools/listChangednotifications (e.g., Claude Code). This enables dynamic skill discovery - when skills are added or modified, the client automatically refreshes its understanding of available skills.
Features
Dynamic Skill Discovery - Watches skill directories and automatically refreshes when skills change
Tool List Changed Notifications - Sends
tools/listChangedso clients can refresh available skillsSkill Tool - Load full skill content on demand (progressive disclosure)
MCP Resources - Access skills via
skill://URIs with batch collection supportResource Subscriptions - Real-time file watching with
notifications/resources/updated
Motivation
This repo demonstrates a way to approach integrating skills using existing MCP primitives.
MCP already has the building blocks:
Tools for on-demand skill loading (the
skilltool with dynamically updated descriptions)Resources for explicit skill access (
skill://URIs)Notifications for real-time updates (
tools/listChanged,resources/updated)Prompts for explicitly invoking skills by name (
/my-server-skill)
This approach provides separation of concerns. Rather than every MCP server needing to embed skill handling, the server acts as a dedicated 'skill gateway'. Server authors can bundle skills alongside their MCP servers without modifying the servers themselves. If MCP registries support robust tool discovery, skill tools become discoverable like any other tool.
Installation
Or run directly with npx:
From Source
Usage
Configure one or more skills directories containing your Agent Skills:
Each directory is scanned along with its .claude/skills/ and skills/ subdirectories for skills. Duplicate skill names are handled by keeping the first occurrence.
Windows note: Use forward slashes in paths when using with MCP Inspector:
How It Works
The server implements the Agent Skills progressive disclosure pattern with dynamic updates:
At startup: Discovers skills from configured directories and starts file watchers
On connection: Skill tool description includes available skills metadata
On file change: Re-discovers skills, updates tool description, sends
tools/listChangedOn tool call: Agent calls
skilltool to load full SKILL.md contentAs needed: Agent calls
skill-resourceto load additional files
Tools vs Resources
This server exposes skills via both tools and resources:
Tools (
skill,skill-resource) - For your agent to use autonomously. The LLM sees available skills in the tool description and calls them as needed.Resources (
skill://URIs) - For manual selection in apps that support it (e.g., Claude Desktop's resource picker). Useful when you want to explicitly attach a skill to the conversation.
Most users will rely on tools for automatic skill activation. Resources provide an alternative for manual control.
Tools
skill
Load and activate an Agent Skill by name. Returns the full SKILL.md content.
Input:
Output: Full SKILL.md content including frontmatter and instructions.
skill-resource
Read files within a skill's directory (scripts/, references/, assets/, snippets/, etc.).
This follows the Agent Skills spec's progressive disclosure pattern - resources are loaded only when needed.
Read a single file:
Read all files in a directory:
Returns all files in the directory as multiple content items.
List available files (pass empty path):
Security: Path traversal is prevented - only files within the skill directory can be accessed.
Resources
Skills are also accessible via MCP Resources using skill:// URIs.
URI Patterns
URI | Returns |
| Single skill's SKILL.md content |
| All files in skill directory (collection) |
| Specific file within skill |
Resource Subscriptions
Clients can subscribe to resources for real-time updates when files change.
Capability: resources: { subscribe: true, listChanged: true }
Subscribe to a resource:
Receive notifications when files change:
Unsubscribe:
How it works:
Client subscribes to a
skill://URIServer resolves URI to file path(s) and starts watching with chokidar
When files change, server debounces (100ms) and sends notification
Client can re-read the resource to get updated content
Security
Skills are treated as trusted content. This server reads and serves skill files directly to clients without sanitization. Only configure skills directories containing content you trust.
Protections in place:
Path traversal prevention (symlink-aware)
File size limits (1MB default, configurable via
MAX_FILE_SIZE_MBenv var)Directory depth limits
Skill content is confined to configured directories
Not protected against:
Malicious content within trusted skill directories
Prompt injection via skill instructions (skills can influence LLM behavior by design)
Dynamic Skill Discovery
The server watches skill directories for changes. When SKILL.md files are added, modified, or removed:
Skills are re-discovered from all configured directories
The
skilltool's description is updated with current skill names and metadatatools/listChangednotification is sent to connected clientsClients that support this notification will refresh tool definitions
Skill Metadata Format
The skill tool description includes metadata for all available skills in XML format:
This metadata is dynamically updated when skills change - clients supporting tools/listChanged will automatically refresh.
Skill Discovery
Skills are discovered at startup from the configured directories. For each directory, the server checks:
The directory itself for skill subdirectories
.claude/skills/subdirectoryskills/subdirectory
Each skill subdirectory must contain a SKILL.md file with YAML frontmatter including name and description fields.