seatgeek-mcp 是一个全面的 MCP 服务器,以 TypeScript 库的形式,提供 SeatGeek 工具的注册表,涵盖活动、表演者、场馆、区域信息和推荐等内容。
npm install seatgeek-mcp
作为独立服务器使用时,有以下两种启动方式:
# 标准输入输出传输(默认)
npm start
# HTTP 流式传输
MCP_HTTP=1 PORT=8080 npm start
find_events
:可根据表演者、地点、日期或场馆搜索活动。该工具针对用户查询进行优化,若查询涉及表演者,会先查找表演者,再查找该表演者的活动;否则直接搜索活动。返回包含场馆信息的结构化活动数据。find_event_recommendations
:根据表演者、活动或地点获取个性化活动推荐。此工具先根据查询搜索表演者和/或活动,然后使用其 ID 查找类似活动。可使用地点参数获取附近活动。find_performer_recommendations
:根据表演者、活动或地点获取个性化表演者推荐。该工具先根据查询搜索表演者和/或活动,然后使用其 ID 查找类似表演者。retrieve_event_venue_information
:获取特定活动的详细座位信息,包括区域和排数。此工具先使用提供的查询搜索活动,然后检索详细的场馆布局信息。SEATGEEK_CLIENT_ID
:SeatGeek API 客户端 ID(必需)SEATGEEK_SECRET
:SeatGeek API 密钥(可选)MCP_HTTP
:设置为任意值可启用 HTTP 传输,而非标准输入输出PORT
:使用 HTTP 传输时监听的端口(默认:8080)要使用此 MCP 服务器,需在根目录创建一个 .env
文件,并设置 SeatGeek API 凭证:
.env.example
文件复制为 .env
:cp .env.example .env
.env
文件,将占位符值替换为实际的 SeatGeek API 凭证。可通过在 SeatGeek Platform 创建账户获取 SeatGeek API 凭证。
npm install
npm run build
npm run dev
npm run clean
可通过以下几种方式测试服务器:
使用 HTTP 传输(测试最简单的方式):
MCP_HTTP=1 PORT=8080 npm start
使用 curl 测试工具(遵循正确的 MCP 协议序列):
MCP 协议要求使用带有正确头部的特定请求序列:
a. 初始化连接(必需的第一步):
curl -v -X POST http://localhost:8080 \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc": "2.0", "id": 1, "method": "initialize", "params": {"protocolVersion": "2024-06-11", "capabilities": {}, "clientInfo": {"name": "curl", "version": "1.0.0"}}}'
b. 从响应头部提取会话 ID(查找 mcp-session-id
)
c. 使用会话 ID 进行后续请求:
# 列出可用工具
curl -X POST http://localhost:8080 \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Mcp-Session-Id: YOUR_SESSION_ID_HERE" \
-d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}'
# 调用特定工具(示例)
curl -X POST http://localhost:8080 \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Mcp-Session-Id: YOUR_SESSION_ID_HERE" \
-d '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "find_events", "arguments": {"q": "concert", "per_page": 5}}}'
完整的工作示例请参考:
# 运行简单的测试服务器脚本
npm run test-server
# 运行全面的工具测试(需要服务器单独运行)
npm run test-tools
该服务器实现了模型上下文协议(MCP)规范,因此可与任何兼容 MCP 的客户端一起使用。
在 mcpServers
列表中添加以下内容:
"seatgeek-mcp": {
"command": "node",
"args": ["/path-to/seatgeek-mcp/dist/server.js"],
"env": {
"SEATGEEK_CLIENT_ID": "your-client-id"
}
}
可通过 mcpo(MCP Over HTTP)代理将此 MCP 服务器与 OpenWebUI 配合使用,该代理可根据 MCP 工具模式自动生成 OpenAPI 文档。
启动 mcpo 代理:
docker run -p 8000:8000 -v $(pwd):/workspace -w /workspace ghcr.io/open-webui/mcpo:main -- npm start
或者
uvx mcpo --port 8000 -- npm start
验证代理是否运行:
http://localhost:8000/docs
查看自动生成的 Swagger UI 文档http://localhost:8000/openapi.json
查看 OpenAPI 规范连接到 OpenWebUI:
http://localhost:8000
连接成功后,可在 OpenWebUI 中使用这些工具进行请求,例如:
{"q": "washington nationals", "per_page": 5}
{"city": "New York", "per_page": 5}
mcpo 代理会自动处理 OpenAPI REST 接口和 MCP 协议之间的转换,使 MCP 工具可通过标准 REST 端点访问,便于 OpenWebUI 集成。