NET容器化执行服务

dotbox-mcp是一个在隔离Docker容器中运行.NET工作负载的模型上下文协议服务器,支持快速测试、原型设计和多版本比较。

  • by domibies
  • Python
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 domibies/dotbox-mcp

使用说明

dotbox mcp

使LLM能够执行的模型上下文协议(MCP)服务器。NET工作负载在隔离的Docker容器中。编写C#代码,构建项目,托管web API,并在多个平台上进行测试。NET版本。

目前支持: 仅限克劳德桌面 平台: 🍎 macOS |🪟 视窗

使用FastMCP(Python)和Docker SDK构建。

💡 提示: 要获取最新版本,请运行 自动安装程序 再一次。它将更新您的配置并拉取最新的Docker镜像。

v2.0中的新增功能

重大变更:

  • .NET 10现已正式发布 -从RC2升级到稳定版本
  • MCP API变更: dotnet_version 现在接受 "10" 而不是 "10-rc2"
  • 默认版本已更改为。净值10 -所有操作现在默认为。NET 10(以前是.NET 8)

什么是dotbox mcp?

dotbox-mcp是一个专门用于快速处理的工具。NET在Claude Desktop中的实验和原型设计 -而不是像Claude Code或Cursor这样的成熟编码代理的替代品。

注: 目前仅支持Claude Desktop。未来可能会添加对其他MCP客户端(VS Code、Cursor等)的支持。

在以下情况下使用dotbox mcp:

  • 快速测试a。NET功能或API
  • 原型小型API或控制台应用程序
  • 比较各方的行为。NET版本(8、9、10)
  • 在不设置本地环境的情况下执行代码段
  • 单独使用NuGet包进行实验

需要时使用Claude Code:

  • 完整的代码库导航和编辑
  • 具有git集成的多文件项目
  • 全面的测试与调试
  • 生产就绪应用程序开发

通过隔离实现安全: 全部。NET代码在具有资源限制的临时Docker容器中运行,只读文件系统(除 /workspace),以及自动清理。容器在使用后会被销毁,确保没有持续的状态或安全风险。

示例:Claude构建了一个完整的API密钥管理服务,包括CRUD端点、内存中存储和密钥验证-从提示到运行API只需几秒钟。

特性

此MCP服务器是围绕 以代理为中心的工作流 -提供完整的端到端工具,而不是低级Docker命令:

  • 快速C#代码段:无需项目设置即可立即执行C#代码
  • 全面项目管理:创建、构建和运行完成。NET项目(控制台应用程序、web API、类库)
  • 多版本测试:比较代码行为。NET 8、9和10并行
  • Web API托管:在具有外部端口映射的容器中启动web服务器,以进行真正的HTTP测试
  • 资源管理:自动容器清理、超时处理和资源限制

在后台,它使用管理基于Alpine的Docker镜像。NET SDK,处理构建/执行编排,并格式化输出以保持在MCP的约束范围内。

快速开始

macOS安装(克劳德桌面版)

要求:

  • 安装并运行Docker Desktop的macOS
  • 克劳德桌面

自动安装(推荐):

curl -fsSL https://raw.githubusercontent.com/domibies/dotbox-mcp/main/scripts/install-claude-desktop.sh | bash

安装程序的作用:

  • 验证Docker是否已安装并正在运行
  • 更新克劳德桌面配置(保留其他MCP服务器)
  • 预拉Docker镜像(~1GB)
  • 配置为使用GHCR发布的Docker镜像

手动安装:

  1. 编辑Claude桌面配置 (~/Library/Application Support/Claude/claude_desktop_config.json):

    {
      "mcpServers": {
        "dotbox-mcp": {
          "command": "docker",
          "args": [
            "run",
            "--rm",
            "-i",
            "--add-host",
            "host.docker.internal:host-gateway",
            "--user",
            "1000:0",
            "-v",
            "/var/run/docker.sock:/var/run/docker.sock",
            "ghcr.io/domibies/dotbox-mcp:latest"
          ]
        }
      }
    }
    

    笔记:

    • 这 --user 1000:0 以具有根组访问权限的非根用户身份运行容器(Docker套接字需要)
    • 这 --add-host 标志使MCP服务器能够通过主机的端口映射访问沙盒容器中托管的web API
  2. 重新启动克劳德桌面

手动安装注意事项: 下载Docker镜像时,您的第一个请求可能会失败或超时(~1GB,1-2分钟)。只需等待一分钟,重新启动Claude Desktop,然后重试。自动安装程序在安装过程中拉取图像以避免这种延迟。

Windows安装(克劳德桌面版)

要求:

  • Windows 10或Windows 11
  • Docker 桌面版
  • 克劳德桌面

自动安装(推荐):

打开PowerShell并运行:

irm https://raw.githubusercontent.com/domibies/dotbox-mcp/main/scripts/install-claude-desktop.ps1 | iex

安装程序的作用:

  • 检查Docker桌面是否已安装
  • 验证Docker TCP端口2375是否已启用(如果未启用,则提供设置说明)
  • 更新Claude桌面配置 %APPDATA%\Claude\claude_desktop_config.json
  • 预拉Docker镜像(~1GB)
  • 配置为使用GHCR发布的Docker镜像

先决条件设置:

  1. 安装Docker桌面:

    • 下载自https://docs.docker.com/desktop/install/windows-install/
    • 启动Docker桌面
  2. 启用Docker TCP端口(必需):

    • 打开Docker桌面
    • 首选 设置 > 将军
    • 启用 “打开守护进程tcp://localhost:2375无TLS”
    • 点击 应用并重新启动

    ⚠️ 安全说明: 这会在没有身份验证的情况下公开Docker API。仅在受信任的网络(本地主机/专用)上启用。

手动安装:

  1. 编辑Claude桌面配置 (新闻 Win + R,类型 %APPDATA%\Claude,按Enter键,然后打开 claude_desktop_config.json):

    {
      "mcpServers": {
        "dotbox-mcp": {
          "command": "C:\\Program Files\\Docker\\Docker\\resources\\bin\\docker.exe",
          "args": [
            "run",
            "--rm",
            "-i",
            "--add-host",
            "host.docker.internal:host-gateway",
            "-e",
            "DOCKER_HOST=tcp://host.docker.internal:2375",
            "ghcr.io/domibies/dotbox-mcp:latest"
          ]
        }
      }
    }
    

    笔记:

    • 使用本机Docker桌面路径(如果安装在其他地方,请进行调整)
    • 需要启用Docker TCP端口2375(请参阅上面的先决条件)
    • 用途 DOCKER_HOST 连接到Docker守护进程的环境变量
  2. 重新启动克劳德桌面

    • 窗户: 点击华夫饼菜单(左上角)→ 文件 → 退出 (关闭窗口使克劳德在后台运行)
    • macOS: 从菜单中退出Claude Desktop

手动安装注意事项: 下载Docker镜像时,您的第一个请求可能会失败或超时(~1GB,1-2分钟)。只需等待一分钟,重新启动Claude Desktop,然后重试。自动安装程序在安装过程中拉取图像以避免这种延迟。

安装后

  1. 重新启动克劳德桌面
    • 窗户: 华夫饼菜单(☰)→ 文件 → 退出,然后重新启动
    • macOS: 退出并重新启动Claude Desktop
  2. 试着问克劳德: “执行以下C#代码:Console.WriteLine(DateTime.Now);”

故障排除

macOS:

  • Docker必须正在运行 -在使用Claude Desktop之前启动Docker Desktop
  • 检查配置: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 检查日志: ~/Library/Application Support/Claude/logs/mcp-server-dotbox-mcp.log

窗户:

  • Docker桌面必须正在运行 -在使用Claude Desktop之前启动Docker Desktop
  • 验证TCP端口2375是否已启用:
    • 测试:打开浏览器 http://localhost:2375/version (应显示Docker版本JSON)
    • 启用:Docker桌面>设置>常规>“打开守护进程tcp://localhost:2375无TLS”
  • 检查docker.exe路径:
    • 违约: C:\Program Files\Docker\Docker\resources\bin\docker.exe
    • 如果安装在其他地方,请更新 command 配置中的路径
  • 检查配置: %APPDATA%\Claude\claude_desktop_config.json
  • 检查日志: %APPDATA%\Claude\logs\mcp-server-dotbox-mcp.log

示例提示

注: 当您想查看格式化的结果时,明确请求显示输出。

快速代码段:

Generate 10 fake Person records in C# using the Bogus library and run it.
Display the JSON output in an artifact so I can see it properly formatted.
Write and execute C# code using LINQ to group products by category and calculate average prices.
Show me the results in an artifact.
Generate 10 random pronounceable passwords of length 12 in C#.
Execute it and show me the output. Explain how you did it and show the code in an artifact.
Show me a quick example of a new feature in .NET 10 and run it.

Web API(在后台运行):

Create and host a simple .NET 8 URL shortener API with in-memory storage. Include:
  - POST /api/shorten (takes long URL, returns short code)
  - GET /{shortCode} (redirects to original URL)
  - GET /api/stats/{shortCode} (shows click count)
Host it in the background and give me the URLs to test.
Build a .NET 9 API for generating and validating temporary access codes (like 2FA tokens).
Host it in the background so I can test creating and verifying codes.

已知问题和未来改进

演出

  • 容器启动缓慢:第一次执行。NET版本可能需要5-10秒才能启动容器
    • 潜在缓解措施:容器池(预热容器准备接受工作)

用户体验

  • 任务管理:MCP没有内置任务跟踪或多步骤工作流指导
    • 锦上添花:用于进度跟踪和分步执行提示的MCP协议扩展

贡献

有改进的想法吗? 我们欢迎捐款!如果您可以实施容器池、缩短启动时间或增强用户体验,请提交PR。查看我们的 发展与贡献 以下部分为指南。


发展与贡献

状态: ✅ MVP完成-所有核心工具都在工作,改进和优化正在进行中。

对于想要修改代码或测试未发布功能的贡献者:

需求

  • Python 3.10+
  • Docker 桌面版
  • uv(依赖管理器)

设置

  1. 克隆和安装依赖关系:

    git clone https://github.com/domibies/dotbox-mcp.git
    cd dotbox-mcp
    uv sync
    
  2. 构建Docker镜像:

    cd docker
    ./build-images.sh
    

在Claude Desktop中运行(开发模式)

注: 开发工作流程目前仅适用于macOS。

使用切换脚本在开发模式之间切换:

选项1:使用uv开发(建议用于代码更改)

# Configure Claude Desktop to run from source with uv
python3 scripts/toggle-claude-desktop-config.py dev

# Restart Claude Desktop

此模式:

  • 通过uv从源运行服务器
  • 代码更改时的热重新加载
  • 使用本地Docker镜像
  • 最适合TDD工作流程

选项2:使用Docker进行开发(测试容器化设置)

# Build all images (sandbox + server)
./scripts/build-docker-dev.sh

# Configure Claude Desktop to run in Docker
python3 scripts/toggle-claude-desktop-config.py docker

# Restart Claude Desktop

此模式:

  • 在容器中运行服务器(更接近生产环境)
  • 在Docker设置中测试Docker
  • 使用标记的本地图像 :dev
  • 最适合测试部署问题

切换回生产:

python3 scripts/toggle-claude-desktop-config.py production

所有切换操作都会保留配置中的其他MCP服务器。

测试

# Unit tests (fast, mocked Docker)
uv run pytest -v -m "not e2e"

# E2E tests (requires Docker running, pulls images as needed)
uv run pytest -v -m e2e

# With coverage
uv run pytest --cov=src --cov-report=term-missing -m "not e2e"

Git工作流

始终处理特征分支:

git checkout -b feature/your-feature
# Make changes, commit, push
git push -u origin feature/your-feature
# Create PR via GitHub

永远不要直接推到main——所有更改都要经过CI验证的PR。

许可证

麻省理工学院 -版权所有(c)2025 多米尼克