Token导航 LogoToken导航TokenDH.com
SevenRooms MCP Server logo
运维云端未说明官方级别未说明来源级核验

SevenRooms MCP Server

MCP Server

SevenRooms MCP Server 是一个基于HTTP的模型上下文协议服务器,提供餐厅预订和可用时间查询功能,支持TypeScript和Zod验证,并可通过Azure App Service部署。

工具数

1

提示词数

0

GitHub Stars

0

资源数

0
API集成TypeScriptHTTP服务器

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

csnkarthik

提供方

csnkarthik

最后核验

2026/5/17 20:22

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

SevenRooms MCP服务器

基于HTTP的模型上下文协议(MCP)服务器,为SevenRooms预订和可用性提供工具和资源。用途 StreamableHTTPServerTransport (HTTP+SSE)而不是stdio。使用TypeScript和官方 @modelcontextprotocol/sdk.

特性

  • make_reservations 工具:使用客人详细信息创建餐厅预订
  • available_time_slot 资源:查询可用的预订时隙
  • TypeScript+Zod验证
  • 可流式HTTP传输(JSON响应+可选的SSE流式传输)
  • 已准备好通过GitHub操作部署Azure应用服务

项目结构

src/
  server.ts                         # Main MCP HTTP server (/mcp endpoint)
  tools/makeReservation.ts          # make_reservations tool registration
  resources/available_time_slot.ts  # available_time_slot resource registration
test/                               # Integration tests
.env.example                        # Example environment vars
tsconfig.json
package.json
.github/workflows/azure-deploy.yml  # CI/CD workflow to Azure App Service

环境变量

名称必填描述
SEVENROOMS_API_KEYSEVENROOMS API的身份验证
SEVENROOMS_API_URL基本API URL(例如。https://api.sevenrooms.com)
PORT可选监听端口(应用服务自动设置)

复制 .env.example.env 供本地使用:

SEVENROOMS_API_KEY=your_key_here
SEVENROOMS_API_URL=https://api.sevenrooms.com

地方发展

npm install
npm run build
npm start              # starts HTTP server on PORT (default 3000)
# or
npm run start:dev      # tsx live-reload

服务器终结点:

  • POST /mcp JSON-RPC MCP请求(初始化、工具/列表、资源/列表、工具/调用等)
  • GET /mcp –SSE流(如果使用流媒体场景)
  • DELETE /mcp –关闭会话(有状态模式;此处为无状态,因此可选)
  • GET /health –简单的健康探头

示例初始化请求

curl -X POST http://localhost:3000/mcp \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc":"2.0",
    "id":1,
    "method":"initialize",
    "params":{
      "protocolVersion":"1.0",
      "clientInfo":{"name":"local-client","version":"1.0"},
      "capabilities":{}
    }
  }'

列出工具

curl -X POST http://localhost:3000/mcp \
  -H "Accept: application/json" -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'

调用make_reservations工具(示例)

curl -X POST http://localhost:3000/mcp \
  -H "Accept: application/json" -H "Content-Type: application/json" \
  -d '{
    "jsonrpc":"2.0",
    "id":3,
    "method":"tools/call",
    "params":{
      "name":"make_reservations",
      "arguments":{
        "date":"2025-12-20",
        "time":"19:00",
        "party_size":2,
        "first_name":"Jane",
        "last_name":"Doe",
        "email":"jane@example.com",
        "phone":"+15555550123"
      }
    }
  }'

工具和资源详细信息

工具:make_reservations

输入字段:

date, time, party_size, first_name, last_name, email, phone

从SevenRooms API返回成功或详细的错误文本。

资源:可用_时间_地块

URI格式:

available://YYYY-MM-DD/HH:MM/party_size

返回JSON: { "available_times": ["18:00", "18:30", ...] } 已筛选出以下条目 type === 'book.

使用的SevenRooms API端点

  • 预订: POST {SEVENROOMS_API_URL}/reservations
  • 可利用性: GET {SEVENROOMS_API_URL}/availability 带有查询参数 date, time, party_size

如果您的SevenRooms帐户不同,请调整端点路径。

Azure应用服务部署

1.创建Azure资源(CLI示例)

az group create -n sevenrooms-rg -l eastus
az appservice plan create -g sevenrooms-rg -n sevenrooms-plan --sku B1 --is-linux
az webapp create -g sevenrooms-rg -p sevenrooms-plan -n  --runtime "NODE:18-lts"

2.配置应用设置

az webapp config appsettings set -g sevenrooms-rg -n  --settings \
  SEVENROOMS_API_KEY="" \
  SEVENROOMS_API_URL="https://api.sevenrooms.com"

Azure注入 PORT 自动;除非需要,否则不要硬编码。

3.GitHub的秘密

插件仓库设置→ 行动→ 秘密:

  • AZURE_WEBAPP_NAME =\
  • AZURE_WEBAPP_PUBLISH_PROFILE =逐字粘贴发布配置文件XML

4.工作流程(azure-deploy.yml)

步骤:签出、设置节点+缓存、安装(如果缓存命中则跳过)、测试、构建、列出构建输出、部署。

5.验证部署

curl https://.azurewebsites.net/health
curl -X POST https://.azurewebsites.net/mcp \
  -H "Accept: application/json" -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"1.0","clientInfo":{"name":"remote","version":"1.0"},"capabilities":{}}}'

测井和观测

  • 使用 console.error() 用于服务器日志(应用服务捕获的stderr)。
  • 添加应用程序洞察:设置 APPINSIGHTS_INSTRUMENTATIONKEY 或连接字符串。
  • 考虑结构化日志(JSON)以便于分析。

故障排除

问题原因修复
404/mcp构建缺失或错误的起始路径确保 npm run build 并开始使用 node build/server.js
500个SevenRooms错误无效的API密钥或有效负载验证env变量和输入字段
超时SKU或网络延迟低增加计划大小/调整重试
不可接受缺少Accept标头使用 Accept: application/json (仅启用JSON)
功能错误缺失 capabilities 初始化包含 "capabilities":{}

生产建议

  • 至少使用B1平面图;根据CPU或HTTP队列长度向外扩展。
  • 通过出入限制或前门限制进入。
  • 旋转 SEVENROOMS_API_KEY 定期。
  • 对SevenRooms的短暂故障(429,5xx)实施重试。
  • 如果公开披露,则增加利率限制。

贡献

  1. 分支机构从 main
  2. 实施变更 src/
  3. npm test && npm run build
  4. PR和合并以触发部署

许可证

麻省理工学院(根据需要更新)。

参考文献

  • MCP文件:https://modelcontextprotocol.io/
  • SDK代表:https://github.com/modelcontextprotocol/typescript-sdk
  • SevenRooms API文档:(请参阅特定帐户门户网站)

SevenRooms MCP服务器

用于管理SevenRooms餐厅预订的模型上下文协议(MCP)服务器。根据 MCP规范 使用TypeScript和官方 @modelcontextprotocol/sdk.

特性

  • make_reservations 工具:使用客人详细信息创建餐厅预订
  • 可用_时间_地块 资源:查询可用的预订时隙
  • 完全使用TypeScript和Zod验证
  • 基于STDIO的通信,实现无缝MCP集成
  • Azure应用服务部署就绪

项目结构

src/
  index.ts          # Main MCP server with tools and resources
test/
  makeReservation.test.js   # Unit tests for make_reservations tool
  availableTimeSlot.test.js # Unit tests for available_time_slot resource
.env.example        # Example environment variables
tsconfig.json       # TypeScript configuration
package.json        # Project dependencies and scripts
.github/
  workflows/
    azure-deploy.yml # GitHub Actions CI/CD workflow

先决条件

  • Node.js>=16
  • npm
  • SevenRooms API密钥和基本URL

地方发展

1.安装依赖项

npm install

2.配置环境变量

复制 .env.example.env 并填写您的SevenRooms凭据:

cp .env.example .env

然后编辑 .env:

SEVENROOMS_API_KEY=your_sevenrooms_api_key_here
SEVENROOMS_API_URL=https://api.sevenrooms.com

3.构建服务器

npm run build

这将TypeScript编译为JavaScript build/ 目录。

4.运行测试

npm test

预期产量:

  available_time_slot resource
    ✓ throws when required fields missing
    ✓ returns only times with type == "book"

  make_reservations tool
    ✓ throws when required fields missing
    ✓ calls SevenRooms reservations endpoint and returns data

  4 passing

5.启动服务器

生产:

npm start

对于自动重新加载的开发:

npm run start:dev

服务器将在stdio上启动,为MCP客户端连接做好准备。

MCP工具和资源

工具:make_reservations

通过SevenRooms预订餐厅。

输入架构:

{
  "date": "YYYY-MM-DD (e.g., 2025-12-25)",
  "time": "HH:MM (e.g., 19:00)",
  "party_size": 4,
  "first_name": "John",
  "last_name": "Doe",
  "email": "john@example.com",
  "phone": "555-1234"
}

答复: 返回SevenRooms API响应以及预订确认详细信息(ID、状态等)。

资源:可用_时间_地块

查询给定日期、时间和聚会规模的可用预订时隙。

URI格式:

available://YYYY-MM-DD/HH:MM/party_size

例子:

available://2025-12-25/19:00/4

答复:

{
  "available_times": ["18:00", "18:30", "19:00", "19:30"]
}

资源会自动筛选,仅包含以下时间 type === 'book' 从SevenRooms的可用性API。

SevenRooms API集成

服务器调用以下SevenRooms端点:

预订端点

  • 网址: {SEVENROOMS_API_URL}/reservations
  • 方法: 发布
  • 认证: 不记名代币 Authorization 头球
  • 有效载荷:
  {
    "datetime": "2025-12-25T19:00",
    "party_size": 4,
    "guest": {
      "first_name": "John",
      "last_name": "Doe",
      "email": "john@example.com",
      "phone": "555-1234"
    }
  }

可用性端点

  • 网址: {SEVENROOMS_API_URL}/availability
  • 方法: 获取
  • 认证: 不记名代币 Authorization 头球
  • 查询参数: date, time, party_size

注: 如果您的SevenRooms API帐户需要不同的路径或身份验证方法,请调整端点并请求有效负载。

测试

该项目包括使用Mocha、Chai和Nock(用于HTTP模拟)的单元测试。

运行测试:

npm test

测试包括:

  • 工具和资源的输入验证
  • 模拟SevenRooms API响应
  • 可用时隙的筛选逻辑(类型===“book”)

Azure部署

先决条件

  1. Azure应用服务实例
  2. 包含此代码的GitHub存储库
  3. 导出Azure发布配置文件

设置步骤

  1. 创建Azure应用服务

- 创建新的Web应用程序(Node.js 18 LTS或更高版本) - 复制发布配置文件XML

  1. 配置GitHub机密

- 在GitHub存储库中,转到设置→ 秘密和变量→ 行动 - 添加这些秘密: - AZURE_WEBAPP_NAME --Azure Web应用程序的名称 - AZURE_WEBAPP_PUBLISH_PROFILE --发布配置文件XML内容

  1. 设置应用服务配置

- 在Azure门户中,转到您的应用服务→ 配置 - 添加这些应用程序设置: - SEVENROOMS_API_KEY -您的SevenRooms API密钥 - SEVENROOMS_API_URL -您的SevenRooms API基础URL(例如。, https://api.sevenrooms.com) - PORT --留空以自动绑定(Azure会自动设置此项)

  1. 部署

- 推到 main 分支 - GitHub Actions工作流自动运行 - 部署继续到Azure应用服务

工作流在中定义 .github/workflows/azure-deploy.yml 以及:

  • 检查代码
  • 安装依赖项
  • 构建TypeScript
  • 使用发布配置文件进行部署

验证部署

部署后,您可以:

  • 检查Azure门户中的应用服务活动日志
  • 查看GitHub上的GitHub操作工作流运行日志
  • 通过指向已部署实例的MCP客户端连接来测试服务器

日志记录

重要提示: MCP服务器使用stdio进行通信,因此日志记录受到限制:

  • ✅ 使用 console.error() 用于日志记录(写入stderr,对基于STDIO的MCP安全)
  • ❌ 从不使用 console.log() (写入stdout,损坏MCP JSON-RPC消息)

对于生产,请考虑:

  • 通过Azure SDK将日志重定向到应用程序洞察
  • 使用写入stderr的结构化日志库
  • 检查Azure门户中的Azure应用服务日志

故障排除

“找不到模块'@modelcontextprotocol/sdk'”

  • npm install 确保所有依赖项都已安装
  • 检查 @modelcontextprotocol/sdk 在...里 package.json 依赖项

构建错误(TypeScript)

  • 确保已安装Node.js>=16
  • 删除 build/node_modules/ 并重新安装: npm install && npm run build

测试失败

  • 确保 .env 文件存在(即使为空)或在运行测试之前在shell中设置环境变量
  • 检查nock mock是否符合您的实际SevenRooms API请求

服务器未作为MCP客户端连接

  • 确保服务器运行时不会抛出错误: npm start (应打印到stderr)
  • 验证MCP客户端是否正确配置为调用服务器

贡献

  1. 对以下内容进行更改 src/index.ts
  2. 运行测试: npm test
  3. 构建: npm run build
  4. 提交并触发CI/CD

许可证

麻省理工学院

参考文献

目录标签

目录标签

API集成TypeScriptHTTP服务器餐厅预订本地部署Azure部署

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

部署方式(deploymentType,部署类型)

remote-capable

工具数量(toolCount,工具数)

1

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明noneremote-capable

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP