高尔夫旅游数据库MCP服务器

生产级模型上下文协议(MCP)服务器,为AI代理提供安全、高性能的高尔夫旅游数据库访问服务。

  • by alangould92
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 alangould92/fareway-database-mcp

使用说明

票价数据库MCP服务器🎯

生产级模型上下文协议(MCP)服务器为AI代理提供对Fareway高尔夫巡回赛数据库的安全、高性能访问。

🌟 特性

企业级架构

  • 类型安全:具有严格模式的完整TypeScript
  • 表演:连接池、缓存和优化查询
  • 安全:API密钥身份验证、速率限制、RLS强制
  • 可观察对象:结构化日志记录、健康检查、指标
  • 可扩展的:水平扩展就绪,支持Redis

MCP工具暴露

课程工具

  • search_courses -按地区、类型、价格范围搜索课程
  • get_course_details -获取全面的课程信息
  • get_recommended_courses -人工智能优化的课程推荐
  • find_course_by_name -按课程名称模糊搜索

住宿工具

  • search_accommodations -查找课程/地区附近的酒店
  • get_accommodation_details -酒店详细信息
  • get_golf_resorts -查找住宿和娱乐场所

定价和费率工具

  • get_supplier_rates -获取运营商的协商价格
  • has_negotiated_rate -快速查看特价
  • get_operator_suppliers -列出运营商的供应商关系

🚀 快速开始

发展

# Install dependencies
npm install

# Copy environment variables
cp .env.example .env

# Configure your .env file with Supabase credentials

# Run in development mode
npm run dev

生产

# Build
npm run build

# Start
npm start

码头工人

# Build image
docker build -t fareway-database-mcp .

# Run
docker run -p 8081:8081 --env-file .env fareway-database-mcp

📡 API终点

健康与状态

  • GET /health -健康检查
  • GET /metrics -Prometheus指标(如果启用)

MCP协议

  • GET /sse -MCP通信的服务器发送事件
  • POST /api/tools/{tool_name} -直接REST API访问(用于测试)

🔒 安全

认证

所有请求都需要API密钥身份验证:

curl -H "Authorization: Bearer YOUR_API_KEY" \
  http://localhost:8081/api/tools/search_courses

速率限制

  • 默认值:每个API键每分钟100个请求
  • 可通过环境变量进行配置

行级安全

所有数据库查询都遵循Supabase RLS策略。

🎯 工具使用示例

搜索课程

{
  "name": "search_courses",
  "arguments": {
    "region": "Southwest Ireland",
    "course_type": "links",
    "max_price_cents": 50000,
    "limit": 10
  }
}

获取供应商价格

{
  "name": "get_supplier_rates",
  "arguments": {
    "operator_id": "uuid-here",
    "supplier_type": "golf_course"
  }
}

📊 监控

结构化日志记录

所有日志都是JSON格式,便于解析:

{
  "timestamp": "2024-11-25T20:00:00.000Z",
  "level": "info",
  "tool": "search_courses",
  "duration_ms": 145,
  "success": true,
  "results_count": 8
}

健康检查

curl http://localhost:8081/health

答复:

{
  "status": "healthy",
  "version": "1.0.0",
  "uptime_seconds": 3600,
  "database": "connected",
  "cache": "connected"
}

🏗️ 建筑

┌─────────────────────────────────────────┐
│  HTTP/SSE Server (Express)              │
│  - Authentication middleware            │
│  - Rate limiting                        │
│  - Request validation                   │
└──────────────┬──────────────────────────┘
               │
               ▼
┌─────────────────────────────────────────┐
│  MCP Server Core                        │
│  - Tool registry                        │
│  - Request routing                      │
│  - Response formatting                  │
└──────────────┬──────────────────────────┘
               │
               ▼
┌─────────────────────────────────────────┐
│  Tool Implementations                   │
│  - Course tools                         │
│  - Accommodation tools                  │
│  - Rate tools                           │
└──────────────┬──────────────────────────┘
               │
      ┌────────┴────────┐
      ▼                 ▼
┌──────────┐      ┌──────────┐
│ Supabase │      │  Redis   │
│  (DB)    │      │ (Cache)  │
└──────────┘      └──────────┘

🧪 测试

# Run tests
npm test

# Run with coverage
npm test:coverage

# Type check
npm run typecheck

📦 部署

铁路

  1. 推送到GitHub
  2. 将Railway连接到您的仓库
  3. 设置根目录: fareway-database-mcp
  4. 配置环境变量
  5. 部署!

环境变量(生产)

必修的:

  • SUPABASE_URL
  • SUPABASE_SERVICE_KEY
  • MCP_API_KEY

可选:

  • REDIS_URL (用于缓存)
  • PORT (默认值:8081)
  • LOG_LEVEL (默认值:info)

🔧 配置

缓存设置

ENABLE_CACHE=true
CACHE_TTL_SECONDS=300

速率限制

RATE_LIMIT_WINDOW_MS=60000
RATE_LIMIT_MAX_REQUESTS=100

📄 许可证

专有-Fareway技术

🤝 支持

如有任何问题或疑问,请联系Fareway开发团队。


内置于❤️ 高尔夫巡回赛运营的未来