FastMCP部署工具

FastMCP是一个多环境部署工具,支持本地、Docker和云环境的一键部署,适用于快速开发和测试。

  • by yuting1214
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 yuting1214/FastMCP_template

使用说明

FastMCP 模板

这是一个FastMCP模板项目,能够在本地、Docker和云环境中无缝运行。 一键部署到Railway,即刻快速启动!

🚀 快速部署到铁路系统(推荐)

在云端快速启动您的FastMCP服务器的最快方法:

一键部署

将远程客户端连接到铁路系统

部署完成后,可使用此客户端从任何地方进行连接:

简单方法(直接URL):

# my_client_remote.py
import asyncio
from fastmcp import Client

# Replace with your Railway URL
RAILWAY_URL = "https://your-railway-url.up.railway.app/mcp"
client = Client(RAILWAY_URL)

async def call_tool(name: str):
    async with client:
        result = await client.call_tool("greet", {"name": name})
        print(result)

if __name__ == "__main__":
    asyncio.run(call_tool("Ford"))

运行它:

uv run my_client_remote.py

使用环境变量(更灵活):

export RAILWAY_URL="https://your-railway-url.up.railway.app/mcp"
uv run my_client_remote.py

项目结构

  • my_server.py - 配备有(某种功能或组件的)FastMCP服务器 greet 工具(支持本地、Docker 和 Railway 环境)
  • my_client.py - 通过HTTP连接的本地/Docker客户端
  • my_client_remote.py - 铁路连接的远程客户端
  • Dockerfile - 所有云部署的容器配置

本地开发

非常适合在您的机器上进行测试和开发。

1号航站楼 - 启动服务器:

uv run fastmcp run my_server.py:mcp --transport http --port 8080

2号航站楼 - 运行客户端:

export PORT=8080
export HOST_URL="http://localhost"
uv run my_client.py

输出: Hello, Ford!

Docker 部署

使用Docker在本地部署,或在任何容器平台上部署。

构建Docker镜像:

docker build -t fastmcp-server .

运行Docker容器:

docker run -p 8080:8080 fastmcp-server

连接客户端:

export PORT=8080
export HOST_URL="http://localhost"
uv run my_client.py

环境变量

本地与Docker部署

  • HOST_URL - 服务器主机URL(默认: http://localhost)
  • PORT - 服务器端口(默认: 8080)

示例:

# Custom port
export PORT=3000
uv run fastmcp run my_server.py:mcp --transport http --port 3000
export PORT=3000
uv run my_client.py

# Custom host
export HOST_URL="http://192.168.1.100"
export PORT=8080
uv run my_client.py

铁路部署

  • RAILWAY_URL - 完整的铁路终端URL(例如。, https://your-url.up.railway.app/mcp)
  • 在Railway仪表板中配置额外变量 → 变量选项卡

建筑

为何采用这种方法?

这个模板使用了 HTTP传输 为了确保所有部署场景的一致性:

  1. 一致性 - 全球统一协议
  2. 简洁 - 任何场景仅需两个文件
  3. 可扩展性 - HTTP支持云部署
  4. 灵活性 - 容易根据环境修改URL/端口

部署选项

┌──────────────────────────────────────────────┐
│  🚀 RECOMMENDED: Railway Cloud                 │
│  • One-click deployment                        │
│  • Automatic HTTPS & CDN                       │
│  • Global access                               │
│  URL: https://your-url.up.railway.app/mcp     │
└──────────────────────────────────────────────┘

┌──────────────────────────────────────────────┐
│  🐳 Docker (Local or Any Cloud)               │
│  • Full control                                │
│  • Works anywhere with Docker                  │
│  URL: http://localhost:8080/mcp               │
└──────────────────────────────────────────────┘

┌──────────────────────────────────────────────┐
│  🏠 Local Development                         │
│  • Perfect for testing                        │
│  • Two terminal setup                         │
│  URL: http://localhost:8080/mcp               │
└──────────────────────────────────────────────┘

配置详情

服务器(my_server.py)

服务器使用了FastMCP框架,并且配置简单 greet 工具:

@mcp.tool
def greet(name: str) -> str:
    return f"Hello, {name}!"

当在本地运行时,使用:

uv run fastmcp run my_server.py:mcp --transport http --port 8080

当在Docker中运行时通过 Dockerfile:

CMD ["sh", "-c", "uv run fastmcp run my_server.py:mcp --transport http --host 0.0.0.0 --port $PORT"]

客户端(my_client.py)

本地/Docker 客户端通过环境变量进行连接:

PORT = os.getenv("PORT", "8080")
HOST_URL = os.getenv("HOST_URL", "http://localhost")
client = Client(f"{HOST_URL}:{PORT}/mcp")

远程客户端(my_client_remote.py)

铁路/远程客户端通过直接URL或环境变量进行连接:

RAILWAY_URL = os.getenv("RAILWAY_URL", "https://your-url.up.railway.app/mcp")
client = Client(RAILWAY_URL)

故障排除

铁路连接问题

服务器无响应:

  1. 在仪表板中检查铁路部署日志
  2. 验证URL: https://your-url.up.railway.app/mcp
  3. 使用curl进行测试: curl https://your-railway-url.up.railway.app/mcp

查找您的铁路网址:

  1. 前往铁路项目仪表盘
  2. 选择部署
  3. 前往“设置”
  4. 复制域名网址
  5. 附加 /mcp 对于终端点

铁路自定义域名:

  • 进入服务设置 → 自定义域名
  • 添加您的域名(例如。, mcp.example.com)

地方发展问题

连接失败:

  1. 检查服务器是否正在运行: ps aux | grep fastmcp
  2. 验证端口是否可访问: curl http://localhost:8080/mcp
  3. 确保设置了PORT和HOST_URL环境变量

端口已被使用:

# Use different port
export PORT=3000
uv run fastmcp run my_server.py:mcp --transport http --port 3000
export PORT=3000
uv run my_client.py

Docker 问题

  1. 检查容器是否正在运行: docker ps
  2. 查看日志: docker logs <container-id>
  3. 验证端口映射: docker run -p 8080:8080 ...
  4. 测试连接性: curl http://localhost:8080/mcp

摘要

这个FastMCP模板提供了多种部署选项:

  • ✅ 铁路 - 最快的云部署(推荐)
  • ✅ Docker - 完全控制,随处可用
  • ✅(对勾符号,表示正确、同意或完成) 本地 - 非常适合开发和测试
  • ✅ 相同的代码库 - 不同部署无需进行更改
  • ✅ 只需更改URL - 环境变量处理所有变化