Airbnb记忆存储客户端

一个结合Airbnb搜索功能和OpenAI向量存储持久化记忆的多服务器模型上下文协议(MCP)客户端。

  • by CyprianFusi
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 CyprianFusi/mcp-client-agent-airbnb

使用说明

MCP客户代理-Airbnb记忆

通过 BINATI A分析


一个多服务器模型上下文协议(MCP)客户端,使用OpenAI的向量存储将Airbnb搜索功能与持久内存存储集成在一起。

概述

本项目演示了如何构建一个结合多个MCP服务器的智能代理:

  • Airbnb服务器:搜索和检索Airbnb房源
  • 内存服务器:使用OpenAI矢量存储存储和搜索对话记忆

该代理可以记住过去的交互,并将该上下文用于未来的对话,同时还提供实时Airbnb搜索功能。

截图

特性

  • 多服务器MCP客户端架构
  • 使用OpenAI矢量存储的持久内存存储
  • Airbnb房源搜索集成
  • 交互式CLI聊天界面
  • 流线型web UI,便于交互
  • 服务器之间的自动工具路由

建筑

┌─────────────────┐
│   Client App    │
│  (client.py)    │
└────────┬────────┘
         │
         ├──────────────┬──────────────┐
         │              │              │
    ┌────▼─────┐   ┌───▼────┐   ┌─────▼──────┐
    │  MCP     │   │  MCP   │   │   OpenAI   │
    │ Airbnb   │   │ Memory │   │    API     │
    │ Server   │   │ Server │   │            │
    └──────────┘   └────────┘   └────────────┘

先决条件

  • Python 3.13或更高版本
  • Node.js(通过npx用于Airbnb MCP服务器)
  • OpenAI API密钥
  • uv 包管理器

安装

  1. 克隆存储库:
git clone https://github.com/CyprianFusi/mcp-client-agent-airbnb.git
cd mcp-client-agent-airbnb
  1. 安装依赖项:
uv sync
  1. 创建一个 .env 使用您的OpenAI API密钥文件:
OPENAI_API_KEY=your_openai_api_key_here

重要:永远不要承诺你的 .env 文件到版本控制!

用法

CLI接口

运行交互式命令行聊天:

uv run client.py

命令:

  • 自然地键入您的问题
  • 类型 exit 或 quit 结束会话

交互示例:

You: Find me 2-bedroom apartments in Paris under $200/night
AI: [Searches Airbnb and returns results]

You: Remember that I prefer places with good wifi
AI: [Saves this preference to memory]

You: What do you remember about my preferences?
AI: [Searches memory and recalls wifi preference]

流线型Web UI

使用Airbnb和Memory服务器启动web界面:

streamlit run chat_ui.py

然后打开浏览器 http://localhost:8501

Streamlit UI现在支持两种服务器:

  • 搜索Airbnb房源
  • 将首选项和信息保存到内存中
  • 搜索您保存的记忆

独立内存服务器

只运行内存服务器:

uv run server.py

服务器将于启动 http://127.0.0.1:8000

项目结构

.
├── client.py           # Multi-server MCP client with CLI
├── server.py           # Memory storage MCP server
├── chat_ui.py          # Streamlit web interface
├── main.py             # Simple entry point
├── pyproject.toml      # Project dependencies
├── .env                # Environment variables (create this)
├── .gitignore          # Git ignore rules
└── README.md           # This file

关键组件

客户端.py

主MCP客户端:

  • 连接到Airbnb和Memory服务器
  • 将工具调用路由到相应的服务器
  • 使用OpenAI管理对话流

服务器.py

提供内存工具的MCP服务器:

  • save_memory(memory: str):将文本存储在矢量存储中
  • search_memory(query: str):搜索存储的记忆

使用具有file_search功能的OpenAI助理API。

chat_ui.py

基于Streamlit的web界面,可连接到Airbnb和Memory服务器,提供现代聊天UI,包括:

  • 带有聊天气泡的实时消息显示
  • 自动清除输入字段
  • 支持保存和检索记忆
  • Airbnb列表搜索功能

可用工具

来自Airbnb服务器

  • 按地点、日期、价格范围搜索房源
  • 获取房源详情
  • 按设施过滤

来自内存服务器

  • save_memory:存储信息以备将来参考
  • search_memory:检索相关的过去对话

配置

环境变量

  • OPENAI_API_KEY:您的OpenAI API密钥(必需)
  • MCP_HOST:内存服务器主机(默认值:127.0.0.1)
  • MCP_PORT:内存服务器端口(默认值:8000)

服务器参数

编辑 client.py 修改:

  • Airbnb服务器参数(例如。, --ignore-robots-txt)
  • 内存服务器路径
  • OpenAI模型选择

故障排除

windows用户

该代码包括用于子流程支持的Windows特定事件循环处理。如果你遇到问题,请确保你使用的是Python 3.13+。

API错误

  • 验证您的 OPENAI_API_KEY 设置正确
  • 检查您是否有足够的OpenAI API信用
  • 确保矢量存储名称与现有存储不冲突

连接问题

  • 确保为Airbnb服务器安装了Node.js
  • 验证 uv 在您的PATH中可用
  • 检查端口8000是否尚未使用

发展

运行测试

python -m py_compile *.py

添加新的MCP服务器

要添加更多服务器,请执行以下操作:

  1. 定义新 StdioServerParameters 在 client.py
  2. 添加到异步上下文管理器中 run() 函数
  3. 整合来自所有服务器的工具
  4. 更新刀具布线逻辑

安全说明

  • 永不承诺 .env 包含API密钥的文件
  • 这 .gitignore 配置为排除敏感文件
  • 如果意外暴露,则旋转API密钥
  • 使用特定于环境的API密钥进行开发与生产

许可证

该项目是开源的,可在 MIT许可证.

该项目作为MCP大师班的一部分,用于教育目的。

贡献

  1. 复刻仓库
  2. 创建要素分支
  3. 进行更改
  4. 提交拉取请求

资源

支持

对于问题和疑问:

  1. 检查现有的GitHub问题
  2. 查阅MCP文档
  3. 打开一个带有详细描述的新问题

内置于❤️ 使用模型上下文协议