事件管理服务器

LUMA MCP Server是一个用于创建和管理LUMA事件的服务,支持事件的CRUD操作和模板化创建。

  • by DataDrivenAngel
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 DataDrivenAngel/luma_mcp

使用说明

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]

设置

  1. 设置环境变量:
cp .env.example .env
# Edit .env with your LUMA API key
  1. 运行服务器:
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订阅

设置开发环境

  1. 克隆存储库:
git clone <repository-url>
cd luma_mcp
  1. 安装依赖项:
poetry install
  1. 设置环境变量:
cp .env.example .env
# Edit .env with your LUMA API key
  1. 安装预提交挂钩:
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):具有验证和类型安全的请求/响应模式

数据流

  1. 请求处理:FastAPI接收HTTP请求并使用Pydantic模型验证输入
  2. 速率限制:在继续之前,根据费率限制检查请求
  3. API调用:LumaClient通过重试逻辑向LUMA API发出认证请求
  4. 响应处理:API响应已处理并格式化为客户端返回
  5. 错误处理:使用适当的HTTP状态代码进行全面的错误处理

安全考虑

  • API键存储在环境变量中(从不存储在代码中)
  • 对所有LUMA API请求强制执行HTTPS
  • 使用具有长度限制的Pydantic模型进行输入验证
  • 生产中禁用CORS(应直接访问服务器)
  • 错误消息不公开内部系统详细信息
  • 限速防止滥用
  • 请求超时可防止挂起连接