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 没有额外的引号或冒号。
发展
在本地运行,无需 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密钥 - 永远不要提交(代码/更改)
.envto git(注:在中文中,“to git”通常不直接翻译,因为它不是一个完整的中文表达,但如果要解释其可能的含义,可以理解为“去获取”或“去获得”,具体取决于上下文。在这里,为了保持原句的形式,直接给出了英文原样。) - 文件类型限制 - 仅
.txt和.md文件可以访问 - 路径遍历保护 - 防止访问数据目录以外的区域
- 生成强密钥 - 使用
make generate-key用于加密安全的API密钥 - ngrok URL(网址) - 免费层级提供随机URL,重启后会更改
- 目录访问 - 只挂载你想要暴露的目录
故障排除
认证错误:
- 验证.env文件中的API密钥是否正确
- 确保标题格式正确:
Authorization: Bearer
ngrok 连接失败:
- 验证NGROK_AUTHTOKEN是否正确
- 检查ngrok仪表板以查看账户状态
文件访问错误:
- 验证 DATA_DIRECTORY 是否存在且具有适当的权限
- 检查Docker是否有访问该目录的权限
许可证
麻省理工学院许可证
