MCP服务器工具

一个简单的模型上下文协议(MCP)服务器,提供日期时间和计算器工具,使用FastMCP构建,便于开发和部署。

  • by SAN-AITech
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 san-aitech/mcp-server-tools

使用说明

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(用于容器化部署)

地方发展

  1. 克隆和设置:

    git clone <repository-url>
    cd mcp_server_tools
    cp env.example .env
    uv sync --dev
    
  2. 开发模式(stdio):

    uv run mcp dev main.py
    

    这将启动MCP检查器进行目视测试。

  3. 生产模式(SSE):

    uv run python main.py
    

    这将启动服务器,并打开SSE传输 0.0.0.0:8050.

Docker部署

  1. 发展:

    docker-compose --profile dev up
    
  2. 生产:

    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上下文之外使用
  • 可扩展性:易于添加新工具和服务

添加新工具

  1. 创建服务 在……里面 src/services/ (商业逻辑)
  2. 创建工具 在……里面 src/tools/ (MCP接口)
  3. 注册工具 在……里面 main.py 随着 @mcp.tool() 装饰器

🐳 码头工人

多阶段构建

  • 建设者阶段:安装依赖项
  • 生产阶段:针对生产进行了优化
  • 开发阶段:包括开发工具

Docker编写服务

  • mcp-server-dev:批量安装开发
  • mcp-server-prod:优化图像的生产

📝 日志记录

具有可配置级别的结构化日志记录:

  • 信息:应用程序启动、工具执行
  • 调试:详细操作信息
  • 错误:错误条件和异常

为了与Docker兼容,日志被格式化并输出到stdout。

🔒 安全

  • 使用受限全局变量进行安全表达式评估
  • 所有工具的输入验证
  • Docker容器中的非root用户
  • 环境变量配置

📚 资源