Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者提供的说明(英文原文)
Field operations on a deterministic solver — run jobs, crews & fleet from Claude or ChatGPT.
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
CRISPHIVE_API_KEY, CRISPHIVE_BASE_URL标为机密的值是你账户的钥匙。千万不要分享给别人,也不要粘贴到聊天里。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
适用于网页版、桌面版和手机版 Claude:
https://api.crisphive.com/mcp打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"crisphive": {
"command": "npx",
"args": [
"-y",
"@crisphive/mcp"
],
"env": {
"CRISPHIVE_API_KEY": "your-value",
"CRISPHIVE_BASE_URL": "your-value"
}
}
}
}在终端中运行这条命令
claude mcp add --transport http crisphive https://api.crisphive.com/mcpclaude mcp add crisphive --env CRISPHIVE_API_KEY=your-value --env CRISPHIVE_BASE_URL=your-value -- npx -y @crisphive/mcp运行前请先填写空着的值。
粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"crisphive": {
"url": "https://api.crisphive.com/mcp"
}
}
}粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"crisphive": {
"command": "npx",
"args": [
"-y",
"@crisphive/mcp"
],
"env": {
"CRISPHIVE_API_KEY": "your-value",
"CRISPHIVE_BASE_URL": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"crisphive": {
"type": "http",
"url": "https://api.crisphive.com/mcp"
}
}
}粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"crisphive": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@crisphive/mcp"
],
"env": {
"CRISPHIVE_API_KEY": "your-value",
"CRISPHIVE_BASE_URL": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
ChatGPT 只能连接互联网上的服务器:
https://api.crisphive.com/mcp菜单名称可能因套餐和版本不同而略有差异。
你的选择通过 Cookie 保存在这台设备上,无需账户。
CRISPHIVE_BASE_URL env这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
服务器要求先登录,才会列出它的工具。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月10日
注册名称已通过域名 crisphive.com 验证(注册中心会核实域名所有权)
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
在 117 毫秒内响应(HTTP 401)
声明支持 OAuth 登录,你的 AI 应用可以带你去登录
尚未检查;我们会在检查端点时读取工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 3 项适用的基础检查中通过了 3 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
你需要填写:CRISPHIVE_API_KEY
两种方式都可以:安装在你的电脑上,或者连接云端版本。
GitHub 仓库最后更新于–,最新版本(2.6.0)于22天前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。它通过 URL 连接,所以接受远程 MCP 服务器的应用也可以使用,例如开启开发者模式的 ChatGPT。
同一分类中有:Spec Driven Development, Remote Desktop Commander, Backup Radar MCP
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:↓ 每周下载量i★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Every Backup Radar v3 and v2 endpoint plus a local store that finds the backups nobody is watching.
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
The official MCP (Model Context Protocol) server for the Crisphive API — agentic AI scheduling infrastructure for field operations.
Lets AI agents — Claude, ChatGPT, Gemini, Cursor or any MCP client — match schedules between customers and businesses and route crews to jobs by location, skills, and real-time availability: job booking & appointment scheduling, work-order tracking, availability from a live dispatch & scheduling engine, customer (CRM) sync, service catalogs, technician & crew rosters, geographic service territories and fleet — for trades and home services such as HVAC, plumbing, electrical, cleaning, appliance repair and property maintenance. Scheduling is constraint-based on a deterministic solver: the agent handles the conversation, the solver makes the decision — same inputs, same plan, never an LLM guessing at a calendar. Hosted remote server; nothing to install or run (this repository holds the documentation and registry manifest).
https://api.crisphive.com/mcp
Connect (a chsk_test_ sandbox key is enough), then paste any of these straight into your agent:
createCustomer → listJobRequestBookingWindows → createJobRequest → quoteJobRequest → confirmJobRequest)listEmergencyCandidates → previewEmergencyReschedule → commitEmergencyReschedule)listJobRequests → getTechnicianSchedule). Sick call — *"Dmitri called in sick for tomorrow — re-staff his jobs without moving any customer's appointment."* (previewAbsenceResolve → commitAbsenceResolve)
The same prompts appear on every Crisphive listing and docs page, so what you see here is exactly the first-run experience everywhere.
→ Full overview, tool table and one-click connect: https://crisphive.com/claude
Any MCP client that supports remote servers over Streamable HTTP — claude.ai, Claude Desktop, Claude Code, ChatGPT, Gemini CLI, Cursor, VS Code, Windsurf, Cline, Zed, LM Studio, ….
Settings → Connectors → Add custom connector, paste https://api.crisphive.com/mcp. Sign in as the Crisphive business owner when the consent screen opens. *(Custom connectors require a Claude plan that supports them.)*
# OAuth (you'll be prompted to authorize in the browser)
claude mcp add --transport http crisphive https://api.crisphive.com/mcp
claude mcp add --transport http crisphive https://api.crisphive.com/mcp \ --header "Authorization: Bearer chsk_test_YOUR_KEY"
Or add to .cursor/mcp.json:
{
"mcpServers": { "crisphive": { "url": "https://api.crisphive.com/mcp" } } }
code --add-mcp '{"name":"crisphive","url":"https://api.crisphive.com/mcp"}'
Settings → Connectors (developer mode) → add MCP server with URL https://api.crisphive.com/mcp (OAuth).
Add to ~/.gemini/settings.json (note: Gemini CLI uses httpUrl for Streamable HTTP servers):
{
"mcpServers": { "crisphive": { "httpUrl": "https://api.crisphive.com/mcp", "headers": { "Authorization": "Bearer chsk_test_YOUR_KEY" } } } }
Most clients accept the standard remote-server shape:
{
"mcpServers": { "crisphive": { "url": "https://api.crisphive.com/mcp", "headers": { "Authorization": "Bearer chsk_test_YOUR_KEY" } } } }
Only the URL field name varies in a few clients:
| Client | Config file | URL field |
|---|---|---|
| Cline / Roo Code | cline_mcp_settings.json | url |
| Windsurf | ~/.codeium/windsurf/mcp_config.json | serverUrl |
| Gemini CLI | ~/.gemini/settings.json | httpUrl |
| Zed | settings.json → context_servers | url |
Clients that only speak stdio can bridge with mcp-remote:
{
"mcpServers": { "crisphive": { "command": "npx", "args": ["-y", "mcp-remote", "https://api.crisphive.com/mcp"] } } }
@crisphive/mcp)This repository also ships a thin local stdio server: the same 67 tools (same names, same schemas — generated from the same /v1 OpenAPI spec as the hosted endpoint), where each call is an HTTPS request to the Crisphive API with your key. No business logic runs locally.
{
"mcpServers": { "crisphive": { "command": "npx", "args": ["-y", "@crisphive/mcp"], "env": { "CRISPHIVE_API_KEY": "chsk_test_YOUR_KEY" } } } }
Environment variables:
| Variable | Required | Meaning |
|---|---|---|
CRISPHIVE_API_KEY | for tool calls | chsk_live_… = production data, chsk_test_… = isolated sandbox. Create keys in the dashboard (Developers → API keys). |
CRISPHIVE_BASE_URL | no | API origin override (default https://api.crisphive.com). |
Prefer the hosted remote server (https://api.crisphive.com/mcp) when your client supports it — OAuth, no key handling, always current. The local package exists for stdio-only clients and self-hosted setups.
Developing in this repo: npm ci && npm test. The tool registry (src/tools.generated.json) is generated — npm run generate refreshes it from the live spec; CI fails if it drifts from /v1.
Every request is authenticated with a secret API key sent as a bearer token. Create keys from your Crisphive business dashboard. The key prefix selects the data environment:
chsk_live_… → live (production) datachsk_test_… → sandbox (isolated test) dataLoad keys from the environment — never commit them.
Keys expire. The lifetime is chosen when the key is created — 30 days by default, up to 365 — and is fixed for that key's life; it cannot be extended later. To renew, create a *second* key, point your agent at it, then revoke the first: a business can hold several active keys at once, so the changeover has no downtime and needs no special endpoint (the same procedure AWS documents for access keys). Read expires_at from the dashboard or the key API and schedule the swap. An aged-out key fails with API_KEY_EXPIRED, distinct from API_KEY_INVALID, so you can alert on a missed renewal separately from a revocation.
Crisphive emails the business's owners 7 days before a key expires (14 days for an OAuth connection), so an expiry should not be a surprise — but the mail goes to the business, not necessarily to you, so track expires_at yourself. A key deliberately created for less than 7 days gets no advance notice; it would have arrived at creation.
The MCP endpoint additionally supports OAuth 2.1 for end-user connectors (claude.ai, ChatGPT, …): the business owner authorizes your agent on a consent screen and no key is ever handled. A compliant MCP client runs the whole flow automatically — discovery, dynamic client registration, authorization code + PKCE. Full flow, scopes and token lifetimes: docs/integration.md.
67 tools, one per operation of the public /v1 API — same names as the SDK methods (listCustomers, createJobRequest, …), derived from the same OpenAPI spec so REST and MCP never drift. Full reference: docs/tools.md.
| Group | Tools |
|---|---|
| Customers (CRM sync, full CRUD) | listCustomers · createCustomer · getCustomer · updateCustomer · deleteCustomer |
| Bookings (create & track) | createJobRequest · listJobRequests · getJobRequest · getJobRequestTimeline · listJobRequestBookingWindows · listJobRequestChanges |
| Catalog (reads) | listJobTypes · getJobType · listSkills · listSkillCategories · listSkillsByCategory · listServiceAreas · getServiceArea |
| Catalog management (import sync) | createJobType · updateJobType · deleteJobType · createSkillCategory · deleteSkillCategory · createSkill · updateSkill · deleteSkill · createServiceArea · updateServiceArea · deleteServiceArea · createVehicle · updateVehicle · deleteVehicle |
| Team & fleet (reads) | listTechnicians · getTechnician · listVehicles · getVehicle |
| Team roster management (HR-system sync) | listAssignableGroups · createTechnician · updateTechnician · deleteTechnician · replaceTechnicianBuddies · replaceTechnicianLeads · replaceTechnicianVehicles · replaceTechnicianServiceAreas · replaceTechnicianSkills · listTechnicianSkills |
| Matching & scheduling (read-only, engine-computed) | listMatchingSlots · listCrewCandidates · getTechnicianSchedule · listNearbyTechnicians |
| Scheduling actions (drive the schedule) | quoteJobRequest · confirmJobRequest · bookAndConfirmJobRequest · previewJobRequestMove · commitJobRequestMove |
| Priority & emergency dispatch (P0–P3, SLA, cascade) | updateJobPriority · listEmergencyCandidates · previewEmergencyReschedule · commitEmergencyReschedule |
| Absence resolve (sick call — re-staff a technician's whole day) | previewAbsenceResolve · commitAbsenceResolve |
| Technician time off (record a sick day / leave, read existing leave, delete it when they come back) | createTechnicianTimeOff · listTechnicianTimeOff · deleteTechnicianTimeOff |
| Webhooks (REST-hook triggers: subscribe / unsubscribe) | listWebhookEventTypes · createWebhookEndpoint · deleteWebhookEndpoint |
Typical agent flow:
listSkills / listJobTypes → discover reference IDs
createCustomer → { customer_id } listJobRequestBookingWindows → offer only the returned windows createJobRequest → booking created quoteJobRequest → confirmJobRequest → scheduled (auto or forced technician) (quote answers 409 JOB_REQUEST_QUOTE_NOT_SCHEDULABLE when the customer would see no slot — agree a new time, or resend with force: true) getJobRequest / listJobRequestChanges → track status
One-call flow for a phone call or an automation (voice agents: connect to https://api.crisphive.com/mcp?profile=voice for a small tool set):
listCustomers (phone: "+16135550188") → is the caller already a customer?
bookAndConfirmJobRequest → booked + scheduled, or confirmed:false + refusal (the job then waits in the coordinator's queue)
Emergency (P0) flow:
createJobRequest (priority: "p0") → quoteJobRequest
listEmergencyCandidates → ranked techs + crew_recommendation previewEmergencyReschedule → what moves (or reassigns) commitEmergencyReschedule → inserted + auto-confirmed (or preview with an inline job probe, then bookAndConfirmJobRequest with priority p0 + emergency{dispatch: "now"} books and commits in one call)
Sick-call flow (a technician is out — re-
只显示了开头部分;其余内容请在仓库中阅读