AMC MCP服务器🎬
一个模型上下文协议(MCP)服务器,为AMC影院提供全面的电影预订体验。该服务器使对话式人工智能助手能够通过简单的API界面帮助用户发现电影、找到放映时间、预订座位和处理付款。
特性✨
- 电影探索:浏览当前播放的电影并获得个性化推荐
- 放映时间查询:按地点、日期和电影查找可用放映时间
- 座位选择:查看交互式座位图并查看可用性
- 预定管理:通过实时可用性检查预订座位
- 支付处理:处理带有确认收据的模拟付款交易
- 多地点支持:在多个AMC影院位置进行搜索
快速开始🚀
先决条件
- Python 3.8+
- Docker(可选,用于容器化部署)
安装
选项1:本地安装
- 克隆存储库:
git clone
cd amc-mcp- 安装依赖项:
pip install -r requirements.txt- 安装软件包:
pip install -e .- 运行服务器:
python -m amc_mcp.fastmcp_server选项2:Docker部署
- 使用Docker Compose构建和运行:
docker-compose up --build- 或者手动构建并运行:
docker build -t amc-mcp .
docker run -it amc-mcpMCP工具参考🛠️
1.get_now_showing
返回当前在给定位置播放的电影列表。
输入:
{
"location": "Boston, MA"
}输出:
{
"location": "Boston, MA",
"movies": [
{
"movie_id": "mv001",
"title": "Dune: Part Two",
"rating": "PG-13",
"duration": 166,
"genre": "Sci-Fi/Action",
"description": "Paul Atreides unites with Chani..."
}
]
}2.获得表彰
根据心情、类型或喜好推荐电影。
输入:
{
"genre": "action",
"mood": "exciting"
}输出:
{
"criteria": {"genre": "action", "mood": "exciting"},
"recommendations": [...]
}3.获取显示时间
获取特定电影和地点的可用放映时间。
输入:
{
"movie_id": "mv001",
"date": "2025-10-28",
"location": "Boston, MA"
}输出:
{
"movie": {"id": "mv001", "title": "Dune: Part Two"},
"date": "2025-10-28",
"location": "Boston, MA",
"showtimes": [
{
"showtime_id": "st001",
"theater_name": "AMC Boston Common 19",
"theater_address": "175 Tremont Street",
"time": "14:00",
"format": "IMAX",
"price": 18.50
}
]
}4.get_seat_map
显示特定放映时间的可用和预订座位。
输入:
{
"showtime_id": "st001"
}输出:
{
"showtime_id": "st001",
"movie": "Dune: Part Two",
"theater": "AMC Boston Common 19",
"date": "2025-10-28",
"time": "14:00",
"seat_map": [
{
"seat_number": "A5",
"row": "A",
"column": 5,
"is_available": true,
"price_tier": "Standard",
"price": 18.50
}
]
}5.预订
为用户保留选定的座位。
输入:
{
"showtime_id": "st001",
"seats": ["A5", "A6"],
"user_id": "user123"
}输出:
{
"booking_id": "booking-uuid",
"status": "pending",
"movie": "Dune: Part Two",
"theater": "AMC Boston Common 19",
"date": "2025-10-28",
"time": "14:00",
"seats": ["A5", "A6"],
"total_price": 37.00
}6.流程_付款
处理模拟支付交易。
输入:
{
"booking_id": "booking-uuid",
"payment_method": "card",
"amount": 37.00
}输出:
{
"payment_id": "payment-uuid",
"payment_status": "success",
"booking_id": "booking-uuid",
"receipt_url": "https://amc.com/receipts/payment-uuid",
"confirmation": {
"movie": "Dune: Part Two",
"theater": "AMC Boston Common 19",
"date": "2025-10-28",
"time": "14:00",
"seats": ["A5", "A6"],
"total_paid": 37.00
}
}对话流程示例💬
以下是典型的电影预订对话的工作原理:
- 用户:“今晚找一部我附近的动作片。”
- 服务器调用: get_now_showing + get_recommendations - 返回:带放映时间的动作电影列表
- 用户:“预订《沙丘:第二部分》晚上8点的两个座位。”
- 服务器调用: get_showtimes → get_seat_map → book_seats - 返回:座位选择和预订确认
- 用户:“用我的卡支付。”
- 服务器调用: process_payment - 退货:带有数字收据的付款确认
建筑🏗️
amc-mcp/
├── src/
│ └── amc_mcp/
│ ├── __init__.py
│ └── server.py # Main MCP server implementation
├── data/
│ ├── movies.json # Movie catalog
│ ├── theaters.json # Theater locations
│ ├── showtimes.json # Showtime schedules
│ └── seats.json # Seat maps by showtime
├── config/
│ └── nginx.conf # Web server configuration
├── Dockerfile # Container configuration
├── docker-compose.yml # Multi-service orchestration
├── requirements.txt # Python dependencies
├── pyproject.toml # Package configuration
└── README.md # This file数据模型📊
电影
{
"movie_id": str,
"title": str,
"rating": str, # PG, PG-13, R, etc.
"duration": int, # Minutes
"genre": str,
"description": str,
"poster_url": str
}剧院
{
"theater_id": str,
"name": str,
"address": str,
"city": str,
"state": str,
"zip_code": str
}上映时间
{
"showtime_id": str,
"movie_id": str,
"theater_id": str,
"date": str, # YYYY-MM-DD
"time": str, # HH:MM
"format": str, # Standard, IMAX, 3D, Dolby
"price": float
}发展👨💻
添加新电影
编辑 data/movies.json 要添加新电影,请执行以下操作:
{
"movie_id": "mv011",
"title": "New Movie Title",
"rating": "PG-13",
"duration": 120,
"genre": "Action",
"description": "Description of the movie...",
"poster_url": "https://example.com/poster.jpg"
}添加新影院
编辑 data/theaters.json:
{
"theater_id": "th011",
"name": "AMC New Location 15",
"address": "123 Main Street",
"city": "New City",
"state": "NY",
"zip_code": "12345"
}添加放映时间
编辑 data/showtimes.json 和 data/seats.json 添加新的放映时间和相应的座位图。
测试
手动测试
您可以使用MCP检查器或连接到任何兼容MCP的客户端来测试单个工具。
使用Claude Desktop进行测试
- 配置Claude Desktop以连接到您的MCP服务器
- 使用自然语言测试预订流程
- 示例:“给我找一部今晚在波士顿上映的科幻电影”
配置⚙️
环境变量
PYTHONPATH:设置为/app/src正确的模块分辨率PYTHONUNBUFFERED:设置为1用于实时记录MCP_LOG_LEVEL:设置日志记录级别(调试、信息、警告、错误)
Docker配置
服务器在轻量级Python 3.11容器中运行,其中包含:
- 非root用户安全
- 用于监测的健康检查
- 用于数据持久性的卷装载
- 网络隔离
安全考虑🔒
这是一个 模拟实现 用于演示目的。生产中:
- 支付处理:与真实支付网关(Stripe、PayPal)集成
- 认证:添加用户身份验证和授权
- 数据验证:实施全面的输入验证
- 速率限制:添加API速率限制
- 加密:使用HTTPS并加密敏感数据
- 数据库:用真实的数据库替换JSON文件
- 日志记录:实施结构化日志记录和监控
未来的增强功能🔮
- Real AMC API集成:连接到实际AMC影院API
- 用户账户:持久的用户资料和预订历史
- 团体订票:支持多个用户一起预订
- 忠诚度计划:AMC Stubs集成
- 手机票:生成手机输入二维码
- 座位推荐:人工智能支持的最佳座位建议
- 价格提醒:通知用户折扣和促销
- 社会特征:与朋友分享电影计划
- 无障碍:符合ADA标准的座椅选择
- 多语言:国际语言支持
贡献🤝
- 分叉存储库
- 创建要素分支:
git checkout -b feature/new-feature - 进行更改并添加测试
- 提交您的更改:
git commit -am 'Add new feature' - 推到分支:
git push origin feature/new-feature - 提交拉取请求
许可证📄
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。
支持💬
如有疑问、问题或功能请求:
- 在GitHub存储库中创建问题
- 查看文档以了解常见解决方案
- 查看示例对话流
______________________________________________________________________
电影预订愉快! 🍿🎬
