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 |
Recommended Serverless ArchitectureΒΆ
For serverless deployments:
- Use Container-based Serverless (Cloud Run, ECS Fargate) instead of FaaS
- Implement External State Store for AST cache persistence
- Use Session Management to maintain context across invocations
- 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:
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:
- Check the MCP Transports Guide for transport-specific details
- Review the Installation Guides for platform-specific setup
- 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.