Skip to content

Commit 4199fda

Browse files
committed
feat: update manifest to v0.3 specification
- Restructured configuration to use new user_config schema with typed fields and sensitivity flags - Reorganized server configuration with mcp_config containing command, args, and environment variable references - Renamed metadata fields to match v0.3 spec (publisher→author, categories/tags→keywords, requirements→compatibility)
1 parent 5f3a6de commit 4199fda

File tree

3 files changed

+147
-56
lines changed

3 files changed

+147
-56
lines changed

bundle/manifest.json

Lines changed: 65 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
{
2-
"name": "ch.pfx/mcp-server",
2+
"manifest_version": "0.3",
3+
"name": "pfx-mcp-server",
34
"display_name": "Proffix Px5 MCP Server",
4-
"description": "Connect AI assistants to your Forterro Proffix Px5 ERP system with 120+ endpoints via MCP protocol",
5-
"version": "1.0.5",
6-
"publisher": {
7-
"name": "pfx.ch",
5+
"description": "Connect AI assistants to your Forterro Proffix Px5 ERP system via MCP protocol",
6+
"version": "1.0.8",
7+
"author": {
8+
"name": "Pedrett IT+Web AG",
89
"url": "https://mcp.pfx.ch"
910
},
1011
"homepage": "https://mcp.pfx.ch",
@@ -13,12 +14,7 @@
1314
"url": "https://github.com/pitwch/pfx-mcp-server"
1415
},
1516
"license": "MIT",
16-
"categories": [
17-
"business",
18-
"erp",
19-
"crm"
20-
],
21-
"tags": [
17+
"keywords": [
2218
"erp",
2319
"proffix",
2420
"forterro",
@@ -30,52 +26,67 @@
3026
"server": {
3127
"type": "node",
3228
"entry_point": "mcp-http-bridge.js",
33-
"args": [
34-
"https://mcp.pfx.ch/api/server"
35-
]
36-
},
37-
"mcp_config": {
38-
"env": {
39-
"HTTP_AUTHORIZATION": {
40-
"description": "API Key for pfx MCP Server (get it from https://mcp.pfx.ch/request-api-key.html)",
41-
"required": true,
42-
"secret": true,
43-
"default": "Bearer "
44-
},
45-
"PROFFIX_USERNAME": {
46-
"description": "Your Proffix username",
47-
"required": true,
48-
"secret": false
49-
},
50-
"PROFFIX_PASSWORD": {
51-
"description": "Your Proffix password",
52-
"required": true,
53-
"secret": true
54-
},
55-
"PROFFIX_URL": {
56-
"description": "Your Proffix server URL (e.g., https://your-proffix.com)",
57-
"required": true,
58-
"secret": false
59-
},
60-
"PROFFIX_PORT": {
61-
"description": "Proffix REST API port",
62-
"required": true,
63-
"secret": false,
64-
"default": "11011"
65-
},
66-
"PROFFIX_DATABASE": {
67-
"description": "Your Proffix database name",
68-
"required": true,
69-
"secret": false
29+
"mcp_config": {
30+
"command": "node",
31+
"args": [
32+
"${__dirname}/mcp-http-bridge.js",
33+
"https://mcp.pfx.ch/api/server"
34+
],
35+
"env": {
36+
"HTTP_AUTHORIZATION": "${user_config.api_key}",
37+
"PROFFIX_USERNAME": "${user_config.proffix_username}",
38+
"PROFFIX_PASSWORD": "${user_config.proffix_password}",
39+
"PROFFIX_URL": "${user_config.proffix_url}",
40+
"PROFFIX_PORT": "${user_config.proffix_port}",
41+
"PROFFIX_DATABASE": "${user_config.proffix_database}"
7042
}
7143
}
7244
},
73-
"capabilities": {
74-
"tools": true,
75-
"prompts": true,
76-
"resources": false
45+
"user_config": {
46+
"api_key": {
47+
"type": "string",
48+
"title": "API Key",
49+
"description": "Your pfx MCP Server API Key (get it from https://mcp.pfx.ch/request-api-key.html)",
50+
"sensitive": true,
51+
"required": true,
52+
"default": "Bearer "
53+
},
54+
"proffix_username": {
55+
"type": "string",
56+
"title": "Proffix Username",
57+
"description": "Your Proffix username",
58+
"required": true
59+
},
60+
"proffix_password": {
61+
"type": "string",
62+
"title": "Proffix Password",
63+
"description": "Your Proffix password",
64+
"sensitive": true,
65+
"required": true
66+
},
67+
"proffix_url": {
68+
"type": "string",
69+
"title": "Proffix Server URL",
70+
"description": "Your Proffix server URL (e.g., https://your-proffix.com)",
71+
"required": true
72+
},
73+
"proffix_port": {
74+
"type": "string",
75+
"title": "Proffix API Port",
76+
"description": "Proffix REST API port",
77+
"required": true,
78+
"default": "11011"
79+
},
80+
"proffix_database": {
81+
"type": "string",
82+
"title": "Proffix Database",
83+
"description": "Your Proffix database name",
84+
"required": true
85+
}
7786
},
78-
"requirements": {
79-
"node": ">=18.0.0"
87+
"compatibility": {
88+
"runtimes": {
89+
"node": ">=18.0.0"
90+
}
8091
}
8192
}

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "pfx-mcp-server",
3-
"version": "1.0.5",
3+
"version": "1.0.6",
44
"description": "MCP Server for Forterro Proffix Px5 ERP",
55
"main": "mcp-http-bridge.js",
66
"bin": {
@@ -16,7 +16,7 @@
1616
"forterro",
1717
"px5"
1818
],
19-
"author": "pfx.ch",
19+
"author": "Pedrett IT+Web AG",
2020
"license": "MIT",
2121
"repository": {
2222
"type": "git",

scripts/build-mcpb.ps1

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
# PowerShell script to build MCPB bundle on Windows
2+
3+
Write-Host "🔨 Building MCPB bundle..." -ForegroundColor Cyan
4+
5+
$ROOT_DIR = Split-Path -Parent (Split-Path -Parent $PSCommandPath)
6+
$BUNDLE_DIR = Join-Path $ROOT_DIR "bundle"
7+
$DIST_DIR = Join-Path $ROOT_DIR "dist"
8+
$OUTPUT_FILE = Join-Path $DIST_DIR "pfx-mcp-server.mcpb"
9+
$BUILD_DIR = Join-Path $ROOT_DIR ".mcpb-build"
10+
11+
# Files to bundle
12+
$FILES_TO_BUNDLE = @("mcp-http-bridge.js", "LICENSE")
13+
14+
# Create dist directory
15+
if (-not (Test-Path $DIST_DIR)) {
16+
New-Item -ItemType Directory -Path $DIST_DIR | Out-Null
17+
Write-Host "✓ Created dist directory" -ForegroundColor Green
18+
}
19+
20+
# Create temporary build directory
21+
if (Test-Path $BUILD_DIR) {
22+
Remove-Item -Recurse -Force $BUILD_DIR
23+
}
24+
New-Item -ItemType Directory -Path $BUILD_DIR | Out-Null
25+
Write-Host "✓ Created temporary build directory" -ForegroundColor Green
26+
27+
try {
28+
# Copy manifest.json
29+
$manifestSrc = Join-Path $BUNDLE_DIR "manifest.json"
30+
$manifestDest = Join-Path $BUILD_DIR "manifest.json"
31+
Copy-Item $manifestSrc $manifestDest
32+
Write-Host "✓ Copied manifest.json" -ForegroundColor Green
33+
34+
# Copy other files
35+
foreach ($file in $FILES_TO_BUNDLE) {
36+
$src = Join-Path $ROOT_DIR $file
37+
$dest = Join-Path $BUILD_DIR $file
38+
39+
if (Test-Path $src) {
40+
Copy-Item $src $dest
41+
Write-Host "✓ Copied $file" -ForegroundColor Green
42+
} else {
43+
Write-Host "⚠ Warning: $file not found, skipping" -ForegroundColor Yellow
44+
}
45+
}
46+
47+
# Create ZIP archive
48+
Write-Host "📦 Creating MCPB archive..." -ForegroundColor Yellow
49+
50+
# Remove existing MCPB file
51+
if (Test-Path $OUTPUT_FILE) {
52+
Remove-Item $OUTPUT_FILE
53+
}
54+
55+
# Use PowerShell's built-in Compress-Archive
56+
Compress-Archive -Path "$BUILD_DIR\*" -DestinationPath $OUTPUT_FILE -Force
57+
58+
Write-Host "✓ Created MCPB archive" -ForegroundColor Green
59+
60+
# Get file size
61+
$fileSize = (Get-Item $OUTPUT_FILE).Length
62+
$fileSizeKB = [math]::Round($fileSize / 1KB, 2)
63+
64+
Write-Host ""
65+
Write-Host "✅ Build complete!" -ForegroundColor Green
66+
Write-Host "📦 Output: $OUTPUT_FILE" -ForegroundColor Cyan
67+
Write-Host "📊 Size: $fileSizeKB KB" -ForegroundColor Cyan
68+
Write-Host ""
69+
Write-Host "To test: Drag and drop the .mcpb file into Claude Desktop" -ForegroundColor White
70+
71+
} catch {
72+
Write-Host "❌ Build failed: $_" -ForegroundColor Red
73+
exit 1
74+
} finally {
75+
# Clean up temporary build directory
76+
if (Test-Path $BUILD_DIR) {
77+
Remove-Item -Recurse -Force $BUILD_DIR
78+
Write-Host "✓ Cleaned up temporary files" -ForegroundColor Green
79+
}
80+
}

0 commit comments

Comments
 (0)