展会管理服务器

基于FastMCP框架构建的展会管理服务器,提供展会事件、会议日程和展位的管理功能,支持个性化参观计划生成和HTML渲染。

  • by Akenaiai
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 AKenH/eventops-mcp-server

使用说明

EventOps MCP Server

这是一个基于 FastMCP 框架构建的 MCP 服务器项目。

项目结构

eventops_mcp/
├── data/
│   ├── booths.json
│   ├── events.json
│   └── sessions.json
├── prompt/
│   └── event_plan_prompt.py
├── src/
│   ├── data_loader.py
│   └── server.py
├── tests/
│   └── test_data_loader.py
├── utils/
│   └── llm.py
├── .env                 # 环境变量配置文件
├── README.md            # 项目说明文件
├── requirements.txt     # 项目依赖文件
└── run_server.py        # 项目启动脚本

快速开始

安装依赖

使用 pip 安装依赖:

pip install -r requirements.txt

或者使用 Poetry:

poetry install

配置环境变量

复制 .env 文件并根据需要修改配置:

cp .env .env.local

运行服务器

有多种方式运行服务器:

  1. 使用启动脚本:
python run_server.py
  1. 直接运行服务器文件:
cd src
python server.py

默认情况下,服务器将在 http://127.0.0.1:8000 上运行。

可用工具

ping

健康检查工具,用于确认服务器是否正常运行。

  • 功能: 返回 "pong" 字符串
  • 用途: 确认服务器状态

get_events

获取所有展会事件列表。

  • 功能: 返回所有展会事件的列表

get_sessions

获取所有会议日程列表。

  • 功能: 返回所有会议日程的列表

get_booths

获取所有展位列表。

  • 功能: 返回所有展位的列表

get_event_overview

根据事件ID返回一个Event对象。

  • 参数:
    • event_id (str): 事件ID
  • 功能: 返回指定ID的展会事件详情

list_sessions

按条件过滤返回sessions列表。

  • 参数:
    • event_id (str): 事件ID
    • day (Optional[str]): 日期过滤器,格式为"YYYY-MM-DD"
    • tag (Optional[str]): 标签过滤器
  • 功能: 返回符合过滤条件的会议日程列表

list_booths

按条件过滤返回booths列表。

  • 参数:
    • event_id (str): 事件ID
    • hall (Optional[str]): 展馆过滤器
    • tag (Optional[str]): 标签过滤器
    • keyword (Optional[str]): 关键字过滤器(匹配展位名称)
  • 功能: 返回符合过滤条件的展位列表

event_visit_plan

根据用户兴趣和时间安排生成个性化的展会参观计划。

  • 参数:
    • event_id (str): 展会ID
    • available_time (Dict): 可用时间,包含date(日期), start(开始时间), end(结束时间)
    • interests (List[str]): 感兴趣的领域标签
    • preferences (Dict): 偏好设置
  • 功能: 返回个性化的展会参观计划

render_event_plan_html

将参观计划渲染为HTML页面,便于在前端展示。

  • 参数:
    • plan (Dict): 由event_visit_plan工具生成的参观计划字典
  • 功能: 返回完整的HTML页面字符串,包含行程安排和注意事项

集成外部服务

本项目设计为模块化结构,允许用户在实际使用时连接自己的外部服务。

LLM集成

项目默认使用占位符实现,您可以根据需要配置以下LLM提供商:

1. 使用OpenAI

在 .env 文件中配置:

LLM_PROVIDER=openai
OPENAI_API_KEY=your_openai_api_key
OPENAI_MODEL=gpt-3.5-turbo

安装所需依赖:

pip install openai

2. 使用通义千问

在 .env 文件中配置:

LLM_PROVIDER=tongyi
DASHSCOPE_API_KEY=your_dashscope_api_key

安装所需依赖:

pip install dashscope

3. 使用占位符(默认)

在 .env 文件中配置:

LLM_PROVIDER=placeholder

占位符实现将返回模拟的响应,适用于测试和演示。

其他服务集成

您可以按照类似的方式集成其他服务:

  1. 在 utils/ 目录中创建相应的工具模块
  2. 在 .env 文件中添加配置项
  3. 修改相关函数以支持新服务

开发

运行测试

python -m unittest tests/test_data_loader.py

添加新工具

要添加新工具,只需在 server.py 中使用 @mcp.tool 装饰器定义新函数即可。

扩展LLM支持

  1. 在 utils/llm.py 中添加新的服务实现函数
  2. 在 call_llm 和 call_llm_structured 函数中添加相应的条件分支
  3. 更新 .env 文件中的配置说明