MCP开发环境

一个基于Docker的全面开发环境,用于构建和测试模型上下文协议(MCP)服务器。

  • by donbungle
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 donbungle/mcp-server

使用说明

MCP开发环境

一个全面的基于Docker的开发环境,用于构建和测试模型上下文协议(MCP)服务器。

🎯 包含什么

核心服务:

  • Python MCP服务器 (端口8000)-带调试的全功能实现
  • Node.js MCP服务器 (端口3000)-替代实施
  • PostgreSQL (端口5432)-包含示例数据的数据库
  • 雷迪斯 (端口6379)-缓存层
  • Nginx文件服务器 (端口8080)-使用CORS提供静态文件服务

开发特点:

  • Python和Node.js的热重载
  • 内置调试器支持(Python:5678,Node.js:9229)
  • 全面的日志记录和监控
  • 预配置的测试框架
  • 示例数据和模式
  • 代码质量工具(linting、格式化、类型检查)

🚀 快速开始

  1. 设置环境:
# Make the setup script executable and run it
chmod +x setup.sh
./setup.sh
  1. 确认一切正常:
# Check service status
docker-compose ps

# Test endpoints
curl http://localhost:8080/health  # File server
curl http://localhost:8000/health  # Python MCP server  
curl http://localhost:3000/health  # Node.js MCP server
  1. 开始开发:
# Edit the Python MCP server
vim src/main.py

# View logs in real-time
docker-compose logs -f mcp-server

# Run tests
docker-compose exec mcp-server python -m pytest

🔧 MCP服务器的主要功能

可用工具:

  • write_file -将内容写入文件
  • execute_sql -运行数据库查询
  • cache_set/get -Redis缓存操作
  • list_directory -浏览文件系统
  • analyze_data -CSV文件的基础数据分析

资源:

  • 文件系统访问权限 /data 目录
  • 数据库表模式和示例数据
  • 配置文件和文档

示例用法:

# The Python server provides tools for:
await mcp_server.call_tool("write_file", {
    "path": "analysis.txt", 
    "content": "Sample analysis results"
})

await mcp_server.call_tool("execute_sql", {
    "query": "SELECT * FROM users WHERE department = $1",
    "parameters": ["Engineering"] 
})

🐛 调试设置

Python(VSCode):

{
  "name": "Python: Remote Attach",
  "type": "python", 
  "request": "attach",
  "connect": {"host": "localhost", "port": 5678},
  "pathMappings": [
    {"localRoot": "${workspaceFolder}/src", "remoteRoot": "/app/src"}
  ]
}

Node.js(Chrome DevTools):

  • 打开 chrome://inspect
  • 连接到 localhost:9229

📊 监控和日志

# View all service logs
docker-compose logs -f

# Monitor specific service
docker-compose logs -f mcp-server

# Check resource usage
docker stats

# Database operations
docker-compose exec postgres psql -U mcp_user -d mcp_dev

# Redis operations  
docker-compose exec redis redis-cli

🛠️ 开发工作流程

环境支持两种传输方式:

  • 标准输入输出 (默认)-用于直接MCP客户端集成
  • HTTP/WebSocket -用于基于web的开发和测试

您可以轻松地在实现之间切换,或者同时运行两者进行比较和测试。

🗂️ 项目结构

mcp/
├── src/                    # Python MCP server source
│   └── main.py            # Main Python server implementation
├── src-node/              # Node.js MCP server source
│   └── server.js          # Main Node.js server implementation
├── db/                    # Database initialization scripts
│   ├── init.sql           # Schema and tables
│   └── sample_data.sql    # Sample data
├── data/                  # Data files (mounted to containers)
├── static/                # Static files served by Nginx
├── tests/                 # Test suites
├── .vscode/               # VSCode debug configuration
├── docker-compose.yml     # Service definitions
├── python.Dockerfile      # Python server container
├── node.Dockerfile        # Node.js server container
├── nginx.conf             # Nginx configuration
├── setup.sh               # Setup and management script
└── README.md              # This file

🔧 管理命令

这 setup.sh 脚本提供了方便的管理:

./setup.sh setup     # Initial setup and start (default)
./setup.sh start     # Start services
./setup.sh stop      # Stop services  
./setup.sh restart   # Restart services
./setup.sh status    # Show service status
./setup.sh logs      # Show service logs
./setup.sh clean     # Remove everything (with confirmation)
./setup.sh help      # Show help

🧪 测试

Python和Node.js服务器都包含全面的测试套件:

# Run Python tests
docker-compose exec mcp-server python -m pytest tests/ -v

# Run Node.js tests  
docker-compose exec mcp-server-node npm test

# Run tests with coverage
docker-compose exec mcp-server python -m pytest tests/ --cov=src

🔍 数据库模式

PostgreSQL数据库包括几个示例表:

  • users -具有部门和角色的用户帐户
  • products -产品目录,包括类别和库存
  • orders -带有状态跟踪的订单历史记录
  • order_items -订单行项目
  • analytics_events -事件跟踪数据
  • app_config -应用程序配置

📡 API终点

文件服务器(端口8080):

  • GET /health -健康检查
  • GET /data/ -浏览数据目录
  • GET /static/ -浏览静态文件
  • GET /api/docs -API文件

Python MCP服务器(端口8000):

  • GET /health -健康检查
  • 通过stdio传输的MCP协议

Node.js MCP服务器(端口3000):

  • GET /health -健康检查
  • 通过stdio传输的MCP协议

🚨 故障排除

服务未启动:

  1. 检查Docker是否正在运行: docker info
  2. 检查端口冲突: netstat -tulpn | grep :8000
  3. 查看启动日志: docker-compose logs

数据库连接问题:

# Test database connectivity
docker-compose exec postgres pg_isready -U mcp_user

# Connect to database manually
docker-compose exec postgres psql -U mcp_user -d mcp_dev

Redis连接问题:

# Test Redis connectivity
docker-compose exec redis redis-cli ping

调试不起作用:

  • 确保调试端口(5678、9229)未被使用
  • 检查防火墙设置
  • 验证VSCode调试配置是否与容器设置匹配

🤝 贡献

  1. 分叉存储库
  2. 改变你的环境
  3. 使用提供的测试套件进行彻底测试
  4. 提交拉取请求

📄 许可证

本项目按原样提供,用于开发和测试目的。


此环境为您提供了一个完整的MCP开发平台,其中包含真实的数据库、缓存、文件系统和调试工具,非常适合构建和测试生产就绪的MCP服务器!