Delivery Schedule

io.github.theluckystrike由 GitHub 账号 theluckystrike 发布v0.22.7更新于 Oct 24, 2026

Dated deliverables against a quote or work order: due dates, sign-off, what is late, milestones.

已验证STDIO仅桌面效率与工作流商业与电商

概览

AI 生成的概览

一个本地 MCP 服务器,按报价单或工作单跟踪带日期的交付项,可按任意日期报告逾期情况,并把已验收的里程碑转换为开票条目。

可以做什么
创建、列出、查看和删除与报价单、工作单或变更单关联的交付计划,包含客户、参考编号以及按指定日期的统计。添加带到期日和可选金额(以最小货币单位计)的交付项,并记录从计划、进行中、已交付到已验收的状态变更,每步都带实际发生日期。按指定日期生成逾期报告,最严重的排在前面,并按币种列出风险金额。生成带签收栏的纯文本交付计划文档供客户使用。把已验收的里程碑转换为以主单位计的开票条目和以最小单位计的报价条目,并单独列出未定价的交付项。查询或激活 Pro 许可证。
适用场景
适合需要跟踪客户工作交付日期与签收的自由职业者和小团队,希望助手回答截至某日期哪些工作已延误,或把已验收的里程碑转成计费条目。
运行要求
作为桌面本地进程运行,可通过 .mcpb 包或客户端配置条目安装;npm 包尚未发布,因此 npx 方式目前会失败。无需账户或 API 密钥。可选的 Pro 许可证密钥通过 MCP_LICENSE_KEY 环境变量提供,并离线验证。数据保存在用户本地数据目录中。
安装前请注意
Pro 功能(包括客户交付计划文档和里程碑开票数据)需要一次性付费的许可证密钥,通过 MCP_LICENSE_KEY 输入。服务器会写入、修改和删除计划与交付项记录,但已验收状态不可回退,删除仅限空计划或未动过的计划中交付项。它会读取由配套发票服务器写入的共享业务档案。数据保留在本机。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Delivery Schedule,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

mcp-delivery-schedule

In the official MCP Registry (io.github.theluckystrike/delivery-schedule). Dated deliverables against a quote, a work order or a change order. Each one carries what is being handed over, the day it is due, its value in minor units, and a status that moves planned to in progress to delivered to accepted, every step with the day it actually happened. late_report then answers the only question anybody asks about a schedule: what has slipped, as at a date you name. Once the client has signed something off, the accepted milestones come back as invoice_create-ready items in MAJOR units and quote_create-ready items in MINOR units, in one call, with the scale printed against each.

Late is not a status here, it is a reading. A stored "late" flag is a fact about the afternoon somebody last ran the report, and it keeps being reported long after the work lands. So nothing derived is stored: a deliverable holds its due date, its value and its dated history, and the current status, the delivered date, the acceptance note, the lateness and every total are worked out on the call, against the date you passed.

Install

One-click (.mcpb): download delivery-schedule.mcpb from the latest release and double-click it in Claude Desktop: https://github.com/theluckystrike/mcp-servers/releases/latest

Hosted, no install: point a URL-based client at https://mcp.zovo.one/mcp/delivery-schedule. GET https://mcp.zovo.one/mcp/connect mints a token and prints a ready URL.

npm publish for @theluckystrike/mcp-delivery-schedule is pending, so the npx line below returns 404 today.

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

json
{  "mcpServers": {    "delivery-schedule": {      "command": "npx",      "args": ["-y", "@theluckystrike/mcp-delivery-schedule"]    }  }}

Claude Code

sh
claude mcp add delivery-schedule -- npx -y @theluckystrike/mcp-delivery-schedule

Cursor

~/.cursor/mcp.json (global) or .cursor/mcp.json (project), same entry as Claude Desktop.

Tools

ToolWhat it does
delivery_schedule_createOpen a schedule against a quote, work order or change order: the reference, its own date, the client, a title
deliverable_addAdd one dated deliverable: what it is, the day it is due, and its value in minor units when it is separately priced
deliverable_statusRecord a dated move: in progress, delivered, and accepted with the client's acceptance note
deliverable_deleteDelete a deliverable added by mistake, while it is still planned and has nothing recorded against it
delivery_schedule_getOne schedule in full as at a date, with every deliverable's status, dates, value and lateness
delivery_schedule_listSchedules by client, reference and whether the job is finished, with the counts as at a date
delivery_schedule_deleteDelete an empty schedule opened by mistake. Free on every tier
late_reportWhat is late as at a date you name, worst first, with the value at risk per currency
delivery_schedule_documentThe schedule as a plain-text document for the client, with a sign-off block
milestone_payloadThe accepted milestones as invoice_create items (MAJOR units) and quote_create items (MINOR units)
license_status / license_activateFree or Pro, and where to upgrade

Free vs Pro

FreePro
Open schedules (a job with anything not yet accepted)3unlimited
Deliverables per schedule200200
Open, add, move, get, list, deleteyesyes
What is late, as at any dateyesyes
Delivery schedule documentnoyes
Milestone invoice payload, both scalesnoyes

The cap counts OPEN schedules, the jobs that still owe something, not the jobs you have ever run. Accepting the last deliverable completes a schedule and frees its slot without deleting the record, and delivery_schedule_delete clears an empty one; both are free on every tier, because a way back that only a Pro key can reach is not a way back.

Get Pro: https://mcp.zovo.one/buy/delivery-schedule (one-time $19, lifetime), or all servers for $39: https://mcp.zovo.one/buy/bundle

The status machine

planned to in_progress or straight to delivered; delivered to accepted. Accepted is final, and nothing moves back: work the client sent back is a new deliverable with its own due date, so the record keeps both the miss and the fix. Accepting something that was never delivered is refused by name, because acceptance is the client's answer to a handover and a deliverable accepted on a day nothing was handed over has no delivered date to bill from. Every move carries the day it actually happened, and a move dated before the reference document's own date, or before the previous move, is refused so the history reads as a timeline.

What "late" means

A deliverable is late once as_of is PAST its due date and it has not been delivered by then. One due on as_of itself is due_today, not late, which is the same rule the statement server ages an invoice by. A deliverable that was delivered is delivered_late or delivered_on_time by comparing its delivered date with its due date, which is a fact that no longer moves. Every comparison is between two YYYY-MM-DD strings and every day count is the difference of two UTC midnights, so the answer is the same on a laptop in Warsaw and a server in Auckland.

Two readings of the same store, four days apart, differ on purpose:

late_report as_of 2026-04-22   D02 is LATE by 2 days, nothing has been delivered latelate_report as_of 2026-05-05   D02 was DELIVERED LATE by 4 days, D03 is now LATE by 4 days

Deliverables with no price

A deliverable with no value_minor is not worth zero. It is one whose price was never stated here, usually because the job is a lump sum, and adding it in as zero would understate every total with nothing on the page to say so. It is counted apart wherever a total is printed, and milestone_payload lists it under excluded.accepted_but_unpriced rather than billing it. Nothing here invents a price.

Where the money comes from

This server keeps no arithmetic of its own. computeTotals, currencyDecimals, formatMoney and daysBetween are imported from @theluckystrike/mcp-invoice/lib, the corrupt-store quarantine from @theluckystrike/mcp-timezone/lib, the timezone-aware "today" from @theluckystrike/mcp-quotes/lib. The VAT rate, the currency and the business name come from the shared business profile that business_set in the invoice server writes. Nothing is written outside this server's own directory, and no sibling store is opened.

The measured insight

The same deliverable is late, on time and not yet due depending only on the date you ask about, so storing the answer is storing the day somebody asked. D02 in the worked example is due 2026-04-20 and was delivered 2026-04-24. Read at 2026-04-22 it is late by two days with no delivered date at all, even though the store already holds one dated 04-24. Read at 2026-05-01 it is delivered late by four days. Read at 2026-04-19 it is not yet due. One store, three answers, all correct. The unit suite asserts all three from one unchanged sandbox, and a separate suite replays every call under four timezones fourteen hours apart and asserts the responses are byte-identical, so the day somebody reads the report on a laptop that travelled cannot move a client's deadline.

Privacy

All data stays on your machine, in ${XDG_DATA_HOME:-~/.local/share}/mcp-servers/delivery-schedule/. Nothing is sent anywhere. There is no account and no API key. License keys are verified offline. This server reads one file it does not own, the shared business profile, and writes into no store but its own.

Built by theluckystrike. https://github.com/theluckystrike

Use these docs as an MCP server

Any MCP client (Claude, Cursor, Windsurf, VS Code) can read this repository's documentation directly via GitMCP - no install:

来源:servers/delivery-schedule/README.md,提交 6535b33

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

5
  1. v0.22.7最新Oct 14, 2026
  2. v0.22.6Oct 12, 2026
  3. v0.22.4Sep 26, 2026
  4. v0.22.2Sep 26, 2026
  5. v0.21.0Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分