Token导航 LogoToken导航TokenDH.com
MCP travelling logo
数据服务stdio官方级别未说明来源级核验

MCP travelling

MCP Server

一个基于多因素分析的智能旅行推荐系统,提供实时天气、汇率和安全信息的个性化旅行建议。

工具数

8

提示词数

0

GitHub Stars

0

资源数

0
PythonClaude数据分析Claude DesktopClaudeCline

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Matheuscruztj

提供方

Matheuscruztj

最后核验

2026/5/17 20:21

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python3 -m venv venv

详细介绍

旅行顾问AI 🌍✈️

一个基于……构建的智能旅行推荐系统 清洁架构Python 3人工智能代理,和 HTTP可流式传输MCP协议

🎯 项目概述

旅行顾问AI是一个先进的旅行推荐系统,能够回答诸如以下复杂查询:

*“我想带着4000美元去一个温暖、安全的地方旅行,那里的当地货币比美元弱。”*

该系统通过HTTP流式端点集成多个公共API,利用智能代理进行上下文分析,并提供个性化的旅行建议 实时流媒体 基于气候、汇率、安全性和预算限制。

🚀 新功能 - HTTP 可流式传输协议

  • 实时流媒体用于实时进度更新的服务器发送事件(SSE)
  • HTTP REST API易于与Web应用程序和移动应用程序集成
  • 自动生成的文档交互式API文档位于 /docs
  • 健康监测内置健康检查和服务状态
  • CORS 支持已启用跨域请求以进行网页集成
  • 无需复杂的握手过程直接进行HTTP调用,无需MCP初始化

🏗️ 建筑与方法论

架构实现(或:架构实施)

这个项目紧接在……之后 清洁架构 具有明确关注点分离的原则:

src/
├── domain/           # Business entities and rules (innermost layer)
│   ├── entities/     # Core business objects
│   ├── repositories/ # Abstract interfaces
│   └── value_objects/# Domain value objects
├── application/      # Use cases and application services
│   ├── services/     # Application services
│   └── use_cases/    # Business use cases
├── infrastructure/   # External concerns (outermost layer)
│   ├── adapters/     # External service implementations
│   └── container.py  # Dependency injection
└── presentation/     # UI and controllers
    ├── controllers/  # Request handlers
    └── ui/          # User interfaces

应用SOLID原则

  • 单一职责每个类都有一个变化的原因
  • 开放/关闭对扩展开放,对修改关闭
  • 里氏替换原则接口可以被实现类替代
  • 接口隔离简洁、专注的界面
  • 依赖倒置依赖抽象概念,而非具体实例

设计模式

  • 仓库模式(或存储库模式)数据访问抽象
  • 依赖注入组件之间的松耦合
  • 策略模式多种推荐算法
  • 工厂模式对象创建抽象
  • 观察者模式事件驱动架构

🚀 功能

核心功能

  • 多因素分析气候、货币、安全和距离
  • 个性化推荐基于预算的智能建议
  • 实时数据实时天气、汇率及国家信息
  • ✅ 表示“正确”或“对”。 持久化存储用于推荐和历史记录的SQLite数据库
  • 丰富的命令行界面具有美观格式的交互式控制台
  • ✅(勾选标记,表示正确、确认或完成) HTTP/REST API可通过网络访问的终端点
  • ✅(对号,表示正确、同意或确认) MCP协议原生MCP服务器实现

技术特性

  • 综合测试单元测试、集成测试和端到端测试
  • 类型安全带有mypy支持的完整类型提示
  • 错误处理强大的错误处理和回退机制
  • ✅(对号,表示正确、确认或完成) 异步/等待(Async/Await)全程采用异步编程
  • 代码质量黑色格式化,flake8 代码检查
  • 文档全面的文档字符串和注释

🌐 API 集成

MCP服务器

  • 国家服务RestCountries API + 地理位置数据
  • 货币服务实时汇率API
  • 气候服务开放气象API用于天气数据

使用的外部API

  • RestCountries(可译为“国家信息API”或根据具体语境译为“国家数据接口”等,但“RestCountries”本身作为专有名词时,通常直接保留原名或译为“REST国家信息”)国家信息和地理数据
  • 汇率API货币汇率(免费版)
  • Open-Meteo(可译为“开放气象”或保持原名,根据语境选择是否翻译)天气和气象数据(无需API密钥)

📦 安装

先决条件

  • Python 3.11或更高版本
  • pip 包管理器

设置

# Clone the repository
git clone 
cd travelling_mcp

# Create virtual environment
python3 -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

🎮 使用方法

选项1:MCP服务器(原生协议)🚀

python3 mcp_travel_server.py
  • 协议通过标准I/O的原生MCP
  • 使用方法对于MCP兼容的客户端(如Claude Desktop、Cline等)
  • 特点/特性全面支持MCP协议,工具调用,资源管理

选项2:HTTP流式服务器(Web API)

python3 http_server.py --host 0.0.0.0 --port 8000
  • URL(统一资源定位符)http://localhost:8000
  • 文档http://localhost:8000/docs 翻译为中文是:“本地主机上的8000端口文档页面”。不过,通常我们不会直接翻译网址,而是根据网址内容来解释其含义。在这个例子中,网址指向的是运行在本地主机(即你自己的计算机)上的某个服务的文档页面,该服务监听8000端口。所以,也可以简化为“本地8000端口服务的文档页面”
  • 健康检查http://localhost:8000/health 翻译成中文是:“本地主机上的8000端口健康检查页面”。不过,通常我们不会直接翻译URL地址,而是解释其含义或用途。在这个例子中,可以理解为这是一个用于检查本地服务器(运行在localhost上,即本机)8000端口健康状态的网页或API接口
  • 流媒体播放http://localhost:8000/stream 翻译为中文是:“本地主机上的8000端口流(或实时流)服务”。不过,具体翻译可能会根据上下文有所调整,但基本上这个网址表示的是访问本地计算机上运行的一个在8000端口上的流媒体或实时数据传输服务
  • 特点/特性实时流媒体、自动生成文档、支持跨域资源共享(CORS)

选项3:交互式控制台

python3 main.py

选项4:传统HTTP服务器

python3 http_server.py --host 0.0.0.0 --port 8000

选项5:演示模式

python3 main.py --demo

选项6:运行测试

python3 main.py --test
# or
python3 run_tests.py

🌐 HTTP 可流式传输 API 端点

核心终端(或核心端点)

  • GET / - 服务器信息和可用的端点
  • GET /health - 健康检查和服务状态
  • GET /tools - 列出所有可用的工具/功能
  • POST /mcp - 直接MCP工具调用(JSON-RPC风格)
  • POST /stream - 使用服务器发送事件(Server-Sent Events)进行流式响应
  • GET /resources/{path} - 访问MCP资源(国家、地区)

示例用法

直接API调用

curl -X POST http://localhost:8000/mcp \
  -H "Content-Type: application/json" \
  -d '{"method": "search_countries", "params": {"query": "Brazil", "limit": 5}}'

流式API调用

curl -X POST http://localhost:8000/stream \
  -H "Content-Type: application/json" \
  -d '{"method": "get_travel_recommendations", "params": {"user_id": "user123", "budget": 4000}}' \
  --no-buffer

健康检查

curl http://localhost:8000/health

🔧 MCP 客户端配置

该服务器可与MCP兼容的客户端一起使用,如Claude Desktop、Cline或其他MCP客户端。以下是配置示例:

Claude 桌面配置

添加到您的Claude桌面 claude_desktop_config.json:

{
  "mcpServers": {
    "travel-server": {
      "command": "/usr/bin/python3",
      "args": [
        "/home/matheus/projetos_praticos/travelling_mcp/mcp_travel_server.py"
      ],
      "cwd": "/home/matheus/projetos_praticos/travelling_mcp"
    }
  }
}

MCP服务器使用stdio上的原生MCP协议,而非HTTP。这是与MCP客户端集成的正确方式。

Cline/VSCode MCP 配置

在您的Cline MCP设置中添加:

{
  "mcpServers": {
    "travel-server": {
      "command": "python3",
      "args": [
        "/path/to/your/travelling_mcp/mcp_travel_server.py"
      ],
      "cwd": "/path/to/your/travelling_mcp",
      "env": {
        "PYTHONPATH": "/path/to/your/travelling_mcp"
      }
    }
  }
}

直接执行方法

该项目为不同的使用场景提供了两种不同的MCP服务器实现:

1. 原生MCP服务器(stdio协议)

# Run native MCP server with stdio protocol for MCP clients
python3 mcp_travel_server.py

用例与MCP兼容客户端(如Claude Desktop等)的集成 协议通过标准I/O库的原生MCP(可能指某种特定协议或接口,如“管理控制协议”等,具体需根据上下文确定) 交流标准输入/输出流

2. 可流式传输的HTTP MCP服务器

# Run MCP server with HTTP transport for web integration
python3 mcp_travel_server_proper.py --port 8000 --host 0.0.0.0

用例网络应用、REST API客户端、基于HTTP的集成 协议通过可流式传输的HTTP进行MCP(可能是指某种数据传输或通信协议,具体需根据上下文确定) 交流HTTP POST/GET 请求 终点(或结局指标)

  • Root(在计算机领域通常指获得系统的最高管理权限)http://localhost:8000/ - 服务器信息
  • 健康http://localhost:8000/health - 健康检查
  • MCP(多种含义,具体根据上下文确定)http://localhost:8000/mcp - MCP协议端点

3. 传统HTTP服务器(已弃用)

# Run legacy HTTP server for web/REST API access
python3 http_server.py --host 0.0.0.0 --port 8000

这是传统的实现方式。对于新的集成,请使用选项2。

4. 使用主模块

# From project directory
python3 -m mcp_travel_server

🔧 服务器对比

特性原生MCP(stdio)可流式传输的HTTP MCP传统HTTP
(无对应中文)(无对应中文)(无对应中文)(无对应中文)**** 文件 mcp_travel_server.pymcp_travel_server_proper.pyhttp_server.py
**** 协议;规程
根据提供的信息,以下是原文内容的翻译: ****通过标准I/O的MCP通过HTTP的MCP自定义REST API
用例MCP 客户端Web 应用程序旧版系统集成
交流标准输入/输出HTTP 请求HTTP 请求
MCP 兼容✅ 完整✅ 完整❌ 否
网页集成❌ 否✅ 是✅ 是
文档-自动生成手动

|

实时

travelling_mcp/
├── main.py                      # Main application entry point
├── mcp_travel_server.py         # Native MCP Server (stdio protocol)
├── mcp_travel_server_proper.py  # Streamable HTTP MCP Server
├── http_server.py               # Legacy HTTP/REST API server
├── start_server.py              # Server launcher utility
├── demo.py                      # Demonstration script
├── test_apis.py                 # API testing utilities
├── run_tests.py                 # Test runner
├── requirements.txt             # Python dependencies
├── pytest.ini                  # Pytest configuration
├── .coveragerc                  # Coverage configuration
└── README.md                    # This file

| ✅ 是 | ✅ 是 | ❌ 有限 |

📁 项目结构mcp_servers/根级别文件

  • countries_server.py核心模块
  • currency_server.pyMCP 服务器(
  • climate_server.py)

国家数据和地理信息agent/汇率与购买力分析

  • travel_agent.py天气数据和气候信息

智能代理(database/)

  • travel_database.py基于情境的旅行推荐人工智能代理

数据库层services/

  • travel_service.pySQLite数据库操作与数据持久化

服务层(controllers/

  • travel_controller.py业务逻辑协调

控制器(ui/)

  • console_interface.py请求处理和响应格式化

用户界面(src/

  • 丰富的命令行界面,带有交互式菜单清洁架构(Clean Architecture)
  • )领域层
  • 核心业务逻辑和实体应用层
  • 用例和应用服务基础设施层

外部集成和适配器tests/表示层

  • 控制器和用户界面测试 (
  • )单元测试
  • 单个组件测试集成测试

组件交互测试data/端到端测试

  • cache/完整系统工作流程测试
  • queries/数据存储(

临时数据存储

  • 查询历史和索引🧪 测试
  • 测试覆盖率42项测试
  • 全面的测试套件单元测试
  • 数据库、服务、控制器、代理集成测试

端到端工作流,HTTP服务器,MCP服务器

# Run all tests
pytest

# Run with coverage
pytest --cov=. --cov-report=html

# Run specific test categories
pytest tests/unit/          # Unit tests only
pytest tests/integration/   # Integration tests only

嘲弄;嘲笑

为确保可靠性,对外部API调用进行了模拟

# Optional: Set custom API endpoints
export COUNTRIES_API_URL="https://restcountries.com/v3.1"
export EXCHANGE_API_URL="https://api.exchangerate-api.com/v4/latest"
export WEATHER_API_URL="https://api.open-meteo.com/v1"

运行测试

  • 🔧 配置环境变量travel_recommendations.db数据库配置
  • 默认SQLite数据库(
  • )位置

项目根目录

自动创建

python3 http_server.py --reload

数据库和表自动创建

python3 http_server.py --host 0.0.0.0 --port 8000

🚀 部署

发展

  • Dockerfile生产
  • docker-compose.ymlDocker 支持
  • docker-entrypoint.shDocker 配置文件已存在但目前未使用:

容器配置

多服务编排

  • GET /容器入口点
  • GET /health📊 API 端点
  • GET /toolsHTTP服务器端点
  • POST /mcpAPI信息和状态
  • POST /stream带服务状态的健康检查
  • GET /resources/{path}可用的MCP工具

MCP协议端点

  • get_travel_recommendations流式传输MCP响应
  • search_countriesMCP资源
  • get_weather_forecastMCP 工具
  • convert_currency获取个性化的旅行建议
  • analyze_purchasing_power搜索并筛选国家
  • get_user_travel_history地点的天气数据
  • get_popular_destinations货币兑换
  • get_server_statistics购买力分析

用户查询历史

热门目的地统计

系统统计

🛠️ MCP 服务器功能示例

以下示例展示了如何使用MCP服务器功能。这些功能可以通过MCP兼容客户端或通过HTTP API端点进行调用。主要功能

{
  "method": "search_countries",
  "params": {
    "query": "Brazil",
    "limit": 10
  }
}

1. 功能:搜索国家示例1

{
  "method": "search_countries",
  "params": {
    "query": "South America",
    "limit": 5
  }
}

搜索包含“巴西”的国家,限制为10个示例2

{
  "method": "search_countries",
  "params": {
    "query": "Americas",
    "limit": 3
  }
}

搜索包含“南美洲”(地区)的国家,限制为5个

示例3搜索“美洲”(地区)的国家,并限制为3个

{
  "method": "get_travel_recommendations",
  "params": {
    "user_id": "user123",
    "budget": 3000,
    "duration": 10,
    "preferences": {
      "climate": "tropical climate",
      "activities": ["beach", "culture activities"]
    },
    "origin_country": "Brazil"
  }
}

2. 功能:获取旅行建议

示例获取用户ID为“user123”、预算为3000、时长为10天、偏好为\[“热带气候”、“海滩”、“文化活动”\]且出发国家为“巴西”的旅行建议

{
  "method": "get_weather_forecast",
  "params": {
    "location": "Rio de Janeiro",
    "days": 5
  }
}

3. 功能:获取天气预报

示例获取里约热内卢(纬度-22.9068,经度-43.1729)未来5天的天气预报

{
  "method": "convert_currency",
  "params": {
    "from_currency": "BRL",
    "to_currency": "USD",
    "amount": 1000
  }
}

4. 功能:货币转换

示例将1000巴西雷亚尔兑换成美元

{
  "method": "analyze_purchasing_power",
  "params": {
    "origin_country": "Brazil",
    "destination_country": "Argentina",
    "budget_usd": 2000
  }
}

5. 功能:分析购买力

示例

分析阿根廷的购买力,预算为2000美元辅助功能

{
  "method": "get_popular_destinations",
  "params": {
    "limit": 5
  }
}

6. 功能:获取热门目的地

示例获取最多5个热门目的地

{
  "method": "get_user_travel_history",
  "params": {
    "user_id": "user123"
  }
}

7. 功能:获取用户旅行历史

示例获取用户ID为“user123”的用户旅行历史记录

{
  "method": "get_server_statistics",
  "params": {}
}

8. 功能:获取服务器统计信息

示例 /mcp 获取服务器统计信息(无需参数)

curl -X POST http://localhost:8000/mcp \
  -H "Content-Type: application/json" \
  -d '{"method": "search_countries", "params": {"query": "Brazil", "limit": 5}}'

通过HTTP API使用 /stream 你可以通过HTTP POST请求来调用这些函数至

curl -X POST http://localhost:8000/stream \
  -H "Content-Type: application/json" \
  -d '{"method": "get_travel_recommendations", "params": {"user_id": "user123", "budget": 3000}}' \
  --no-buffer

端点:

对于流式响应,请使用

  • 终端节点:🤝 贡献
  • 代码质量标准格式化
  • 黑代码格式化工具代码检查(或代码规范检查)
  • 用于代码质量的 Flake8类型检查
  • 使用 mypy 确保类型安全测试

具有高覆盖率要求的Pytest

  1. 文档
  2. 全面的文档字符串
  3. 开发工作流程
  4. 为仓库创建分支(或“克隆仓库”)
  5. 创建一个特性分支
  6. 为新功能编写测试

确保所有测试通过

使用黑色格式代码

  • 提交拉取请求📈 性能
  • 优化特性异步/等待(Async/Await)
  • 非阻塞I/O操作连接池
  • 高效使用HTTP客户端缓存
  • 外部API的响应缓存数据库索引

优化查询性能

  • 内存管理高效的数据结构
  • 监测健康检查
  • 服务可用性监控错误追踪
  • 全面的错误日志记录性能指标

响应时间追踪

资源使用情况

  • 内存和CPU监控🔒 安全
  • 安全措施输入验证
  • 用于数据验证的 Pydantic 模型防止SQL注入
  • 参数化查询CORS 配置
  • 受控的跨域访问错误净化(或错误处理/错误修正)

安全地暴露错误信息

依赖安全性

  • DEMO_RESULTS.md定期的安全更新
  • DADOS_TESTE_APIS.md📚 文档
  • deploy_guide.md额外资源

演示结果及示例

  • API测试数据和示例部署指南和最佳实践
  • 代码文档文档字符串(Docstrings)
  • 全面的功能和类文档类型提示
  • 完整的类型注解覆盖率评论

内联代码解释

架构图

  • 视觉系统概述🎉 致谢
  • 所用技术Python 3
  • 核心编程语言FastAPI
  • 现代网络框架FastMCP
  • MCP协议实现SQLite
  • 嵌入式数据库丰富;富有
  • 美观的终端格式化Pytest
  • 测试框架Pydantic

数据验证

  • HTTPX异步HTTP客户端
  • 设计原则清洁架构
  • 罗伯特·C·马丁的架构模式SOLID原则
  • 面向对象设计原则领域驱动设计

______________________________________________________________________

业务逻辑聚焦

*测试驱动开发*

目录标签

目录标签

PythonClaude数据分析旅行推荐本地部署实时数据分析个性化建议多因素分析AI旅行助手

支持客户端

Claude DesktopClaudeCline

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

8

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP