使用说明
LUMA MCP服务器
用于创建和管理LUMA事件的模型上下文协议(MCP)服务器。
特性
- 事件CRUD操作:创建、读取、更新、删除LUMA事件
快速开始
先决条件
- Python 3.8+
- 具有API访问权限的LUMA Plus订阅
- 旧API密钥
安装
使用pip安装LUMA MCP服务器:
pip install luma-mcp
或者从源代码安装:
git clone https://github.com/your-org/luma-mcp.git
cd luma-mcp
pip install .
对于具有额外依赖项的开发安装:
pip install luma-mcp[dev]
设置
- 设置环境变量:
cp .env.example .env
# Edit .env with your LUMA API key
- 运行服务器:
luma-mcp
或者直接用Python运行:
python -m src.main
服务器将于启动 http://localhost:8000.
配置
创建一个 .env 包含以下变量的文件:
# Required
LUMA_API_KEY=your_luma_api_key_here
# Optional (defaults provided)
LUMA_HOST=localhost
LUMA_PORT=8000
LUMA_DEBUG=false
API终点
事件
POST /events/-创建新事件GET /events/{event_id}-获取活动详细信息PUT /events/{event_id}-更新事件DELETE /events/{event_id}-删除事件GET /events/-列出事件
模板
GET /templates/-列出可用模板GET /templates/{template_type}-获取模板详细信息POST /templates/create-从模板创建事件
健康检查
GET /health-服务健康检查
事件模板
服务器包括用于常见事件类型的预定义模板:
- 聚会:社区聚会(2小时,无回复批准)
用法示例
创建事件
import requests
event_data = {
"name": "Tech Meetup",
"start_at": "2024-12-31T18:00:00Z",
"timezone": "America/New_York",
"end_at": "2024-12-31T20:00:00Z"
}
response = requests.post("http://localhost:8000/events/", json=event_data)
print(response.json())
从模板创建事件
template_data = {
"template_type": "workshop",
"name": "Python Workshop",
"start_at": "2024-12-31T10:00:00Z",
"timezone": "America/New_York",
"meeting_url": "https://zoom.us/j/123456"
}
response = requests.post("http://localhost:8000/templates/create", json=template_data)
print(response.json())
发展
先决条件
- Python 3.8+
- 诗歌 用于依赖关系管理
- 具有API访问权限的LUMA Plus订阅
设置开发环境
- 克隆存储库:
git clone <repository-url>
cd luma_mcp
- 安装依赖项:
poetry install
- 设置环境变量:
cp .env.example .env
# Edit .env with your LUMA API key
- 安装预提交挂钩:
poetry run pre-commit install
运行测试
# Run all tests
poetry run pytest tests/
# Run with coverage
poetry run pytest --cov=src --cov-report=html tests/
代码格式化和Linting
# Format code
poetry run black src/ tests/
# Sort imports
poetry run isort src/ tests/
# Lint code
poetry run flake8 src/ tests/
# Type checking
poetry run mypy src/
API 文档
跑步时,请访问 http://localhost:8000/docs 用于交互式API文档。
项目结构
src/
├── main.py # FastAPI application entry point
├── config.py # Configuration management
├── models.py # Pydantic models and schemas
├── luma_client.py # LUMA API client
├── routes/
│ ├── __init__.py
│ ├── events.py # Event CRUD endpoints
│ └── templates.py # Template management endpoints
└── utils/
├── __init__.py
└── rate_limiter.py # Rate limiting utilities
速率限制
服务器执行速率限制以遵守LUMA API限制:
- GET请求:每5分钟500个
- POST请求:每5分钟100个
- 在速率限制错误时进行指数回退的自动重试
错误处理
服务器提供详细的错误响应:
{
"error": "Rate limit exceeded",
"code": "429",
"details": {...}
}
建筑
系统概述
LUMA MCP服务器构建为基于FastAPI的REST API,为管理LUMA事件提供了一个干净的接口。它遵循分层架构,关注点明确分离:
- API层:FastAPI路由处理HTTP请求和响应
- 业务逻辑层:事件管理和模板处理
- 数据访问层:具有速率限制和错误处理功能的LUMA API客户端
- 基础设施层:配置、日志记录和实用程序
架构图
graph TB
A[Client Applications] --> B[FastAPI Server]
B --> C[Event Routes]
B --> D[Template Routes]
B --> E[Health Check]
C --> F[LumaClient]
D --> F
F --> G[Rate Limiter]
F --> H[HTTP Client]
G --> I[RateLimiter]
H --> J[httpx.AsyncClient]
K[Configuration] --> B
K --> F
K --> I
L[Models] --> C
L --> D
L --> F
M[Templates] --> D
subgraph "External Services"
N[LUMA API]
end
H --> N
J --> N
style B fill:#e1f5fe
style F fill:#f3e5f5
style I fill:#e8f5e8
组件描述
核心组件
- FastAPI应用程序 (
src/main.py):具有中间件、路由和异常处理的主要应用程序入口点 - LUMA客户端 (
src/luma_client.py):用于LUMA API与重试逻辑和错误处理交互的异步HTTP客户端 - 速率限制器 (
src/utils/rate_limiter.py):代币桶式利率限制,以遵守LUMA API限制 - 配置 (
src/config.py):使用Pydantic设置进行基于环境的配置管理
路由模块
- 事件路由器 (
src/routes/events.py):LUMA事件的CRUD操作 - 模板路由器 (
src/routes/templates.py):预定义事件模板和从模板创建
数据模型
- Pydantic模型 (
src/models.py):具有验证和类型安全的请求/响应模式
数据流
- 请求处理:FastAPI接收HTTP请求并使用Pydantic模型验证输入
- 速率限制:在继续之前,根据费率限制检查请求
- API调用:LumaClient通过重试逻辑向LUMA API发出认证请求
- 响应处理:API响应已处理并格式化为客户端返回
- 错误处理:使用适当的HTTP状态代码进行全面的错误处理
安全考虑
- API键存储在环境变量中(从不存储在代码中)
- 对所有LUMA API请求强制执行HTTPS
- 使用具有长度限制的Pydantic模型进行输入验证
- 生产中禁用CORS(应直接访问服务器)
- 错误消息不公开内部系统详细信息
- 限速防止滥用
- 请求超时可防止挂起连接
