nextlevelbuilder / nextlevelbuilder/goclaw
[Feature Request] MCP Bundle (.mcpb) Import Support — One-Click MCP Server Installation
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 3.6k
- Forks
- 1.1k
- Avg merge
- 3d 5h
- Merged PRs (30d)
- 24
Description
Problem Statement
Currently, GoClaw requires manual configuration to add MCP servers. Users must:
- Download an MCP bundle (
.mcpbfile) — 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
unzipthe 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
.mcpbfile 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_serverstable 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)
- Phase 1: Basic import — extract
.mcpb, read manifest, create MCP server entry - Phase 2: User config UI — prompt for required credentials (API tokens, etc.)
- Phase 3: Lifecycle management — update, uninstall, disable
- Phase 4: Integration with MCP Connectors
- Phase 5: Claude Desktop migration assistant (import from Claude Desktop config)
References
- Anthropic Desktop Extensions Architecture
- Building Desktop Extensions with MCPB
- MCP Bundle Specification
- GoClaw MCP Integration:
deepwiki.com/nextlevelbuilder/goclaw/16-mcp-integration
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading internal/mcp/manager.go, internal/store/pg/mcp_servers.go, and ui/web/src/pages/mcp/mcp-form-dialog.tsx to understand the existing MCP flow. Then inspect the proposed mcp-page.tsx, use-mcp.ts, and new import components or manager files as entry points. Done means the stated import, manifest configuration, credential prompting, and lifecycle milestones work through the UI and existing MCP infrastructure.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go, postgresql, typescript
- Domain
- backend, database, frontend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100