Shiftyasan MCP Server
MCP server for the Shiftyasan public solver API, letting AI agents validate and solve shift-scheduling problems, with async job polling for large cases.
README
@shiftyasan/mcp-server
Model Context Protocol (MCP) server for the Shiftyasan public solver API. Lets AI agents (Claude Desktop, Cursor, Continue, etc.) call the shift-scheduling solver from any MCP-aware host.
Status: open beta —
validate_shift_input,solve_shift, andget_solve_job(async polling for large problems). Usage queries (get_usage) coming next.
What is Shiftyasan?
Shiftyasan is a SaaS that auto-generates work shifts
for businesses (retail, hospitality, healthcare, etc.) using a
constraint-optimization engine. The same solver is exposed as a public HTTP API at
https://api.shiftyasan.com/v1/public/*. This MCP server is a thin client
wrapper that turns the API into discoverable tools for AI agents.
Developer documentation — quickstart, the full list of supported constraints, and pricing — lives at https://platform.shiftyasan.com (日本語 / English).
Tools
| Tool | Description | Charged? |
|---|---|---|
validate_shift_input |
Validate a SolveRequest payload against the public-API schema (no solver). |
No |
solve_shift |
Run the solver. Small/medium problems return synchronously; large problems (roughly 25+ employees) are queued and return 202 with a job_id. |
Yes |
get_solve_job |
Poll an asynchronous job until completed / failed. |
No |
The full SolveRequest / SolveResponse schema lives in the OpenAPI spec at
GET <base URL>/v1/public/openapi.json (base URL = SHIFTYASAN_BASE_URL,
default https://api.shiftyasan.com).
Constraints the schema accepts but the solver does not apply yet
A few fields are accepted by the API and then dropped during translation, because the
solver has no equivalent. validate_shift_input and solve_shift print an explicit
warning listing exactly what was dropped, so an agent never reports them as honored.
| Field | Status | Workaround |
|---|---|---|
employees[].preferences[].type: "avoided_shift" |
Not applied | Remove the shift from that employee's assignable_shift_ids (hard), or state a preferred_shift for the shift they should get instead |
employees[].working_days_per_week.max |
Only min is used |
Use working_days_per_month for an upper bound over the period |
constraints.employee_pairings[].rule: "require" |
Not applied (only exclude works) |
Use fixed_assignments to place them on the same shift |
Everything else in the schema is applied by the solver.
Install
Use directly via npx (no global install needed):
npx -y @shiftyasan/mcp-server
Or install globally:
npm install -g @shiftyasan/mcp-server
shiftyasan-mcp-server
Setup
1. Get an API key
Issue an sk_live_... key in the self-service dashboard:
https://platform.shiftyasan.com/dashboard/ (your existing
Shiftyasan account works; sign-up is also available).
If anything goes wrong, email info@shiftyasan.com (日本語 OK).
Treat the token like a password: it grants access to your solver quota.
Beta note: you may receive a base URL different from the default — set it via
SHIFTYASAN_BASE_URL(see below).
2. Configure your MCP host
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json
(macOS) or %APPDATA%/Claude/claude_desktop_config.json (Windows):
{
"mcpServers": {
"shiftyasan": {
"command": "npx",
"args": ["-y", "@shiftyasan/mcp-server"],
"env": {
"SHIFTYASAN_API_KEY": "sk_live_..."
}
}
}
}
Restart Claude Desktop. The shiftyasan server appears in the tools menu and
exposes validate_shift_input, solve_shift, and get_solve_job.
Claude Code
claude mcp add shiftyasan -e SHIFTYASAN_API_KEY=sk_live_... -- npx -y @shiftyasan/mcp-server
(Add -e SHIFTYASAN_BASE_URL=... if you were given a beta base URL.)
Cursor / Continue / other MCP hosts
Add to your MCP server config in the same shape (command + args + env).
Refer to your host's docs for the exact config file path.
Using from ChatGPT
ChatGPT cannot spawn local stdio MCP servers like this package, so use the HTTP API directly through a Custom GPT with Actions (the OpenAPI spec is designed to be Actions-compatible — fully inlined schemas, no external refs):
-
ChatGPT → My GPTs → Create a GPT → Configure → Actions → Import from URL, and enter
<base URL>/v1/public/openapi.json(base URL = the one you received with your API key; defaulthttps://api.shiftyasan.com). -
If you were given a beta base URL, also edit the imported schema's
servers[0].urlto<base URL>/v1/public. -
Authentication → API Key → Auth Type Bearer → paste your
sk_live_...token. -
Suggested GPT instructions:
You can build optimized work shift schedules with the Shiftyasan actions. Always call the validate action first (free), then solve. Large problems return 202 with a job_id — poll the job endpoint every ~15 seconds until the status is "completed" or "failed".
Notes: creating custom GPTs requires a paid ChatGPT plan, and the API key is stored inside the GPT — do not share that GPT publicly.
ChatGPT's MCP connectors only support hosted MCP endpoints (Streamable HTTP), not local stdio processes. A hosted MCP endpoint is on our roadmap; until then, use Actions as above.
Environment variables
| Variable | Required | Description |
|---|---|---|
SHIFTYASAN_API_KEY |
yes | Bearer API key. Format: sk_(live|test)_<64 hex chars>. |
SHIFTYASAN_BASE_URL |
no | Override base URL (default https://api.shiftyasan.com). Useful for staging or self-host. |
Example session
In Claude Desktop, after configuring:
You: Schedule 3 employees over the first week of June across morning and evening shifts. Use Shiftyasan.
Claude will discover the tools, call validate_shift_input to confirm the
payload it constructed is acceptable, then call solve_shift to get the
assignment. Errors from the API (RFC 7807) are surfaced inline so Claude can
self-correct (e.g., "staffing_demand length must equal schedule_days").
Pricing
The open beta is free. Each API key comes with a free usage quota
(solve_shift consumes units per call; validate_shift_input is always free).
Check your remaining quota with GET /v1/public/usage using your key.
When you run out, email info@shiftyasan.com to get more.
Paid plans are planned after the beta. The MCP server itself never charges;
all metering happens against your SHIFTYASAN_API_KEY on the API side.
Local development
git clone https://github.com/shiftyasan/mcp-server.git
cd mcp-server
npm install
npm run build
npm test
To run against a local gateway:
SHIFTYASAN_API_KEY=sk_test_... \
SHIFTYASAN_BASE_URL=http://localhost:8080 \
npm run dev
Test interactively with the MCP inspector:
npx @modelcontextprotocol/inspector node dist/index.js
Reporting issues
- MCP server bugs / requests: https://github.com/shiftyasan/mcp-server/issues
- Underlying API issues: contact info@shiftyasan.com
License
MIT — see LICENSE.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.