使用说明
MCP服务器工具
一个简单的模型上下文协议(MCP)服务器,提供日期时间和计算器工具。使用FastMCP构建,便于开发和部署。
🏗️ 建筑
该项目遵循分层架构模式:
mcp_server_tools/
├── main.py # Entry point (Presentation Layer)
├── src/ # Implementation folder
│ ├── tools/ # MCP interface layer
│ │ ├── datetime_tool.py # DateTime MCP tools
│ │ └── calculator_tool.py # Calculator MCP tools
│ ├── services/ # Business logic layer
│ │ ├── datetime_service.py # DateTime business logic
│ │ └── calculator_service.py # Calculator business logic
│ ├── server_manager.py # Server execution management
│ └── logger_config.py # Centralized logging
├── Dockerfile # Multi-stage Docker build
├── docker-compose.yml # Development and production services
├── pyproject.toml # Project configuration
└── .env # Environment variables (create from env.example)
层职责:
- 表示层 (
main.py):MCP服务器设置和工具注册 - 工具层 (
src/tools/):处理协议通信的MCP接口功能 - 服务层 (
src/services/):纯业务逻辑,独立于MCP - 服务器管理 (
src/server_manager.py):开发和生产服务器执行
🚀 快速开始
先决条件
- Python 3.12+
- 紫外线 包管理器
- Docker和Docker Compose(用于容器化部署)
地方发展
-
克隆和设置:
git clone <repository-url> cd mcp_server_tools cp env.example .env uv sync --dev -
开发模式(stdio):
uv run mcp dev main.py这将启动MCP检查器进行目视测试。
-
生产模式(SSE):
uv run python main.py这将启动服务器,并打开SSE传输
0.0.0.0:8050.
Docker部署
-
发展:
docker-compose --profile dev up -
生产:
docker-compose --profile prod up
🛠️ 可用工具
DateTime工具
-
datetime_tool(format: str = "iso"):获取当前日期时间format="iso":ISO 8601格式(例如,“2025-01-08T22:30:00.123456”)format="formatted":人类可读格式(例如,“2025-01-08 22:30:00”)
-
timestamp_tool():以字符串形式获取当前时间戳
计算器工具
-
calculator_tool(expression: str):计算数学表达式- 示例:
"2 + 3","10 * 5","100 / 4","2 ** 8"
- 示例:
-
operation_tool(a: float, b: float, operation: str):对两个数字执行操作- 操作:
+,-,*,/,**,%
- 操作:
-
operations_list_tool():列出所有支持的数学运算
⚙️ 配置
环境变量(在中配置 .env 文件):
HOST=0.0.0.0 # Server host
PORT=8050 # Server port
DEV_MODE=false # Development mode
LOG_LEVEL=INFO # Logging level
SERVER_NAME=mcp-server-tools # Server name
🔧 发展
代码质量
# Format code
uv run ruff format .
# Lint code
uv run ruff check .
# Run tests
uv run pytest
项目结构效益
- 关注点分离:每一层都有特定的职责
- 可测试性:业务逻辑是孤立的,易于测试
- 可维护性:清晰的组织使代码更容易理解
- 可重复使用性:服务可以在MCP上下文之外使用
- 可扩展性:易于添加新工具和服务
添加新工具
- 创建服务 在……里面
src/services/(商业逻辑) - 创建工具 在……里面
src/tools/(MCP接口) - 注册工具 在……里面
main.py随着@mcp.tool()装饰器
🐳 码头工人
多阶段构建
- 建设者阶段:安装依赖项
- 生产阶段:针对生产进行了优化
- 开发阶段:包括开发工具
Docker编写服务
mcp-server-dev:批量安装开发mcp-server-prod:优化图像的生产
📝 日志记录
具有可配置级别的结构化日志记录:
- 信息:应用程序启动、工具执行
- 调试:详细操作信息
- 错误:错误条件和异常
为了与Docker兼容,日志被格式化并输出到stdout。
🔒 安全
- 使用受限全局变量进行安全表达式评估
- 所有工具的输入验证
- Docker容器中的非root用户
- 环境变量配置
