Problem Statement
Currently, GoClaw requires manual configuration to add MCP servers. Users must:
- Download an MCP bundle (
.mcpb file) — e.g., from Claude Desktop Extensions directory
- Extract the zip archive manually
- Manually configure the MCP server in GoClaw dashboard with:
- Transport type
- Command and arguments
- Environment variables
- Tool prefix
This creates unnecessary friction and prevents GoClaw from being a drop-in replacement for Claude Desktop's MCP ecosystem.
Real-World Use Case
A user downloads todoist-mcp-v1.0.3.mcpb from the Claude Desktop Extensions directory. To use it in GoClaw:
- Must manually
unzip the file
- Cannot delete the extracted folder (server needs the files)
- Must manually enter configuration that could be auto-detected from
manifest.json
- Must manage lifecycle (update/uninstall) manually
Claude Desktop handles this with a single click. GoClaw should too.
Proposed Solution
Implement MCP Bundle (.mcpb) Import Support — a feature that allows users to:
- Upload or drag-and-drop a
.mcpb file into GoClaw
- Auto-extract and install the MCP server
- Auto-populate configuration from
manifest.json
- Manage lifecycle (update, disable, uninstall) through GoClaw UI
.mcpb File Format
Reference: Anthropic's Desktop Extensions Architecture
The .mcpb format is a zip archive containing:
| File/Folder |
Purpose |
manifest.json |
Server metadata, entry point, user config schema |
server/ |
MCP server code and dependencies |
icon.png |
Optional server icon |
manifest.json Schema (relevant fields)
{
"name": "todoist-mcp",
"display_name": "Todoist MCP Server",
"version": "1.0.3",
"description": "Comprehensive Todoist integration for Claude",
"server": {
"type": "node",
"entry_point": "server/index.js",
"mcp_config": {
"command": "node",
"args": ["${__dirname}/server/index.js"],
"env": {
"TODOIST_API_TOKEN": "${user_config.todoist_api_token}"
}
}
},
"user_config": {
"todoist_api_token": {
"type": "string",
"title": "Todoist API Token",
"description": "Your Todoist API token...",
"sensitive": true,
"required": true
}
},
"tools": [
{"name": "todoist_task", "description": "..."}
]
}
Implementation Details
1. Import Flow
User uploads .mcpb → GoClaw extracts → Reads manifest.json →
Prompts for required user_config → Creates MCP server → Grants to agents
2. UI Integration
Add an "Import .mcpb" button to the MCP Servers page:
┌─────────────────────────────────────────────┐
│ MCP Servers [+ Add] │
│─────────────────────────────────────────────│
│ │
│ ┌────────────────────────────────────────┐ │
│ │ 📦 Import MCP Bundle (.mcpb) │ │
│ │ │ │
│ │ Drag & drop or click to upload │ │
│ └────────────────────────────────────────┘ │
│ │
│ Installed Servers: │
│ ├─ todoist-mcp (active) [⋮] │
│ ├─ filesystem (active) [⋮] │
│ └─ github (inactive) [⋮] │
└─────────────────────────────────────────────┘
3. Auto-Configuration Logic
When manifest.json is parsed:
| Manifest Field |
GoClaw Config |
server.mcp_config.command |
MCP server command |
server.mcp_config.args |
MCP server args (resolve ${__dirname}) |
server.mcp_config.env |
Environment variables |
user_config |
Prompt user for required fields (e.g., API tokens) |
tools |
Display discovered tools after connection test |
icon |
Use as server icon in UI |
4. Lifecycle Management
| Action |
Behavior |
| Update |
Upload new .mcpb → auto-replace server files |
| Uninstall |
Delete server + extracted files |
| Disable/Enable |
Toggle without removing files |
5. Security Considerations
- Sandboxed execution: MCP servers still run in GoClaw's existing sandbox
- User config encryption: Sensitive fields (API tokens) stored encrypted (AES-256-GCM, like existing MCP credentials)
- File integrity: Verify zip structure before extraction
- Path isolation: Extract to GoClaw-managed directory, not user-accessible location
User Experience Comparison
| Feature |
Claude Desktop |
GoClaw (Current) |
GoClaw (Proposed) |
| Install MCP server |
1-click |
Manual config |
1-click (upload) |
| Auto-detect config |
✅ |
❌ |
✅ |
| Prompt for required creds |
✅ |
❌ |
✅ |
| Display available tools |
✅ |
✅ |
✅ |
| Uninstall |
1-click |
Manual delete |
1-click |
| Update |
Re-upload |
Manual |
Re-upload |
Technical Notes
Existing MCP Infrastructure (GoClaw)
- MCP Manager: Central orchestrator for MCP server connections (
internal/mcp/manager.go)
- Transport support: stdio, SSE, streamable-http already implemented
- Database schema:
mcp_servers table with encrypted credentials (internal/store/pg/mcp_servers.go)
- UI: MCP form dialog with connection test (
ui/web/src/pages/mcp/mcp-form-dialog.tsx)
Suggested Architecture
ui/web/src/pages/mcp/
├── mcp-page.tsx # Already exists — add import button
├── mcp-form-dialog.tsx # Already exists — keep manual config
├── mcp-import-dialog.tsx # NEW: Import .mcpb flow
└── hooks/
└── use-mcp.ts # Already exists — extend with import handlers
internal/mcp/
├── manager.go # Already exists
├── manager_import.go # NEW: .mcpb import logic
└── manager_bundle.go # NEW: Bundle extraction + validation
internal/store/pg/
└── mcp_servers.go # Already exists — add bundle_path field
Bundle Installation Directory
Extract to: ${GOCLAW_DATA}/mcp-bundles/{server-name}/{version}/
This allows multiple versions and easy cleanup on uninstall.
Use Cases
- Migrate from Claude Desktop: User downloads their existing MCP servers and imports into GoClaw
- Explore new MCP servers: User discovers extensions from Claude Desktop directory and tries them in GoClaw
- Backup/restore: Export/import MCP configurations across GoClaw instances
Milestones (Suggested)
References
Problem Statement
Currently, GoClaw requires manual configuration to add MCP servers. Users must:
.mcpbfile) — e.g., from Claude Desktop Extensions directoryThis creates unnecessary friction and prevents GoClaw from being a drop-in replacement for Claude Desktop's MCP ecosystem.
Real-World Use Case
A user downloads
todoist-mcp-v1.0.3.mcpbfrom the Claude Desktop Extensions directory. To use it in GoClaw:unzipthe filemanifest.jsonClaude Desktop handles this with a single click. GoClaw should too.
Proposed Solution
Implement MCP Bundle (.mcpb) Import Support — a feature that allows users to:
.mcpbfile into GoClawmanifest.json.mcpb File Format
Reference: Anthropic's Desktop Extensions Architecture
The
.mcpbformat is a zip archive containing:manifest.jsonserver/icon.pngmanifest.json Schema (relevant fields)
{ "name": "todoist-mcp", "display_name": "Todoist MCP Server", "version": "1.0.3", "description": "Comprehensive Todoist integration for Claude", "server": { "type": "node", "entry_point": "server/index.js", "mcp_config": { "command": "node", "args": ["${__dirname}/server/index.js"], "env": { "TODOIST_API_TOKEN": "${user_config.todoist_api_token}" } } }, "user_config": { "todoist_api_token": { "type": "string", "title": "Todoist API Token", "description": "Your Todoist API token...", "sensitive": true, "required": true } }, "tools": [ {"name": "todoist_task", "description": "..."} ] }Implementation Details
1. Import Flow
2. UI Integration
Add an "Import .mcpb" button to the MCP Servers page:
3. Auto-Configuration Logic
When
manifest.jsonis parsed:server.mcp_config.commandserver.mcp_config.args${__dirname})server.mcp_config.envuser_configtoolsicon4. Lifecycle Management
.mcpb→ auto-replace server files5. Security Considerations
User Experience Comparison
Technical Notes
Existing MCP Infrastructure (GoClaw)
internal/mcp/manager.go)mcp_serverstable with encrypted credentials (internal/store/pg/mcp_servers.go)ui/web/src/pages/mcp/mcp-form-dialog.tsx)Suggested Architecture
Bundle Installation Directory
Extract to:
${GOCLAW_DATA}/mcp-bundles/{server-name}/{version}/This allows multiple versions and easy cleanup on uninstall.
Use Cases
Milestones (Suggested)
.mcpb, read manifest, create MCP server entryReferences
deepwiki.com/nextlevelbuilder/goclaw/16-mcp-integration