Skip to content

Commit c783cf2

Browse files
jqnatividadclaude
andcommitted
fix(mcpb): correct manifest.json to match official spec v0.3
Fixed "Invalid manifest: Invalid input" error by conforming to the official MCPB specification from github.com/modelcontextprotocol/mcpb. Changes: 1. Changed mcpb_version → manifest_version and "0.1" → "0.3" 2. Removed invalid fields: capabilities, features, requirements 3. Changed documentation from object to single URL string 4. Removed "order" fields from user_config (not in spec) 5. Changed "minimum/maximum" → "min/max" for number validation 6. Replaced custom "platforms" structure with proper "platform_overrides" in mcp_config (Windows-specific overrides only) 7. Added "tools" array with sample tools and "tools_generated: true" 8. Added "compatibility" object with supported platforms array 9. Moved custom metadata to "_meta" object using reverse-DNS namespace (com.dathere.qsv) The manifest now validates successfully in Claude Desktop. Regenerated qsv-mcp-server.mcpb with corrected manifest. Refs: https://github.com/modelcontextprotocol/mcpb/blob/main/MANIFEST.md 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent ec37b7c commit c783cf2

File tree

2 files changed

+156
-0
lines changed

2 files changed

+156
-0
lines changed

.claude/skills/manifest.json

Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,156 @@
1+
{
2+
"manifest_version": "0.3",
3+
"name": "qsv-data-wrangling",
4+
"version": "13.0.0",
5+
"description": "Complete CSV data-wrangling toolkit with 66 commands for transforming, analyzing, and validating tabular data. Process local CSV, Excel, and JSONL files without uploading.",
6+
"author": {
7+
"name": "Joel Natividad",
8+
"url": "https://github.com/dathere/qsv"
9+
},
10+
"repository": {
11+
"type": "git",
12+
"url": "https://github.com/dathere/qsv"
13+
},
14+
"license": "MIT",
15+
"homepage": "https://github.com/dathere/qsv/tree/master/.claude/skills",
16+
"documentation": "https://github.com/dathere/qsv/blob/master/.claude/skills/README.md",
17+
"keywords": [
18+
"csv",
19+
"data-wrangling",
20+
"data-analysis",
21+
"tabular-data",
22+
"excel",
23+
"jsonl",
24+
"etl",
25+
"data-transformation"
26+
],
27+
"server": {
28+
"type": "node",
29+
"entry_point": "server/mcp-server.js",
30+
"mcp_config": {
31+
"command": "node",
32+
"args": ["${__dirname}/server/mcp-server.js"],
33+
"env": {
34+
"QSV_MCP_BIN_PATH": "${user_config.qsv_path}",
35+
"QSV_MCP_WORKING_DIR": "${user_config.working_dir}",
36+
"QSV_MCP_ALLOWED_DIRS": "${user_config.allowed_dirs}",
37+
"QSV_MCP_TIMEOUT_MS": "${user_config.timeout_ms}",
38+
"QSV_MCP_MAX_OUTPUT_SIZE": "${user_config.max_output_size}",
39+
"QSV_MCP_AUTO_REGENERATE_SKILLS": "${user_config.auto_regenerate_skills}",
40+
"QSV_MCP_CHECK_UPDATES_ON_STARTUP": "${user_config.check_updates}",
41+
"QSV_MCP_NOTIFY_UPDATES": "${user_config.notify_updates}",
42+
"MCPB_EXTENSION_MODE": "true"
43+
},
44+
"platform_overrides": {
45+
"win32": {
46+
"env": {
47+
"QSV_MCP_BIN_PATH": "${user_config.qsv_path}",
48+
"QSV_MCP_WORKING_DIR": "${user_config.working_dir}",
49+
"QSV_MCP_ALLOWED_DIRS": "${user_config.allowed_dirs}"
50+
}
51+
}
52+
}
53+
}
54+
},
55+
"user_config": {
56+
"qsv_path": {
57+
"type": "string",
58+
"title": "qsv Binary Path",
59+
"description": "Path to qsv executable. Install qsv first from: https://github.com/dathere/qsv#installation",
60+
"required": false,
61+
"default": "qsv"
62+
},
63+
"working_dir": {
64+
"type": "string",
65+
"title": "Default Working Directory",
66+
"description": "Directory where qsv commands run by default",
67+
"required": false,
68+
"default": "${HOME}/Downloads"
69+
},
70+
"allowed_dirs": {
71+
"type": "string",
72+
"title": "Allowed Directories",
73+
"description": "Colon-separated (Linux/Mac) or semicolon-separated (Windows) paths where qsv can access files. Leave empty to allow all directories.",
74+
"required": false,
75+
"default": "${HOME}/Downloads:${HOME}/Documents"
76+
},
77+
"timeout_ms": {
78+
"type": "number",
79+
"title": "Command Timeout (milliseconds)",
80+
"description": "Maximum time to wait for qsv commands to complete",
81+
"required": false,
82+
"default": 300000,
83+
"min": 10000,
84+
"max": 3600000
85+
},
86+
"max_output_size": {
87+
"type": "number",
88+
"title": "Max Output Size (bytes)",
89+
"description": "Maximum size of command output. Large results are automatically saved to disk.",
90+
"required": false,
91+
"default": 52428800,
92+
"min": 1048576,
93+
"max": 104857600
94+
},
95+
"auto_regenerate_skills": {
96+
"type": "boolean",
97+
"title": "Auto-Regenerate Skills",
98+
"description": "Automatically regenerate skills when qsv version changes (requires qsv repository)",
99+
"required": false,
100+
"default": false
101+
},
102+
"check_updates": {
103+
"type": "boolean",
104+
"title": "Check for qsv Updates",
105+
"description": "Check for new qsv releases on startup",
106+
"required": false,
107+
"default": true
108+
},
109+
"notify_updates": {
110+
"type": "boolean",
111+
"title": "Show Update Notifications",
112+
"description": "Display update notifications in logs",
113+
"required": false,
114+
"default": true
115+
}
116+
},
117+
"tools": [
118+
{
119+
"name": "qsv_select",
120+
"description": "Select, reorder, or exclude columns from CSV data"
121+
},
122+
{
123+
"name": "qsv_stats",
124+
"description": "Calculate statistics (sum, min, max, mean, etc.) for CSV columns"
125+
},
126+
{
127+
"name": "qsv_search",
128+
"description": "Filter CSV rows using regex patterns"
129+
},
130+
{
131+
"name": "qsv_frequency",
132+
"description": "Show frequency distribution of values in columns"
133+
},
134+
{
135+
"name": "qsv_pipeline",
136+
"description": "Execute complex multi-command qsv pipelines"
137+
}
138+
],
139+
"tools_generated": true,
140+
"compatibility": {
141+
"platforms": ["darwin", "win32", "linux"]
142+
},
143+
"_meta": {
144+
"com.dathere.qsv": {
145+
"features": [
146+
"66 CSV data-wrangling commands",
147+
"Process local files (CSV, Excel, JSONL) without uploading",
148+
"Smart caching with stats files",
149+
"Pipeline composition for complex workflows",
150+
"Automatic Excel and JSONL conversion",
151+
"Filesystem resource browsing"
152+
],
153+
"minimum_qsv_version": "0.130.0"
154+
}
155+
}
156+
}

.claude/skills/qsv-mcp-server.mcpb

-95 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)