文件系统服务

一个基于Docker容器化的MCP服务器,通过ngrok提供HTTPS访问的文件系统操作,支持API密钥认证。

  • by dylangroos
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 dylangroos/moby_mcp

使用说明

Moby MCP 服务器

一个基于Docker容器化的MCP(模型上下文协议)服务器,通过ngrok使用API密钥认证在HTTPS上暴露文件系统操作。该服务器以Docker的Moby项目命名,为MCP客户端提供了一个简单的文件系统接口。使用FastMCP构建。

特性/功能

  • 仅对.txt和.md文件进行文件系统访问(读取、写入、列出、删除)
  • 简单API密钥认证
  • 通过ngrok实现公共HTTPS访问
  • Docker 容器化
  • 使用uv实现快速依赖管理
  • 可流式传输的HTTP传输

快速入门

# 1. Generate an API key
make generate-key

# 2. Create .env file and add your API_KEY and NGROK_AUTHTOKEN
# (See Configuration section below)

# 3. Start the server
make start

# 4. View logs and get your public URL
make logs

# 5. Your server is live! Check http://localhost:4040 for the ngrok URL

建筑学

MCP Client --HTTPS--> ngrok --HTTP--> FastMCP Server ---> /data volume
                                (API key auth)

可用操作

  • read_file(path) - 读取文件内容(仅限.txt和.md文件)
  • write_file(path, content) - 创建/更新文件(仅限.txt和.md文件)
  • list_directory(path) - 列出目录内容(仅显示.txt和.md文件)
  • delete_file(path) - 删除文件(仅限.txt和.md文件)

所有操作都是相对于……的 ./data 目录。仅 .txt 并且 .md 出于安全考虑,允许的文件类型如下。

配置

所需的环境变量在 .env:

# Generate with: make generate-key
API_KEY=your-secret-api-key-here

# Get from: https://dashboard.ngrok.com/get-started/your-authtoken
NGROK_AUTHTOKEN=your-ngrok-authtoken-here

# Local directory to expose (mounted to /data in container)
DATA_DIRECTORY=./data

# Server port (default: 8080)
PORT=8080

快速设置:

# Generate a secure API key
make generate-key

# Edit .env and add your API_KEY and NGROK_AUTHTOKEN
# Then start the server
make start

来自MCP客户端的使用

使用以下配置设置您的MCP客户端:

{
  "name": "moby",
  "transport": {
    "type": "http",
    "url": "https://your-ngrok-url.ngrok-free.app/mcp"
  },
  "headers": {
    "Authorization": "Bearer your-api-key-here"
  }
}

重要提示: “Authorization”头部必须完全符合 Bearer <your-api-key> 没有额外的引号或冒号。

发展

在本地运行,无需 Docker:

make dev
# or
./dev.sh

这将会:

  • 如需安装,请安装 uv
  • 设置虚拟环境
  • 安装依赖项
  • 在 http://localhost:8080 上运行服务器

技术栈

  • Python 3.11及以上版本 - 现代异步Python
  • FastMCP - Python风格的MCP服务器框架
  • 紫外线 - 快速的Python包管理器(比pip快10到100倍)
  • MCP SDK(MCP软件开发工具包) - 官方模型上下文协议实现
  • Docker - 集装箱化
  • ngrok - 安全的公共隧道

Makefile 命令

所有服务器操作都通过简单的Makefile目标进行管理:

make help          # Show all available commands
make generate-key  # Generate a new random API key
make start         # Start the Docker containers
make stop          # Stop the Docker containers
make restart       # Restart the Docker containers
make logs          # View server logs (follow mode)
make shell         # Open a shell inside the container
make build         # Rebuild Docker images
make dev           # Run in local development mode (no Docker)
make clean         # Remove containers and volumes

有用链接:

# View ngrok dashboard (shows your public URL)
open http://localhost:4040

安全注意事项

  • 请保密您的API密钥 - 永远不要提交(代码/更改) .env to git(注:在中文中,“to git”通常不直接翻译,因为它不是一个完整的中文表达,但如果要解释其可能的含义,可以理解为“去获取”或“去获得”,具体取决于上下文。在这里,为了保持原句的形式,直接给出了英文原样。)
  • 文件类型限制 - 仅 .txt 和 .md 文件可以访问
  • 路径遍历保护 - 防止访问数据目录以外的区域
  • 生成强密钥 - 使用 make generate-key 用于加密安全的API密钥
  • ngrok URL(网址) - 免费层级提供随机URL,重启后会更改
  • 目录访问 - 只挂载你想要暴露的目录

故障排除

认证错误:

  • 验证.env文件中的API密钥是否正确
  • 确保标题格式正确: Authorization: Bearer <API_KEY>

ngrok 连接失败:

  • 验证NGROK_AUTHTOKEN是否正确
  • 检查ngrok仪表板以查看账户状态

文件访问错误:

  • 验证 DATA_DIRECTORY 是否存在且具有适当的权限
  • 检查Docker是否有访问该目录的权限

许可证

麻省理工学院许可证