MCP Bundler Service

by highlight-ing

32 stars
318 downloads
Not rated
GitHub

About

A microservice for bundling MCP servers from GitHub repositories and preparing it for deployment.

Details

Author
highlight-ing
GitHub stars
32
Downloads
318
Categories
Other, Infrastructure

- Bundle code directly from any public GitHub repository
- Support for ESM (mjs) and CommonJS (cjs) output formats
- Pin commits for reproducible builds with optional commit hash
- Optional upload of bundled code to Google Cloud Storage
- Interactive Swagger documentation at /docs
- Comprehensive error handling with HTTP status codes (400, 500, 504)

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name MCP Bundler Service
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Install dependencies with pnpm install, start the server with pnpm run dev, and access the interactive API documentation at /docs on localhost:8080. Use the /bundler or /v2/bundler endpoints with a GitHub repository URL; optionally specify a commit hash, output format (v1), or an MCP ID (v2). For GCP uploads, set the GCP_SERVICE_ACCOUNT_KEY environment variable; set DISABLE_GCP_INTEGRATION=true to return the bundle directly.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "mcp bundler service": {
            "mcp-bundler": {
                "command": "docker",
                "args": [
                    "build",
                    "-t",
                    "mcp-bundler",
                    "."
                ]
            }
        }
    }
}

McpServers

{
    "mcp-bundler": {
        "command": "docker",
        "args": [
            "build",
            "-t",
            "mcp-bundler",
            "."
        ]
    }
}
# MCP Bundler Service A microservice that bundles code from GitHub repositories and prepares it for deployment. It supports direct return of bundled code or uploading to Google Cloud Storage. ## Quick Start ```bash # Install dependencies pnpm install # Start the development server pnpm run dev # Access the API documentation open http://localhost:8080/docs ``` ## API Documentation Interactive API documentation is available at `/docs` when the server is running. ## Core Endpoints ### Index Route ``` GET / ``` Returns a static HTML page with information about the service. ### Health Check ``` GET /health ``` Returns a simple status check to verify the service is running. ### V1 Bundler (Legacy) ``` GET /bundler?url=<github_url>&commit=<commit_hash>&format=<mjs|cjs> ``` **Parameters:** - `url` (required): GitHub repository URL - `commit` (optional): Specific commit hash to use (defaults to latest) - `format` (optional): Output format - `mjs` (default) or `cjs` **Response:** ```json { "data": "<bundled code as string>" } ``` ### V2 Bundler (with optional GCP Upload) ``` GET /v2/bundler?url=<github_url>&commit=<commit_hash>&mcpId=<your_mcp_id> ``` **Parameters:** - `url` (required): GitHub repository URL - `commit` (optional): Specific commit hash to use (defaults to latest) - `mcpId` (optional): Unique identifier for your bundled server (auto-generated if not provided) **GCP Upload Enabled Response:** ```json { "success": true, "gcp_upload": { "bucket": "your-bucket-name", "path": "your-mcp-id/commit-hash/", "files": [ "bundle-commit-hash.tar.gz" ] } } ``` **GCP Upload Disabled Response:** ```json { "success": true, "data": "<bundled code as string>" } ``` ## GCP Integration (Optional) The V2 bundler can upload bundled code to Google Cloud Storage for use with other services, or return it directly if GCP integration is disabled. ### Disabling GCP Upload If you want to disable GCP uploads and get the bundled code directly in the response, set: ``` DISABLE_GCP_INTEGRATION=true ``` in your environment or `.env` file. When GCP integration is disabled: 1. The bundled code is returned directly in the API response 2. A copy of the bundled code archive is saved to the `bundled` directory in the project root 3. The archive filename follows the format `bundle-[commit-hash].tar.gz` ### Setting Up GCP Credentials If you want to use GCP uploads, you need to provide your Google Cloud Platform credentials: Add your service account key JSON directly to the `.env` file: ``` GCP_SERVICE_ACCOUNT_KEY={"type": "service_account", "project_id": "your-project-id", ...} ``` This is the recommended option for development and CI/CD environments. ### Required Permissions Create a service account with `Storage Admin` permissions for the bucket you want to use. ## Deployment The service includes a Dockerfile for containerized deployment: ```bash # Build the Docker image docker build -t mcp-bundler . # Run the container docker run -p 8080:8080 -e GCP_SERVICE_ACCOUNT_KEY='{"type":"service_account",...}' mcp-bundler ``` ### Cloud Run Deployment For Google Cloud Run deployment, set the `GCP_SERVICE_ACCOUNT_KEY` environment variable with your service account credentials JSON. ## Error Handling All endpoints include comprehensive error responses with appropriate HTTP status codes: - `400`: Invalid input parameters - `500`: Server-side errors - `504`: Timeout errors (typically for large repositories or complex dependencies) ## Features - **GitHub Integration**: Bundle code directly from any public GitHub repository - **Format Options**: Output in either ESM (mjs) or CommonJS (cjs) format - **Commit Pinning**: Specify exact commit hashes for reproducible builds - **GCP Storage**: Optional upload of bundled code to Google Cloud Storage for further deployment - **Swagger Documentation**: Interactive API documentation with Swagger UI - **Error Handling**: Comprehensive error reporting with appropriate status codes ## Limitations - Repository bundling has a 5-minute timeout - Large WASM files might exceed processing limits ## Environment Variables | Variable | Description | Default | |----------|-------------|---------| | `GCP_SERVICE_ACCOUNT_KEY` | GCP service account credentials JSON | - | | `DISABLE_GCP_INTEGRATION` | Set to "true" to disable GCP uploads | - | | `SENTRY_INGEST_URL` | Sentry ingest URL | - | ## Contributing Contributions are welcome! Please feel free to submit a Pull Request. ```
No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.