@gera-services/mcp-gera-skills 0.1.0 → 1.0.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/LICENSE +1 -1
- package/README.md +90 -19
- package/bin/cli.js +11 -1
- package/dist/data/skill-packs.json +2687 -0
- package/dist/data.d.ts +39 -0
- package/dist/data.js +80 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.js +12 -28
- package/dist/server.d.ts +22 -0
- package/dist/server.js +223 -167
- package/package.json +23 -26
- package/server.json +8 -19
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -1,36 +1,107 @@
|
|
|
1
|
-
#
|
|
1
|
+
# GeraSkills MCP Server
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://skills.gera.services)
|
|
4
4
|
|
|
5
|
-
AI agents
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
- `get_creator_revenue(creatorId)` — lifetime sales + payouts for a creator
|
|
10
|
-
- `install_skill(robotId, skillId, version?)` — initiate purchase + install (requires operator consent token)
|
|
5
|
+
An [MCP](https://modelcontextprotocol.io) server that lets AI agents — Claude
|
|
6
|
+
Desktop, ChatGPT with tools, Cursor, Windsurf, or any MCP client — **search,
|
|
7
|
+
inspect, and recommend AI skill packs** from the
|
|
8
|
+
[GeraSkills](https://skills.gera.services) marketplace.
|
|
11
9
|
|
|
12
|
-
|
|
10
|
+
The full catalogue (104 skill packs across 12 categories — Healthcare, Legal &
|
|
11
|
+
Compliance, Education, Home & Lifestyle, Business & Finance, Agriculture &
|
|
12
|
+
Food, Environment & Sustainability, Real Estate, Personal Finance, Government &
|
|
13
|
+
Civic, Wellness & Mental Health, Science & Research) is embedded from the real
|
|
14
|
+
GeraSkills web data. **No backend, no network, no auth** — every tool answers
|
|
15
|
+
locally, so it is safe to run anywhere and returns the same skills the live
|
|
16
|
+
marketplace shows.
|
|
13
17
|
|
|
14
|
-
|
|
15
|
-
|
|
18
|
+
## Tools
|
|
19
|
+
|
|
20
|
+
| Tool | What it does |
|
|
21
|
+
|------|--------------|
|
|
22
|
+
| `search_skills` | Full-text search the catalogue with optional filters (category, region, max monthly price, badge). Returns compact cards. |
|
|
23
|
+
| `get_skill` | Full detail for one skill by id or name — every capability, both price options, tags, target user, regions, badge, marketplace URL. |
|
|
24
|
+
| `recommend_skills` | Given a plain-language goal, return a ranked "skill path" of the most relevant skills, scored by goal-term overlap. |
|
|
25
|
+
| `list_categories` | All 12 categories with a skill count each — scope a search before drilling in. |
|
|
26
|
+
| `skills_for_region` | Skills explicitly tagged for a region/country (`UK`, `EU`, `US`, `Global`) — for jurisdiction-specific needs. |
|
|
27
|
+
|
|
28
|
+
A typical agent flow: `list_categories` → `search_skills` (or `recommend_skills`
|
|
29
|
+
for a goal) → `get_skill` for the full record.
|
|
30
|
+
|
|
31
|
+
## Install & run
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# Run directly (no global install) once published to npm:
|
|
35
|
+
npx -y @gera-services/mcp-gera-skills
|
|
36
|
+
|
|
37
|
+
# Or from this repo:
|
|
38
|
+
cd packages/mcp-gera-skills
|
|
39
|
+
npm run build # tsc --noCheck + copy catalogue -> dist/
|
|
40
|
+
node bin/cli.js # starts on stdio
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Client configuration
|
|
44
|
+
|
|
45
|
+
### Claude Desktop / Claude Code (`claude_desktop_config.json`)
|
|
46
|
+
|
|
47
|
+
```json
|
|
16
48
|
{
|
|
17
49
|
"mcpServers": {
|
|
18
50
|
"gera-skills": {
|
|
19
51
|
"command": "npx",
|
|
20
|
-
"args": ["-y", "@gera-services/mcp-gera-skills"]
|
|
21
|
-
"env": {
|
|
22
|
-
"GERASKILLS_API_URL": "https://geraskills.com/backend",
|
|
23
|
-
"GERA_USER_TOKEN": "<operator JWT>"
|
|
24
|
-
}
|
|
52
|
+
"args": ["-y", "@gera-services/mcp-gera-skills"]
|
|
25
53
|
}
|
|
26
54
|
}
|
|
27
55
|
}
|
|
28
56
|
```
|
|
29
57
|
|
|
30
|
-
|
|
58
|
+
Local (unpublished) variant — point at the built CLI:
|
|
59
|
+
|
|
60
|
+
```json
|
|
61
|
+
{
|
|
62
|
+
"mcpServers": {
|
|
63
|
+
"gera-skills": {
|
|
64
|
+
"command": "node",
|
|
65
|
+
"args": ["/Users/armen/Gera/packages/mcp-gera-skills/bin/cli.js"]
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Cursor / Windsurf (`.cursor/mcp.json` etc.)
|
|
72
|
+
|
|
73
|
+
```json
|
|
74
|
+
{
|
|
75
|
+
"mcpServers": {
|
|
76
|
+
"gera-skills": {
|
|
77
|
+
"command": "npx",
|
|
78
|
+
"args": ["-y", "@gera-services/mcp-gera-skills"]
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Verify it works
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
npm run build
|
|
88
|
+
node scripts/smoke.mjs
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
The smoke test speaks raw MCP JSON-RPC over stdio (`initialize` → `tools/list`
|
|
92
|
+
→ several `tools/call`) and asserts the results. Expected output ends with
|
|
93
|
+
`ALL SMOKE CHECKS PASSED`.
|
|
94
|
+
|
|
95
|
+
## Example
|
|
96
|
+
|
|
97
|
+
Ask your agent: *"I'm setting up a small UK accountancy practice — what
|
|
98
|
+
GeraSkills should I look at?"*
|
|
31
99
|
|
|
32
|
-
|
|
100
|
+
The agent calls `recommend_skills` with `goal: "run a small UK accountancy
|
|
101
|
+
practice", region: "UK"` and gets back a ranked skill path including
|
|
102
|
+
`bookkeeping-assistant`, `company-secretary-assistant`, and
|
|
103
|
+
`anti-money-laundering-guide`, each with its price and marketplace URL.
|
|
33
104
|
|
|
34
105
|
## License
|
|
35
106
|
|
|
36
|
-
MIT
|
|
107
|
+
MIT © Gera Systems Ltd
|
package/bin/cli.js
CHANGED
|
@@ -1,2 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* CLI entry point for the GeraSkills MCP server.
|
|
4
|
+
* Starts the server on stdio. Intended to be launched by an MCP client
|
|
5
|
+
* (Claude Desktop, ChatGPT-with-tools, Cursor, etc.) — not run interactively.
|
|
6
|
+
*/
|
|
7
|
+
import { main } from '../dist/server.js';
|
|
8
|
+
|
|
9
|
+
main().catch((err) => {
|
|
10
|
+
console.error('Fatal:', err);
|
|
11
|
+
process.exit(1);
|
|
12
|
+
});
|