Skip to content

Deployment Compatibility MatrixΒΆ

This document provides a comprehensive view of Code Scalpel's compatibility with all known MCP server deployment methods.

πŸ“‹ Full Compliance Audit: See the MCP Compliance Audit for point-by-point validation against official MCP requirements.

Transport Layer SupportΒΆ

Transport Status Security Use Case Documentation
stdio βœ… Fully Supported Process isolation Local AI clients (Claude Desktop, Cursor, VS Code) MCP Transports
SSE βœ… Fully Supported HTTPS/TLS Network deployments, Docker, remote teams MCP Transports
streamable-http βœ… Fully Supported HTTPS/TLS Production systems, load balancers, proxies MCP Transports

Local Deployment MethodsΒΆ

Desktop/Development EnvironmentsΒΆ

Method Status Notes Example
Direct Python Execution βœ… Supported Requires Python 3.10+ uvx codescalpel mcp
pip Installation βœ… Supported Global or venv pip install codescalpel && codescalpel mcp
uv Tool βœ… Supported Recommended for isolation uvx codescalpel mcp
Docker Local βœ… Supported Full isolation with dependencies docker run -i code-scalpel mcp
Windows cmd.exe βœ… Supported Works with standard Windows shells See Windows guide
WSL (Windows) βœ… Supported Linux environment on Windows Standard Linux commands

Client-Specific ConfigurationsΒΆ

Client Status Transport Configuration
Claude Desktop βœ… Supported stdio Setup Guide
VS Code + Copilot βœ… Supported stdio Setup Guide
Cursor βœ… Supported stdio Setup Guide
Continue.dev βœ… Supported stdio or HTTP Standard MCP config
Cline βœ… Supported stdio or HTTP Standard MCP config
Gemini CLI ⚠️ Partial HTTP with auth See Authentication

Network & Cloud DeploymentΒΆ

Container PlatformsΒΆ

Platform Status Transport Notes
Docker βœ… Supported stdio, SSE, HTTP Docker Guide
Docker Compose βœ… Supported SSE, HTTP Multi-service deployments
Kubernetes βœ… Supported SSE, HTTP Requires LoadBalancer/Ingress
Podman βœ… Supported Same as Docker Drop-in Docker replacement
Fly.io βœ… Supported SSE, HTTP Fly.io deployment

Cloud PlatformsΒΆ

Platform Status Hosting Type Notes
AWS EC2 βœ… Supported VM Standard Linux deployment
AWS ECS/Fargate βœ… Supported Container Use SSE or HTTP transport
AWS Lambda ⚠️ Limited Serverless See Serverless Considerations
Google Cloud Run βœ… Supported Container HTTP transport required
Azure Container Instances βœ… Supported Container Standard container deployment
Azure Functions ⚠️ Limited Serverless See Serverless Considerations
DigitalOcean Droplets βœ… Supported VM Standard Linux deployment
Heroku βœ… Supported Container Use HTTP transport
Railway βœ… Supported Container Use HTTP transport
Render βœ… Supported Container/Web Service Use HTTP transport

Platform as a ServiceΒΆ

Platform Status Notes
Apify πŸ”„ Experimental MCP Actor deployment pattern possible
Replit βœ… Supported Can run as background process
CodeSandbox ⚠️ Limited Container environments only
Gitpod βœ… Supported Workspace integration

Authentication SupportΒΆ

⚠️ Critical Limitation for Remote Deployments

Code Scalpel currently implements authorization (tier-based feature gating) but not authentication (identity verification) for HTTP endpoints.

Current SupportΒΆ

Auth Method Status Use Case
License JWT βœ… Supported Tier-based feature gating (Pro/Enterprise)
Environment Variables βœ… Supported CODE_SCALPEL_LICENSE_PATH
Host Validation βœ… Supported --allow-lan flag for network access control
HTTPS/TLS βœ… Supported --ssl-cert/--ssl-key for encrypted transport

Not Yet ImplementedΒΆ

Auth Method Status Priority Workaround
Bearer Tokens ❌ Not Implemented High βœ… Use reverse proxy with auth (nginx, Caddy)
OAuth 2.0/2.1 ❌ Not Implemented Medium βœ… Use Cloudflare Tunnel or reverse proxy
API Keys ❌ Not Implemented Medium βœ… Use VPN or SSH tunnels
SAML ❌ Not Implemented Low βœ… Use enterprise reverse proxy

What This MeansΒΆ

For local development (stdio): βœ… No authentication needed - process isolation provides security

For network deployments (SSE/HTTP): ⚠️ Must use workaround

  • βœ… LAN/Team: Use VPN, SSH tunnel, or private network
  • βœ… Production: REQUIRED - Use reverse proxy (nginx/Caddy) or Cloudflare Tunnel
  • ❌ Public Internet: NEVER expose directly without authentication

Complete Authentication GuideΒΆ

See the Authentication & Security Guide for: - Detailed security analysis for each deployment scenario - Step-by-step reverse proxy configuration (nginx, Caddy, Cloudflare Tunnel) - Production deployment checklist - Authentication implementations (workarounds until native support)

Serverless LimitationsΒΆ

Code Scalpel is designed as a stateful, long-running server and has limitations on serverless platforms:

Why Serverless is LimitedΒΆ

Issue Impact Mitigation
Cold Start Latency 2-5 second delay on first request Pre-warm functions or use provisioned concurrency
Stateless Execution No persistent AST cache between calls Use external cache (Redis, DynamoDB)
Memory Constraints Large codebases may exceed limits Process files in batches
Execution Timeout Lambda/Functions have max execution time Break large operations into smaller chunks
stdio Not Supported FaaS uses HTTP/event triggers only Must use HTTP transport

For serverless deployments:

  1. Use Container-based Serverless (Cloud Run, ECS Fargate) instead of FaaS
  2. Implement External State Store for AST cache persistence
  3. Use Session Management to maintain context across invocations
  4. Deploy as "Always-On" Container with min instances = 1

Example: AWS Lambda Deployment (Experimental)ΒΆ

# lambda_handler.py
import json
from code_scalpel.mcp.server import handle_mcp_request

def lambda_handler(event, context):
    """
    Lambda wrapper for Code Scalpel MCP server.
    WARNING: Limited functionality due to stateless constraints.
    """
    try:
        # Parse MCP request from API Gateway
        body = json.loads(event.get('body', '{}'))

        # Handle MCP tool call
        result = handle_mcp_request(body)

        return {
            'statusCode': 200,
            'headers': {'Content-Type': 'application/json'},
            'body': json.dumps(result)
        }
    except Exception as e:
        return {
            'statusCode': 500,
            'body': json.dumps({'error': str(e)})
        }

Note: This requires implementing handle_mcp_request as a stateless interface, which is not currently in the codebase.

Windows DeploymentΒΆ

PowerShell ConfigurationΒΆ

# Claude Desktop config (Windows)
$configPath = "$env:APPDATA\Claude\claude_desktop_config.json"

# With uvx (recommended)
@"
{
  "mcpServers": {
    "code-scalpel": {
      "command": "uvx",
      "args": ["codescalpel", "mcp"]
    }
  }
}
"@ | Out-File -FilePath $configPath -Encoding utf8

cmd.exe SupportΒΆ

Code Scalpel works with Windows Command Prompt, but paths must be proper Windows paths:

{
  "mcpServers": {
    "code-scalpel": {
      "command": "cmd",
      "args": ["/c", "python", "-m", "code_scalpel.cli", "mcp"]
    }
  }
}

Fly.io DeploymentΒΆ

Fly.io is ideal for stateful MCP servers with single-tenant isolation.

fly.toml ConfigurationΒΆ

app = "code-scalpel"
primary_region = "sjc"

[build]
  image = "ghcr.io/your-org/code-scalpel:latest"

[env]
  CODE_SCALPEL_TIER = "enterprise"

[http_service]
  internal_port = 8080
  force_https = true
  auto_stop_machines = false
  auto_start_machines = true
  min_machines_running = 1

[[services]]
  protocol = "tcp"
  internal_port = 8080

  [[services.ports]]
    port = 443
    handlers = ["tls", "http"]

  [[services.tcp_checks]]
    interval = "15s"
    timeout = "2s"

Deploy:

fly deploy
flyctl secrets set CODE_SCALPEL_LICENSE_PATH=/etc/code-scalpel/license.jwt

Deployment Decision TreeΒΆ

Need to deploy Code Scalpel?
β”‚
β”œβ”€ Local AI client? (Claude Desktop, VS Code, Cursor)
β”‚  └─ βœ… Use stdio transport (simplest)
β”‚
β”œβ”€ Docker/Kubernetes deployment?
β”‚  β”œβ”€ Behind load balancer? β†’ βœ… Use streamable-http
β”‚  └─ Direct access? β†’ βœ… Use SSE
β”‚
β”œβ”€ Cloud VM? (EC2, Droplets, Fly.io)
β”‚  └─ βœ… Use SSE or streamable-http with systemd service
β”‚
β”œβ”€ Serverless? (Lambda, Azure Functions)
β”‚  β”œβ”€ Can use containers? (Cloud Run, Fargate)
β”‚  β”‚  └─ βœ… Use streamable-http transport
β”‚  └─ Pure FaaS? (Lambda, Functions)
β”‚     └─ ⚠️ Limited support - consider VM/container instead
β”‚
└─ On-premises/Enterprise?
   β”œβ”€ Need authentication? β†’ Use reverse proxy (nginx/Caddy) + SSE
   β”œβ”€ Behind firewall? β†’ βœ… Use HTTP transport + VPN
   └─ Air-gapped? β†’ βœ… Use stdio on local machines

Status LegendΒΆ

Symbol Meaning
βœ… Fully supported and documented
⚠️ Partial support or limitations
πŸ”„ Experimental or community-contributed
❌ Not implemented (may be added in future)

Getting HelpΒΆ

If your deployment scenario isn't covered:

  1. Check the MCP Transports Guide for transport-specific details
  2. Review the Installation Guides for platform-specific setup
  3. Open an issue on GitHub describing your deployment environment

ContributingΒΆ

Know of a deployment method not covered here? We welcome contributions:

  • Documentation improvements
  • Platform-specific deployment guides
  • Authentication implementations
  • Serverless adapters

See Contributing for contribution guidelines.