Skip to content

[Feature Request] MCP Bundle (.mcpb) Import Support — One-Click MCP Server Installation #880

@tduong-p

Description

@tduong-p

Problem Statement

Currently, GoClaw requires manual configuration to add MCP servers. Users must:

  1. Download an MCP bundle (.mcpb file) — e.g., from Claude Desktop Extensions directory
  2. Extract the zip archive manually
  3. 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:

  1. Must manually unzip the file
  2. Cannot delete the extracted folder (server needs the files)
  3. Must manually enter configuration that could be auto-detected from manifest.json
  4. 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:

  1. Upload or drag-and-drop a .mcpb file into GoClaw
  2. Auto-extract and install the MCP server
  3. Auto-populate configuration from manifest.json
  4. 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

  1. Migrate from Claude Desktop: User downloads their existing MCP servers and imports into GoClaw
  2. Explore new MCP servers: User discovers extensions from Claude Desktop directory and tries them in GoClaw
  3. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions