返回市场
点盒-MCP

点盒-MCP

作者:domibies3 星标更新:2025-11-24

项目介绍

<div align="center"> <img src="images/dotbox-mcp-logo-512.jpg" alt="dotbox-mcp logo" width="200"/> <p> <a href="https://github.com/domibies/dotbox-mcp/releases"><img src="https://img.shields.io/github/v/release/domibies/dotbox-mcp" alt="Release"/></a> <a href="https://github.com/domibies/dotbox-mcp/actions"><img src="https://github.com/domibies/dotbox-mcp/workflows/CI/badge.svg" alt="CI"/></a> <img src="https://img.shields.io/badge/platform-macOS%20%7C%20Windows-blue" alt="Platform"/> <a href="LICENSE"><img src="https://img.shields.io/github/license/domibies/dotbox-mcp" alt="License"/></a> </p> </div>

dotbox-mcp

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

当前支持: 仅支持Claude Desktop 平台: 🍎 macOS | 🪟 Windows

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

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

v2.0 新特性

重大变更:

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

dotbox-mcp 是什么?

dotbox-mcp 是一个专用于在Claude Desktop上快速进行.NET实验和原型设计的工具 - 不是像Claude Code或Cursor那样的完整编码代理的替代品。

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

当您想要时使用 dotbox-mcp:

  • 快速测试.NET功能或API
  • 原型设计小型最小API或控制台应用程序
  • 比较不同.NET版本(8、9、10)的行为
  • 在不设置本地环境的情况下执行代码片段
  • 隔离地试验NuGet包

当您需要时使用 Claude Code:

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

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

API密钥管理示例 示例: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 安装(Claude Desktop)

需求:

  • 已安装并运行Docker Desktop的macOS
  • Claude Desktop

自动安装(推荐):

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

安装程序做了什么:

  • 验证Docker已安装并正在运行
  • 更新Claude Desktop配置(保留其他MCP服务器)
  • 预拉取Docker镜像(约1GB)
  • 配置使用GHCR发布的Docker镜像

手动安装:

  1. 编辑Claude Desktop配置~/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 以非root用户身份运行容器,具有root组访问权限(Docker套接字所需)
    • --add-host 标志允许MCP服务器通过主机机器的端口映射访问沙盒容器中托管的Web API
  2. 重启Claude Desktop

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

Windows 安装(Claude Desktop)

需求:

  • Windows 10 或 Windows 11
  • Docker Desktop
  • Claude Desktop

自动安装(推荐):

打开PowerShell并运行:

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

安装程序做了什么:

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

前提条件设置:

  1. 安装Docker Desktop:

  2. 启用Docker TCP端口(必需):

    • 打开Docker Desktop
    • 转到设置 > 常规
    • 启用**“在tcp://localhost:2375上暴露守护进程,不使用TLS”**
    • 单击应用并重新启动

    ⚠️ 安全提示: 这会在没有身份验证的情况下暴露Docker API。仅在受信任的网络(本地/私有)上启用。

手动安装:

  1. 编辑Claude Desktop配置(按 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 Desktop的默认路径(如果安装在其他位置则调整)
    • 需要启用Docker TCP端口2375(参见上述前提条件)
    • 使用DOCKER_HOST环境变量连接到Docker守护进程
  2. 重启Claude Desktop

    • Windows: 点击汉堡菜单(左上角)→ 文件退出(关闭窗口会将Claude保留在后台运行)
    • macOS: 从菜单中退出Claude Desktop

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

安装后

  1. 重启Claude Desktop
    • Windows: 汉堡菜单(☰)→ 文件退出,然后重新启动
    • macOS: 退出并重新启动Claude Desktop
  2. 尝试询问Claude:“执行这段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

Windows:

  • Docker Desktop必须运行 - 在使用Claude Desktop之前启动Docker Desktop
  • 验证TCP端口2375是否启用:
    • 测试:在浏览器中打开 http://localhost:2375/version(应显示Docker版本JSON)
    • 启用:Docker Desktop > 设置 > 通用 > “在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

示例提示

注意: 当您希望看到格式化的结果时,请明确请求输出显示。

快速代码片段:

使用Bogus库生成10个假的Person记录,并运行它。
在工件中显示JSON输出,以便我可以正确格式化查看。
编写并执行使用LINQ分组产品类别并计算平均价格的C#代码。
在工件中显示结果。
生成12个长度的随机可发音密码,共10个。
执行它并显示输出。解释您是如何做到的,并在工件中显示代码。
给我一个.NET 10的新特性的快速示例并运行它。

Web API(后台运行):

创建并托管一个简单的.NET 8 URL缩短器API,具有内存存储。包括:
  - POST /api/shorten(接收长URL,返回短码)
  - GET /{shortCode}(重定向到原始URL)
  - GET /api/stats/{shortCode}(显示点击次数)
在后台托管它,并给我测试的URL。
构建一个用于生成和验证临时访问码(如2FA令牌)的.NET 9 API。
在后台托管它,以便我可以测试创建和验证代码。

已知问题与未来改进

性能

  • 慢容器启动:每个.NET版本的首次执行可能需要5-10秒,因为容器启动
    • 潜在缓解措施:容器池(预热容器准备好接受工作)

用户体验

  • 任务管理:MCP没有内置的任务跟踪或多步骤工作流指导
    • 理想情况:MCP协议扩展,用于进度跟踪和逐步执行提示

贡献

有改进的想法吗? 我们欢迎贡献!如果您可以实现容器池、提高启动时间或增强用户体验,请提交PR。请参阅下方的开发与贡献部分以了解指南。


开发与贡献

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

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

需求

  • Python 3.10+
  • Docker Desktop
  • 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的开发(推荐用于代码更改)

# 配置Claude Desktop从源代码运行并使用uv
python3 scripts/toggle-claude-desktop-config.py dev

# 重启Claude Desktop

此模式:

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

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

# 构建所有镜像(沙箱+服务器)
./scripts/build-docker-dev.sh

# 配置Claude Desktop在Docker中运行
python3 scripts/toggle-claude-desktop-config.py docker

# 重启Claude Desktop

此模式:

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

切换回生产模式:

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

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

测试

# 单元测试(快速,模拟Docker)
uv run pytest -v -m "not e2e"

# 端到端测试(需要运行Docker,根据需要拉取镜像)
uv run pytest -v -m e2e

# 带覆盖率
uv run pytest --cov=src --cov-report=term-missing -m "not e2e"

Git 工作流程

始终在功能分支上工作:

git checkout -b feature/your-feature
# 进行更改,提交,推送
git push -u origin feature/your-feature
# 通过GitHub创建PR

永远不要直接推送到main - 所有更改都需通过带有CI验证的PR。

许可

MIT - 版权所有 (c) 2025 domibies