Travliaq MCP服务器
Travliaq的模型上下文协议(MCP)服务器 -为旅行规划提供天气和图像生成工具。
 
📋 目录
🎯 关于
Travliaq MCP是一个MCP服务器,使用 fastMCP v2 其公开了以下工具:
- 🌤️ 检索天气数据(开放天气API)
- 🖼️ 为旅行生成图像(英雄、背景、滑块)
- 📚 访问文档知识库
服务器跟踪所有 FastMCP v2最佳实践 :
- ✅ 支持async/await完成
- ✅ 用于日志记录和可观察性的上下文MCP
- ✅ 结构化错误管理
- ✅ ASGI-准备生产
🛠️ 可用工具
天气
| 输出 | 描述 |
|---|---|
weather.by_coords | 通过GPS坐标预测和当前状况 |
weather.brief | 简短总结:当前温度+概述7天 |
weather.by_period | 规定时间段内的每日天气(yyyy-mm-dd) |
图像
| 输出 | 描述 |
|---|---|
images.hero | 为目的地生成1920x1080英雄图像 |
images.background | 为活动生成1920x1080背景 |
images.slider | 为特定位置生成800x600滑块图像 |
实用程序
| 输出 | 描述 |
|---|---|
health.ping | 检查服务器是否响应 |
debug.ls | 列出文件夹中的文件(调试) |
💻 安装区域设置
先决条件
- Python 3.12+
- 点
步骤
# 1. Cloner le repository
git clone
cd Travliaq-MCP
# 2. Créer un environnement virtuel
python -m venv .venv
# 3. Activer l'environnement
# Windows :
.venv\Scripts\activate
# Linux/Mac :
source .venv/bin/activate
# 4. Installer les dépendances
pip install -r requirements.txt
# 5. Configurer les variables d'environnement (optionnel)
# Créez un fichier .env à la racine
PORT=8005
# 6. Démarrer le serveur
python main_http.py服务器可访问: http://localhost:8005
🚀 生产部署
选项1:铁路/渲染/Fly.io(Recommandé)
服务器设计用于部署在支持HTTP/SSE的平台上:
铁路 :
# Le fichier Procfile ou commande de démarrage :
uvicorn app:app --host 0.0.0.0 --port $PORT配置要求 :
- 环境变量:
PORT(铁路自动) - 构建命令:
pip install -r requirements.txt - 启动命令:
uvicorn app:app --host 0.0.0.0 --port $PORT
选项2:Docker
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
EXPOSE 8005
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8005"]docker build -t travliaq-mcp .
docker run -p 8005:8005 travliaq-mcp选项3:AWS Lambda
⚠️ 备注 :Lambda需要SSE的API网关配置。对于本地SSE,首选铁路/渲染。
文件 lambda_handler.py 提供,但需要适当的API网关配置。
🌐 访问服务器
使用域名生产
部署后,可以通过域名访问MCP服务器。以下是不同的端点:
可用端点
| 端点 | 类型 | 描述 | URL示例 |
|---|---|---|---|
/mcp HTTP | MCP主接入点 | https://votre-domaine.com/mcp | |
/sse | SSE | 服务器发送事件(流式) | https://votre-domaine.com/sse |
/ | HTTP | 重定向服务器 /mcp | https://votre-domaine.com/ |
自定义域名配置
铁路 :
- 在铁路上部署您的应用程序
- 在设置→域中,添加自定义域
- 配置您的DNS:
- 类型: CNAME - 姓名: mcp (或您选择的子域) - 价值: .up.railway.app
结果 :您的服务器将可访问 https://mcp.votre-domaine.com/mcp
与Crewai的集成
要在Crewai代理中使用MCP服务器:
# Dans votre pipeline.py ou configuration d'agent
from crewai import Agent
from crewai.knowledge.source.mcp_knowledge_source import MCPKnowledgeSource
# URL de production avec votre domaine
MCP_SERVER_URL = "https://mcp.votre-domaine.com/mcp"
# Créer la source de connaissance MCP
mcp_source = MCPKnowledgeSource(
server_url=MCP_SERVER_URL,
timeout=30
)
# Utiliser dans un agent
agent = Agent(
role="Expert en météo",
goal="Fournir des prévisions précises",
knowledge_sources=[mcp_source]
)使用MCP检查器进行测试
MCP检查器允许您以图形方式测试所有工具:
# Avec domaine de production
npx @modelcontextprotocol/inspector https://mcp.votre-domaine.com/mcp
# Avec Railway (URL par défaut)
npx @modelcontextprotocol/inspector https://travliaq-mcp-production.up.railway.app/mcp这将打开一个本地web界面(http://localhost:5173)连接到远程服务器。
HTTP请求示例
# Ping le serveur
curl https://mcp.votre-domaine.com/mcp
# Appeler un outil (via MCP Inspector ou client MCP)
# Le protocole MCP utilise SSE pour les communications⚙️ 配置
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
PORT | 服务器侦听端口 | 8005 |
MCP_* | 变量取消配置MCP | - |
文件 .env (例如)
PORT=8005
# Ajoutez vos clés API si nécessaire
# OPENAI_API_KEY=xxx
# SUPABASE_URL=xxx✨ 实施的良好做法
此服务器跟踪所有 FastMCP v2最佳实践 :
1.上下文MCP
@mcp.tool(name="weather.by_coords")
async def weather_by_coords(..., ctx: Context = None):
if ctx:
await ctx.info("Fetching weather...")优点:
- 🔍 MCP客户端中可见的日志
- ⚠️ 可观察错误的管理
- 📊 报告降级
2.异步/等待
@mcp.tool(name="weather.brief")
async def weather_brief(...):
# Fonction async pour I/O non-bloquant优点:
- ⚡ 提高性能
- 🔄 FastMCP的本地支持
- 🚀 可伸缩性
3.错误管理
try:
result = await fetch_data()
return result
except Exception as e:
await ctx.error(f"Error: {e}")
raise优点:
- 🛡️ 增强鲁棒性
- 📝 描述性错误消息
- 🔧 易于调试
4.ASGI结构
# app.py
from src.mcp_server.server import mcp
app = mcp.http_app() # ASGI app pour uvicorn优点:
- 🏭 生产准备就绪
- 🎯 兼容玉米/玉米粒
- 📈 可扩展的
📚 资源
📝 许可证
麻省理工学院
______________________________________________________________________
为Travliaq开发 🌍✈️
