local-skills-mcp 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +96 -0
- package/LICENSE +21 -0
- package/README.md +383 -0
- package/dist/index.d.ts +97 -0
- package/dist/index.js +263 -0
- package/dist/skill-loader.d.ts +126 -0
- package/dist/skill-loader.js +231 -0
- package/dist/types.d.ts +17 -0
- package/dist/types.js +1 -0
- package/package.json +114 -0
- package/skills/local-skills-mcp-guide/SKILL.md +219 -0
- package/skills/local-skills-mcp-usage/SKILL.md +533 -0
- package/skills/skill-creator/SKILL.md +240 -0
- package/skills/skill-refresh-helper/SKILL.md +192 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- Package built-in skills directory as base default for all MCP instances
|
|
12
|
+
- Self-documenting capabilities: `local-skills-mcp-usage`, `local-skills-mcp-guide`, and `skill-creator` skills
|
|
13
|
+
- Skills are now available immediately after installation with zero configuration
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
- Directory aggregation priority updated to include package built-in skills as lowest priority (first in list)
|
|
17
|
+
- Updated documentation to reflect new built-in skills feature
|
|
18
|
+
|
|
19
|
+
## [0.1.0] - 2025-11-01
|
|
20
|
+
|
|
21
|
+
### 🎉 First Public Release
|
|
22
|
+
|
|
23
|
+
This is the initial public release of Local Skills MCP - a proof of concept for enabling any LLM or AI agent to utilize expert skills via the Model Context Protocol.
|
|
24
|
+
|
|
25
|
+
### Features
|
|
26
|
+
|
|
27
|
+
#### Universal LLM/Agent Support
|
|
28
|
+
- Works with any MCP-compatible client (Claude Code, Claude Desktop, Cline, Continue.dev, custom agents)
|
|
29
|
+
- Portable skills that work across multiple AI systems
|
|
30
|
+
- LLM-agnostic design (Claude, GPT, Gemini, local models, etc.)
|
|
31
|
+
|
|
32
|
+
#### Efficient Context Management
|
|
33
|
+
- Lazy loading: only skill names and descriptions initially visible (~50 tokens per skill)
|
|
34
|
+
- Full content loads on-demand, preserving 95%+ of context window
|
|
35
|
+
- Progressive disclosure pattern optimized for context efficiency
|
|
36
|
+
|
|
37
|
+
#### Powerful Skill Management
|
|
38
|
+
- Standard SKILL.md format with YAML frontmatter
|
|
39
|
+
- Automatic aggregation from multiple directories (~/.claude/skills, ./.claude/skills, ./skills, custom)
|
|
40
|
+
- Dynamic discovery: tool description updates in real-time with available skills
|
|
41
|
+
- Zero configuration: works out-of-the-box with standard locations
|
|
42
|
+
- Ultra-simple API: single `get_skill` tool with built-in discovery
|
|
43
|
+
|
|
44
|
+
#### Open Source Best Practices
|
|
45
|
+
- Comprehensive contribution guidelines (CONTRIBUTING.md)
|
|
46
|
+
- Code of Conduct (Contributor Covenant v2.0)
|
|
47
|
+
- Security policy and vulnerability reporting (SECURITY.md)
|
|
48
|
+
- Complete documentation and examples
|
|
49
|
+
- GitHub issue and PR templates
|
|
50
|
+
- MIT License
|
|
51
|
+
|
|
52
|
+
### Technical Implementation
|
|
53
|
+
- TypeScript with Node.js 18+
|
|
54
|
+
- Model Context Protocol SDK integration
|
|
55
|
+
- Version centralized in package.json (single source of truth)
|
|
56
|
+
- Intelligent caching and lazy loading
|
|
57
|
+
- Multi-directory skill aggregation with override support
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Pre-Release Development History
|
|
62
|
+
|
|
63
|
+
The following versions were internal development iterations before the public release:
|
|
64
|
+
|
|
65
|
+
### [Internal 2.2.0] - 2025-11-01
|
|
66
|
+
- Simplified to single tool (removed list_skills)
|
|
67
|
+
- Generic, utilization-focused tool descriptions
|
|
68
|
+
- Dynamic skill list in get_skill description
|
|
69
|
+
|
|
70
|
+
### [Internal 2.1.0] - 2025-11-01
|
|
71
|
+
- Enhanced tool descriptions following Claude Skills best practices
|
|
72
|
+
- Added comprehensive documentation on skill description patterns
|
|
73
|
+
- Improved trigger keyword matching
|
|
74
|
+
|
|
75
|
+
### [Internal 2.0.0] - 2025-10-30
|
|
76
|
+
- Changed to official Claude Skills format (SKILL.md)
|
|
77
|
+
- Added multi-directory skill aggregation
|
|
78
|
+
- Removed custom skill.json format
|
|
79
|
+
|
|
80
|
+
### [Internal 1.0.0] - 2025-10-29
|
|
81
|
+
- Initial prototype with custom format
|
|
82
|
+
- Four MCP tools with parameter interpolation
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
<!-- Version Links -->
|
|
87
|
+
[0.1.0]: https://github.com/kdpa-llc/local-skills-mcp/releases/tag/v0.1.0
|
|
88
|
+
[unreleased]: https://github.com/kdpa-llc/local-skills-mcp/compare/v0.1.0...HEAD
|
|
89
|
+
|
|
90
|
+
<!-- Reference Links -->
|
|
91
|
+
[repo]: https://github.com/kdpa-llc/local-skills-mcp
|
|
92
|
+
[issues]: https://github.com/kdpa-llc/local-skills-mcp/issues
|
|
93
|
+
[pulls]: https://github.com/kdpa-llc/local-skills-mcp/pulls
|
|
94
|
+
[releases]: https://github.com/kdpa-llc/local-skills-mcp/releases
|
|
95
|
+
[contributing]: CONTRIBUTING.md
|
|
96
|
+
[security]: SECURITY.md
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 KDPA
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
# 🎯 Local Skills MCP
|
|
4
|
+
|
|
5
|
+
**Enable any LLM or AI agent to utilize expert skills from your local filesystem via MCP**
|
|
6
|
+
|
|
7
|
+
[![npm version][npm-version-badge]][npm-package]
|
|
8
|
+
[![License: MIT][license-badge]][license]
|
|
9
|
+
[![Node][node-badge]][nodejs]
|
|
10
|
+
[![MCP][mcp-badge]][mcp-protocol]
|
|
11
|
+
|
|
12
|
+
[![CI][ci-badge]][ci-workflow]
|
|
13
|
+
[![codecov][codecov-badge]][codecov]
|
|
14
|
+
[![CodeQL][codeql-badge]][codeql-workflow]
|
|
15
|
+
|
|
16
|
+
[![GitHub Stars][stars-badge]][stargazers]
|
|
17
|
+
[![GitHub Forks][forks-badge]][network]
|
|
18
|
+
[![GitHub Issues][issues-badge]][repo-issues]
|
|
19
|
+
[![GitHub Last Commit][commit-badge]][commits]
|
|
20
|
+
[![PRs Welcome][prs-badge]][contributing]
|
|
21
|
+
|
|
22
|
+
[Quick Start](#-quick-start) •
|
|
23
|
+
[Features](#-features) •
|
|
24
|
+
[Usage](#-usage) •
|
|
25
|
+
[FAQ](#-faq) •
|
|
26
|
+
[Contributing](#-contributing)
|
|
27
|
+
|
|
28
|
+
</div>
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## 📑 Table of Contents
|
|
33
|
+
|
|
34
|
+
- [What is Local Skills MCP?](#what-is-local-skills-mcp)
|
|
35
|
+
- [✨ Features](#-features)
|
|
36
|
+
- [🚀 Quick Start](#-quick-start)
|
|
37
|
+
- [📝 SKILL.md Format](#-skillmd-format)
|
|
38
|
+
- [🎯 Usage](#-usage)
|
|
39
|
+
- [🆚 Differences from Built-in Skills](#-differences-from-built-in-skills)
|
|
40
|
+
- [❓ FAQ](#-faq)
|
|
41
|
+
- [🤝 Contributing](#-contributing)
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## What is Local Skills MCP?
|
|
46
|
+
|
|
47
|
+
A **universal** Model Context Protocol (MCP) server that enables **any LLM or AI agent** to access expert skills from your local filesystem. Your skills become portable, reusable prompt libraries that work across Claude Code, Claude Desktop, Cline, Continue.dev, custom agents, or any MCP-compatible client.
|
|
48
|
+
|
|
49
|
+
Transform AI capabilities with structured, expert-level instructions for specialized tasks. Lazy loading preserves context—only skill names and descriptions load initially; full content loads on-demand.
|
|
50
|
+
|
|
51
|
+
## ✨ Features
|
|
52
|
+
|
|
53
|
+
- **🌐 Universal** - Works with any MCP client (Claude Code, Desktop, Cline, Continue.dev, custom agents)
|
|
54
|
+
- **🔄 Portable** - Write once, use across multiple AI systems and LLMs (Claude, GPT, Gemini, local models)
|
|
55
|
+
- **⚡ Context Efficient** - Lazy loading: only skill names/descriptions load initially (~50 tokens/skill), full content on-demand
|
|
56
|
+
- **🎯 Multi-Source** - Auto-aggregates from package built-in skills, `~/.claude/skills`, `./.claude/skills`, `./skills`, and custom paths
|
|
57
|
+
- **📦 Zero Config** - Works out-of-the-box with standard skill locations
|
|
58
|
+
- **✨ Ultra Simple** - Single tool (`get_skill`) with dynamic skill discovery
|
|
59
|
+
|
|
60
|
+
## 🚀 Quick Start
|
|
61
|
+
|
|
62
|
+
### Install
|
|
63
|
+
|
|
64
|
+
**From npm (recommended):**
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
npm install -g local-skills-mcp
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**Alternative: From GitHub:**
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
npm install -g github:kdpa-llc/local-skills-mcp
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**Or clone locally:**
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
git clone https://github.com/kdpa-llc/local-skills-mcp.git
|
|
80
|
+
cd local-skills-mcp
|
|
81
|
+
npm install # The prepare script auto-builds
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
**Requirements:** Node.js 18+, any MCP-compatible client
|
|
85
|
+
|
|
86
|
+
### Configure MCP Client
|
|
87
|
+
|
|
88
|
+
Add to your MCP client configuration (e.g., `~/.config/claude-code/mcp.json`):
|
|
89
|
+
|
|
90
|
+
**If installed globally:**
|
|
91
|
+
|
|
92
|
+
```json
|
|
93
|
+
{
|
|
94
|
+
"mcpServers": {
|
|
95
|
+
"local-skills": {
|
|
96
|
+
"command": "local-skills-mcp"
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
**If cloned locally:**
|
|
103
|
+
|
|
104
|
+
```json
|
|
105
|
+
{
|
|
106
|
+
"mcpServers": {
|
|
107
|
+
"local-skills": {
|
|
108
|
+
"command": "node",
|
|
109
|
+
"args": ["/absolute/path/to/local-skills-mcp/dist/index.js"]
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
**For Cline:** Same config in VS Code Settings → "Cline: MCP Settings"
|
|
116
|
+
|
|
117
|
+
**For other MCP clients:** Use the same command/args structure according to their MCP server setup.
|
|
118
|
+
|
|
119
|
+
The server auto-aggregates skills from multiple directories in this priority order (lowest to highest):
|
|
120
|
+
|
|
121
|
+
1. Package built-in skills (includes self-documenting usage guides)
|
|
122
|
+
2. `~/.claude/skills/` - Your global skills
|
|
123
|
+
3. `./.claude/skills/` - Project-specific skills
|
|
124
|
+
4. `./skills` - Default project skills
|
|
125
|
+
5. `$SKILLS_DIR` - Custom directory (if set)
|
|
126
|
+
|
|
127
|
+
Later directories override earlier ones, allowing you to customize built-in skills.
|
|
128
|
+
|
|
129
|
+
### Create & Use Skills
|
|
130
|
+
|
|
131
|
+
Create `~/.claude/skills/my-skill/SKILL.md`:
|
|
132
|
+
|
|
133
|
+
```markdown
|
|
134
|
+
---
|
|
135
|
+
name: my-skill
|
|
136
|
+
description: What this skill does and when to use it
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
You are an expert at [domain]. Your task is to [specific task].
|
|
140
|
+
|
|
141
|
+
Guidelines:
|
|
142
|
+
|
|
143
|
+
1. Be specific
|
|
144
|
+
2. Provide examples
|
|
145
|
+
3. Be helpful
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Then request it in your AI client: `"Use the my-skill skill"`
|
|
149
|
+
|
|
150
|
+
The AI auto-discovers available skills and loads them on-demand.
|
|
151
|
+
|
|
152
|
+
## 📝 SKILL.md Format
|
|
153
|
+
|
|
154
|
+
Every skill is a `SKILL.md` file with YAML frontmatter:
|
|
155
|
+
|
|
156
|
+
```markdown
|
|
157
|
+
---
|
|
158
|
+
name: skill-name
|
|
159
|
+
description: Brief description of what this skill does and when to use it
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
Your skill instructions in Markdown format...
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
**Required Fields:**
|
|
166
|
+
|
|
167
|
+
- `name` - Skill identifier (lowercase, hyphens, max 64 chars)
|
|
168
|
+
- `description` - Critical for skill selection (max 200 chars)
|
|
169
|
+
|
|
170
|
+
**Writing Effective Descriptions:**
|
|
171
|
+
|
|
172
|
+
Pattern: `[What it does]. Use when [trigger conditions/keywords].`
|
|
173
|
+
|
|
174
|
+
- ✅ **Good**: "Generates clear commit messages from git diffs. Use when writing commit messages or reviewing staged changes."
|
|
175
|
+
- ✅ **Good**: "Analyze Excel spreadsheets and create pivot tables. Use when working with .xlsx files or tabular data."
|
|
176
|
+
- ❌ **Poor**: "Helps with Excel files"
|
|
177
|
+
|
|
178
|
+
Claude uses language understanding to decide when to invoke skills—specific trigger keywords help Claude make better decisions.
|
|
179
|
+
|
|
180
|
+
## 🎯 Usage
|
|
181
|
+
|
|
182
|
+
**Single Tool:** `get_skill` - loads expert prompt instructions for specific tasks
|
|
183
|
+
|
|
184
|
+
**How it works:**
|
|
185
|
+
|
|
186
|
+
1. AI sees all available skills in the tool description (auto-updated)
|
|
187
|
+
2. When you request a skill, AI invokes `get_skill`
|
|
188
|
+
3. Full skill content loads with detailed instructions
|
|
189
|
+
|
|
190
|
+
**Built-in Skills:** The package includes self-documenting skills that explain how to use Local Skills MCP and create new skills. These are available immediately after installation.
|
|
191
|
+
|
|
192
|
+
**Skill Aggregation:** Auto-aggregates from package built-in skills, `~/.claude/skills/`, `./.claude/skills/`, `./skills`, and `$SKILLS_DIR` (if set). Later directories override duplicates.
|
|
193
|
+
|
|
194
|
+
**Custom Directory:** Add via environment variable:
|
|
195
|
+
|
|
196
|
+
```json
|
|
197
|
+
{
|
|
198
|
+
"command": "local-skills-mcp",
|
|
199
|
+
"env": {
|
|
200
|
+
"SKILLS_DIR": "/custom/path/to/skills"
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
**Example Skill:**
|
|
206
|
+
|
|
207
|
+
```markdown
|
|
208
|
+
---
|
|
209
|
+
name: code-reviewer
|
|
210
|
+
description: Reviews code for best practices, bugs, and security. Use when reviewing PRs or analyzing code quality.
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
You are a code reviewer with expertise in software engineering best practices.
|
|
214
|
+
|
|
215
|
+
Analyze the code for:
|
|
216
|
+
|
|
217
|
+
1. Correctness and bugs
|
|
218
|
+
2. Best practices
|
|
219
|
+
3. Performance and security issues
|
|
220
|
+
4. Maintainability
|
|
221
|
+
|
|
222
|
+
Provide specific, actionable feedback.
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
## 🆚 Differences from Built-in Skills
|
|
226
|
+
|
|
227
|
+
| Feature | Local Skills MCP | Built-in Claude Skills |
|
|
228
|
+
| ----------------- | ------------------------------- | ------------------------ |
|
|
229
|
+
| **Portability** | Any MCP client | Claude Code only |
|
|
230
|
+
| **Storage** | Multiple directories aggregated | `~/.claude/skills/` only |
|
|
231
|
+
| **Invocation** | Explicit via MCP tool | Auto-invoked by Claude |
|
|
232
|
+
| **Context Usage** | Lazy loading (names only) | All skills in context |
|
|
233
|
+
|
|
234
|
+
## ❓ FAQ
|
|
235
|
+
|
|
236
|
+
**Q: What MCP clients are supported?**
|
|
237
|
+
A: Any MCP-compatible client: Claude Code, Claude Desktop, Cline, Continue.dev, or custom agents.
|
|
238
|
+
|
|
239
|
+
**Q: How is this different from Claude's built-in skills?**
|
|
240
|
+
A: Works with any MCP client (not just Claude), aggregates from multiple directories, explicit invocation control, and better context efficiency via lazy loading.
|
|
241
|
+
|
|
242
|
+
**Q: Can I use existing Claude skills?**
|
|
243
|
+
A: Yes! Auto-aggregates from `~/.claude/skills/` along with other directories.
|
|
244
|
+
|
|
245
|
+
**Q: Do I need to restart after adding skills?**
|
|
246
|
+
A: Yes, currently requires restart. Hot reloading planned for future releases.
|
|
247
|
+
|
|
248
|
+
**Q: How much context does this consume?**
|
|
249
|
+
A: Minimal! Only names/descriptions initially (~50 tokens/skill). Full content loads on-demand, preserving 95%+ of context.
|
|
250
|
+
|
|
251
|
+
**Q: Can I use multiple skill directories?**
|
|
252
|
+
A: Yes! Auto-aggregates from package built-in skills, `~/.claude/skills/`, `./.claude/skills/`, `./skills`, and `$SKILLS_DIR`.
|
|
253
|
+
|
|
254
|
+
**Q: What if I have duplicate skill names?**
|
|
255
|
+
A: Later directories override earlier ones: package built-in → `~/.claude/skills` → `./.claude/skills` → `./skills` → `$SKILLS_DIR`. This lets you customize built-in skills.
|
|
256
|
+
|
|
257
|
+
**Q: What built-in skills are included?**
|
|
258
|
+
A: The package includes three self-documenting skills: `local-skills-mcp-usage` (usage guide), `local-skills-mcp-guide` (comprehensive documentation), and `skill-creator` (skill authoring guide). These are available immediately after installation.
|
|
259
|
+
|
|
260
|
+
**Q: Works with local LLMs (Ollama, LM Studio)?**
|
|
261
|
+
A: Yes! Works with any MCP-compatible LLM setup. Skills are structured prompts that work with any model.
|
|
262
|
+
|
|
263
|
+
**Q: Works offline?**
|
|
264
|
+
A: Yes! Runs entirely on local filesystem (though your LLM may need internet depending on the model).
|
|
265
|
+
|
|
266
|
+
**Q: How to create a good skill?**
|
|
267
|
+
A: Follow [SKILL.md format](#-skillmd-format). Use clear descriptions with trigger keywords, specific instructions, and examples.
|
|
268
|
+
|
|
269
|
+
**Q: Where can I get help?**
|
|
270
|
+
A: Open an [issue on GitHub][repo-issues].
|
|
271
|
+
|
|
272
|
+
**More:** See [CONTRIBUTING.md][contributing], [SECURITY.md][security], [CHANGELOG.md][changelog]
|
|
273
|
+
|
|
274
|
+
## 🤝 Contributing
|
|
275
|
+
|
|
276
|
+
Contributions welcome! See [CONTRIBUTING.md][contributing] for guidelines.
|
|
277
|
+
|
|
278
|
+
Quick start:
|
|
279
|
+
|
|
280
|
+
1. Fork the repository
|
|
281
|
+
2. Create your feature branch
|
|
282
|
+
3. Make your changes and test
|
|
283
|
+
4. Commit and push
|
|
284
|
+
5. Open a Pull Request
|
|
285
|
+
|
|
286
|
+
Note: This project follows a [Code of Conduct][code-of-conduct].
|
|
287
|
+
|
|
288
|
+
## 💖 Support This Project
|
|
289
|
+
|
|
290
|
+
If you find Local Skills MCP useful, please consider supporting its development!
|
|
291
|
+
|
|
292
|
+
<div align="center">
|
|
293
|
+
|
|
294
|
+
[![GitHub Sponsors][sponsor-github-badge]][sponsor-github]
|
|
295
|
+
[![Buy Me A Coffee][sponsor-coffee-badge]][sponsor-coffee]
|
|
296
|
+
[![PayPal][sponsor-paypal-badge]][sponsor-paypal]
|
|
297
|
+
|
|
298
|
+
</div>
|
|
299
|
+
|
|
300
|
+
**Ways to support:**
|
|
301
|
+
|
|
302
|
+
- ⭐ Star this repository
|
|
303
|
+
- 💰 Sponsor via the badges above
|
|
304
|
+
- 🐛 Report bugs and suggest features
|
|
305
|
+
- 📝 Contribute code or documentation
|
|
306
|
+
|
|
307
|
+
## 📄 License
|
|
308
|
+
|
|
309
|
+
MIT License - see [LICENSE][license-file] file. **Copyright © 2025 KDPA**
|
|
310
|
+
|
|
311
|
+
## 🙏 Acknowledgments
|
|
312
|
+
|
|
313
|
+
Built with [Model Context Protocol SDK][mcp-sdk] • Inspired by [Claude Skills][claude-skills]
|
|
314
|
+
|
|
315
|
+
---
|
|
316
|
+
|
|
317
|
+
<div align="center">
|
|
318
|
+
|
|
319
|
+
**[⬆ Back to Top](#-local-skills-mcp)**
|
|
320
|
+
|
|
321
|
+
Made with ❤️ by KDPA
|
|
322
|
+
|
|
323
|
+
</div>
|
|
324
|
+
|
|
325
|
+
<!-- Reference Links -->
|
|
326
|
+
<!-- Badges - Top of README -->
|
|
327
|
+
|
|
328
|
+
[npm-version-badge]: https://img.shields.io/npm/v/local-skills-mcp.svg
|
|
329
|
+
[npm-package]: https://www.npmjs.com/package/local-skills-mcp
|
|
330
|
+
[license-badge]: https://img.shields.io/badge/License-MIT-yellow.svg
|
|
331
|
+
[license]: https://opensource.org/licenses/MIT
|
|
332
|
+
[node-badge]: https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen.svg
|
|
333
|
+
[nodejs]: https://nodejs.org/
|
|
334
|
+
[mcp-badge]: https://img.shields.io/badge/MCP-Compatible-purple.svg
|
|
335
|
+
[mcp-protocol]: https://modelcontextprotocol.io/
|
|
336
|
+
|
|
337
|
+
<!-- CI/CD Badges -->
|
|
338
|
+
|
|
339
|
+
[ci-badge]: https://github.com/kdpa-llc/local-skills-mcp/actions/workflows/ci.yml/badge.svg
|
|
340
|
+
[ci-workflow]: https://github.com/kdpa-llc/local-skills-mcp/actions/workflows/ci.yml
|
|
341
|
+
[codecov-badge]: https://codecov.io/gh/kdpa-llc/local-skills-mcp/branch/main/graph/badge.svg
|
|
342
|
+
[codecov]: https://codecov.io/gh/kdpa-llc/local-skills-mcp
|
|
343
|
+
[codeql-badge]: https://github.com/kdpa-llc/local-skills-mcp/actions/workflows/codeql.yml/badge.svg
|
|
344
|
+
[codeql-workflow]: https://github.com/kdpa-llc/local-skills-mcp/actions/workflows/codeql.yml
|
|
345
|
+
|
|
346
|
+
<!-- GitHub Badges -->
|
|
347
|
+
|
|
348
|
+
[stars-badge]: https://img.shields.io/github/stars/kdpa-llc/local-skills-mcp?style=social
|
|
349
|
+
[stargazers]: https://github.com/kdpa-llc/local-skills-mcp/stargazers
|
|
350
|
+
[forks-badge]: https://img.shields.io/github/forks/kdpa-llc/local-skills-mcp?style=social
|
|
351
|
+
[network]: https://github.com/kdpa-llc/local-skills-mcp/network/members
|
|
352
|
+
[issues-badge]: https://img.shields.io/github/issues/kdpa-llc/local-skills-mcp
|
|
353
|
+
[repo-issues]: https://github.com/kdpa-llc/local-skills-mcp/issues
|
|
354
|
+
[commit-badge]: https://img.shields.io/github/last-commit/kdpa-llc/local-skills-mcp
|
|
355
|
+
[commits]: https://github.com/kdpa-llc/local-skills-mcp/commits/main
|
|
356
|
+
[prs-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg
|
|
357
|
+
|
|
358
|
+
<!-- Repository Links -->
|
|
359
|
+
|
|
360
|
+
[repo]: https://github.com/kdpa-llc/local-skills-mcp
|
|
361
|
+
[pulls]: https://github.com/kdpa-llc/local-skills-mcp/pulls
|
|
362
|
+
|
|
363
|
+
<!-- Documentation Links -->
|
|
364
|
+
|
|
365
|
+
[contributing]: CONTRIBUTING.md
|
|
366
|
+
[security]: SECURITY.md
|
|
367
|
+
[changelog]: CHANGELOG.md
|
|
368
|
+
[code-of-conduct]: CODE_OF_CONDUCT.md
|
|
369
|
+
[license-file]: LICENSE
|
|
370
|
+
|
|
371
|
+
<!-- Sponsorship Links -->
|
|
372
|
+
|
|
373
|
+
[sponsor-github-badge]: https://img.shields.io/badge/Sponsor-GitHub%20Sponsors-ea4aaa?logo=github
|
|
374
|
+
[sponsor-github]: https://github.com/sponsors/moscaverd
|
|
375
|
+
[sponsor-coffee-badge]: https://img.shields.io/badge/Buy%20Me%20A%20Coffee-support-yellow?logo=buy-me-a-coffee
|
|
376
|
+
[sponsor-coffee]: https://buymeacoffee.com/moscaverd
|
|
377
|
+
[sponsor-paypal-badge]: https://img.shields.io/badge/PayPal-donate-blue?logo=paypal
|
|
378
|
+
[sponsor-paypal]: https://paypal.me/moscaverd
|
|
379
|
+
|
|
380
|
+
<!-- External Links -->
|
|
381
|
+
|
|
382
|
+
[mcp-sdk]: https://github.com/modelcontextprotocol/sdk
|
|
383
|
+
[claude-skills]: https://docs.claude.com/en/docs/claude-code/skills
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Get all skills directories to aggregate from.
|
|
4
|
+
*
|
|
5
|
+
* Scans for skill directories in the following order (lowest to highest priority):
|
|
6
|
+
* 1. `<package-root>/skills` - Package built-in skills (self-documenting, always available)
|
|
7
|
+
* 2. `~/.claude/skills` - Global Claude skills
|
|
8
|
+
* 3. `{cwd}/.claude/skills` - Project-level Claude skills
|
|
9
|
+
* 4. `{cwd}/skills` - Default project skills directory
|
|
10
|
+
* 5. `$SKILLS_DIR` - Custom directory from environment variable
|
|
11
|
+
*
|
|
12
|
+
* For duplicate skill names, later directories take precedence. This allows
|
|
13
|
+
* users to override built-in skills with their own versions.
|
|
14
|
+
*
|
|
15
|
+
* @returns Array of directory paths that exist on the filesystem
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* const dirs = getAllSkillsDirectories();
|
|
20
|
+
* console.log(dirs);
|
|
21
|
+
* // ['/usr/lib/node_modules/local-skills-mcp/skills', '/home/user/.claude/skills', '/home/user/project/skills']
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* // With SKILLS_DIR environment variable
|
|
27
|
+
* process.env.SKILLS_DIR = '/custom/skills';
|
|
28
|
+
* const dirs = getAllSkillsDirectories();
|
|
29
|
+
* // Returns: [...standard paths..., '/custom/skills']
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export declare function getAllSkillsDirectories(): string[];
|
|
33
|
+
/**
|
|
34
|
+
* Main MCP server class for serving skills to AI clients.
|
|
35
|
+
*
|
|
36
|
+
* LocalSkillsServer handles MCP protocol communication, manages skill discovery
|
|
37
|
+
* and loading through SkillLoader, and formats responses for clients.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```typescript
|
|
41
|
+
* const server = new LocalSkillsServer();
|
|
42
|
+
* await server.run();
|
|
43
|
+
* // Server is now running and listening on stdio
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
export declare class LocalSkillsServer {
|
|
47
|
+
private server;
|
|
48
|
+
private skillLoader;
|
|
49
|
+
/**
|
|
50
|
+
* Creates a new LocalSkillsServer instance.
|
|
51
|
+
*
|
|
52
|
+
* Initializes the MCP server with capabilities, creates a SkillLoader
|
|
53
|
+
* for all configured directories, and sets up request handlers.
|
|
54
|
+
*/
|
|
55
|
+
constructor();
|
|
56
|
+
private setupErrorHandling;
|
|
57
|
+
private setupHandlers;
|
|
58
|
+
private handleGetSkill;
|
|
59
|
+
/**
|
|
60
|
+
* Starts the MCP server and connects it to stdio transport.
|
|
61
|
+
*
|
|
62
|
+
* This method initializes the stdio transport for MCP communication,
|
|
63
|
+
* connects the server, and logs startup information including the
|
|
64
|
+
* list of skill directories being monitored.
|
|
65
|
+
*
|
|
66
|
+
* @throws {Error} If the server fails to connect or start
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ```typescript
|
|
70
|
+
* const server = new LocalSkillsServer();
|
|
71
|
+
* await server.run();
|
|
72
|
+
* // Output to stderr:
|
|
73
|
+
* // Local Skills MCP Server v0.1.0 running on stdio
|
|
74
|
+
* // Aggregating skills from 3 directories:
|
|
75
|
+
* // - /home/user/.claude/skills
|
|
76
|
+
* // - /home/user/project/.claude/skills
|
|
77
|
+
* // - /home/user/project/skills
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
run(): Promise<void>;
|
|
81
|
+
/**
|
|
82
|
+
* Closes the server and releases all resources.
|
|
83
|
+
*
|
|
84
|
+
* This method properly shuts down the MCP server and waits for all
|
|
85
|
+
* file handles and resources to be released. This is particularly
|
|
86
|
+
* important on Windows where file handles may take longer to release.
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```typescript
|
|
90
|
+
* const server = new LocalSkillsServer();
|
|
91
|
+
* await server.run();
|
|
92
|
+
* // ... do work ...
|
|
93
|
+
* await server.close();
|
|
94
|
+
* ```
|
|
95
|
+
*/
|
|
96
|
+
close(): Promise<void>;
|
|
97
|
+
}
|