mcpField
S
Shiftyasan Shift Scheduling

Shiftyasan Shift Scheduling

远程服务
api.shiftyasan.com商业与营销011 周前更新

关于 Shiftyasan Shift Scheduling

Shiftyasan Shift Scheduling 是一个 MCP 服务,可让 AI Agent 调用 Shiftyasan 的排班优化 API。它能验证排班输入、生成排班并跟踪异步任务,可在本地运行或通过远程 MCP 服务访问。

主要功能

  1. 01验证排班请求
  2. 02生成优化后的班次表
  3. 03跟踪异步求解任务
  4. 04提供排班规划提示词
  5. 05警告尚未支持的约束

适用场景

  1. 01求解前检查人员配置和排班输入
  2. 02生成员工班次安排
  3. 03跟进大型排班任务直至完成

MCP 相关

该服务将 Shiftyasan 排班能力作为 MCP 工具和 `plan_shift` 提示词提供。它可作为 npm 包在本地运行,也可连接 https://api.shiftyasan.com/mcp 上的远程 MCP 服务。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://api.shiftyasan.com/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

安装包
npm@shiftyasan/mcp-server0.2.0

工具

详细介绍

@shiftyasan/mcp-server

npm version License: MIT

适用于 Shiftyasan 公共求解器 API 的 Model Context Protocol(MCP)服务。 让 AI Agent(Claude Desktop、Cursor、Continue 等)能够从任意支持 MCP 的宿主调用排班求解器。

**状态:**公开测试版 — validate_shift_input、solve_shift 和 get_solve_job (大型问题的异步轮询)。用量查询(get_usage)即将推出。


大多数人现在都不再需要这个软件包

Shiftyasan 现已运行一个远程 MCP 服务,这是推荐的连接方式:

https://api.shiftyasan.com/mcp
远程(推荐)此 npm 软件包
Node.js无需需要 20 或更高版本
API 密钥连接时自动签发由你自行创建并粘贴
更新服务端处理,无需操作由你更新软件包
Claude.ai(网页)/ ChatGPT可用无法运行本地进程

从 Claude.ai 或 ChatGPT 连接时,浏览器会打开 Shiftyasan 登录页面;批准一次后即可完成。 你可以随时在控制面板的“Connected apps”下撤销连接。

此软件包仍受支持,现有配置也会继续正常运行。需要在本地运行服务时,可以使用此软件包 —— 例如,宿主无法直接访问互联网,或你希望自行保管 API 密钥时。

远程配置请参阅快速入门。


什么是 Shiftyasan?

Shiftyasan 是一款 SaaS 服务,使用约束优化引擎为企业(零售、酒店、医疗保健等)自动生成工作班次。同一求解器也通过 https://api.shiftyasan.com/v1/public/* 提供公共 HTTP API。此 MCP 服务是一个轻量客户端封装,将 API 转换为 AI Agent 可发现的工具。

开发者文档——快速入门、完整的支持约束列表和定价——位于 https://platform.shiftyasan.com(日语和英语)。

工具

工具描述收费?
validate_shift_input根据公共 API 架构验证 SolveRequest 载荷(不运行求解器)。否
solve_shift运行求解器。小型/中型问题会同步返回;大型问题(大约 25 名以上员工)会进入队列,并返回 202 和 job_id。是
get_solve_job轮询异步任务,直到状态变为 completed / failed。否

完整的 SolveRequest / SolveResponse 架构位于 OpenAPI 规范中,地址为 GET <base URL>/v1/public/openapi.json(基础 URL = SHIFTYASAN_BASE_URL, 默认值为 https://api.shiftyasan.com)。

提示词

提示词功能说明
plan_shift引导 Agent 制定排班表:询问用户需要哪些信息、何时进行验证,以及如何呈现最终排班表。

两个参数(period、context)均为可选,因此可以直接调用。在 Claude Code 中,它会显示为 /mcp__shiftyasan__plan_shift;其他宿主会在各自的界面中显示 提示词。

如果你希望 Agent 通过询问来收集输入,而不是自行猜测,或者上一次生成的排班表不便快速核对, 就可以使用它。提示词会要求 Agent 每人单独列一行,并在右侧列出每人的工时总计, 因为这是排班经理首先会查看的内容。

服务还会在其 initialize 响应中发送工作流指导(调用 validate_shift_input 后再调用 solve_shift,收到 202 后轮询 get_solve_job,以及如何读取缺员标记和不可行性诊断)。宿主可能会将这些内容添加到模型的系统提示词中;Claude Code 会这样做,Claude Desktop 目前则不会,这也是相同的顺序规则同时写在工具说明中的原因。

架构接受但求解器尚未应用的约束

API 会接受一些字段,但随后会在转换过程中将其舍弃,因为求解器没有与之对应的功能。 validate_shift_input 和 solve_shift 会打印明确警告,准确列出所有被舍弃的内容,因此 Agent 不会声称这些约束已生效。

字段状态解决方法
employees[].preferences[].type: "avoided_shift"未应用从该员工的 assignable_shift_ids 中移除该班次(硬性限制),或为其应分配的班次指定 preferred_shift
employees[].working_days_per_week.max仅使用 min使用 working_days_per_month 设置整个时段内的上限
constraints.employee_pairings[].rule: "require"未应用(仅 exclude 有效)使用 fixed_assignments 将他们安排在同一班次

架构中的其他所有内容都会由求解器应用。

安装

本地运行需要 Node.js 20 或更高版本。如果你不想管理它,也可以改用 远程服务。

直接通过 npx 使用(无需全局安装):

npx -y @shiftyasan/mcp-server

也可在 MCP Registry 中找到,名称为 com.shiftyasan/mcp-server。

或者全局安装:

npm install -g @shiftyasan/mcp-server
shiftyasan-mcp-server

设置

1. 获取 API 密钥

在自助服务控制面板中创建一个 sk_live_... 密钥: https://platform.shiftyasan.com/dashboard/(你现有的 Shiftyasan 账户可以直接使用;也可以注册新账户)。 如有问题,请发送邮件至 [email protected](日语或英语均可)。

请像对待密码一样保管该令牌:它可以访问你的求解器配额。

**Beta 说明:**你收到的基础 URL 可能与默认值不同 — 请通过 SHIFTYASAN_BASE_URL 设置(见下文)。

2. 配置 MCP 宿主
Claude Desktop

编辑 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)或 %APPDATA%/Claude/claude_desktop_config.json(Windows):

{
  "mcpServers": {
    "shiftyasan": {
      "command": "npx",
      "args": ["-y", "@shiftyasan/mcp-server"],
      "env": {
        "SHIFTYASAN_API_KEY": "sk_live_..."
      }
    }
  }
}

重启 Claude Desktop。shiftyasan 服务会出现在工具菜单中,并提供 validate_shift_input、solve_shift 和 get_solve_job。

Claude Code
claude mcp add shiftyasan -e SHIFTYASAN_API_KEY=sk_live_... -- npx -y @shiftyasan/mcp-server

(如果提供给你的是 beta 基础 URL,请添加 -e SHIFTYASAN_BASE_URL=...。)

Cursor / Continue / 其他 MCP 宿主

按相同结构(command + args + env)添加到 MCP 服务配置中。 具体配置文件路径请参阅宿主的文档。

在 ChatGPT 中使用

ChatGPT 无法像此软件包那样启动本地 stdio MCP 服务,因此请通过带 Actions 的自定义 GPT直接使用 HTTP API(OpenAPI 规范设计为兼容 Actions — 架构完全内联,不使用外部引用):

  1. ChatGPT → 我的 GPT → 创建 GPT → 配置 → Actions → 从 URL 导入,然后输入 <base URL>/v1/public/openapi.json (基础 URL = 随 API 密钥提供给你的 URL; 默认值为 https://api.shiftyasan.com)。

  2. 如果提供给你的是 beta 基础 URL,还要将导入的架构中的 servers[0].url 编辑为 <base URL>/v1/public。

  3. 身份验证 → API Key → Auth Type Bearer → 粘贴你的 sk_live_... 令牌。

  4. 推荐的 GPT 指令:

    你可以使用 Shiftyasan actions 创建经过优化的轮班计划。 始终先调用 validate action(免费),然后再求解。大型问题 会返回 202 和一个 job_id — 每隔约 15 秒轮询一次任务端点,直到 状态变为 "completed" 或 "failed"。

注意:创建自定义 GPT 需要付费 ChatGPT 计划,且 API 密钥会存储在 GPT 中 — 请勿公开分享该 GPT。

ChatGPT 的 MCP 连接器仅支持托管 MCP 端点 (Streamable HTTP),不支持本地 stdio 进程。托管 MCP 端点已列入我们的路线图;在推出之前,请按上述方式使用 Actions。

环境变量

变量必需描述
SHIFTYASAN_API_KEY是Bearer API 密钥。格式:sk_(live|test)_<64 hex chars>。
SHIFTYASAN_BASE_URL否覆盖基础 URL(默认值为 https://api.shiftyasan.com)。适用于暂存环境或自托管。

会话示例

在 Claude Desktop 中完成配置后:

你: 使用 Shiftyasan,为 6 月第一周的早班和晚班安排 3 名员工。

Claude 会发现这些工具,调用 validate_shift_input 确认其构建的负载可接受,然后调用 solve_shift 获取分配结果。API 错误(RFC 7807)会直接显示,方便 Claude 自行修正(例如,“staffing_demand length must equal schedule_days”)。

定价

开放测试版免费。 每个 API 密钥都附带免费使用额度 (solve_shift 每次调用会消耗额度;validate_shift_input 始终免费)。 使用你的密钥调用 GET /v1/public/usage,即可查看剩余额度。 额度用完后,请发送邮件至 [email protected] 获取更多额度。

测试版结束后计划推出付费方案。MCP 服务本身不会收费; 所有用量均由 API 端根据你的 SHIFTYASAN_API_KEY 计量。

本地开发

git clone https://github.com/shiftyasan/mcp-server.git
cd mcp-server
npm install
npm run build
npm test

若要对接本地网关:

SHIFTYASAN_API_KEY=sk_test_... \
SHIFTYASAN_BASE_URL=http://localhost:8080 \
  npm run dev

使用 MCP 检查器进行交互式测试:

npx @modelcontextprotocol/inspector node dist/index.js

问题反馈

许可证

MIT — 参见 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。