mcpField
P
PrintYourDuck Quote

PrintYourDuck Quote

远程服务
github.com/printyourduck商业与营销019 周前更新
代码仓库

关于 PrintYourDuck Quote

PrintYourDuck Quote 是用于准备并提交本地 3D 打印文件以供人工报价审核的 MCP 服务。它适用于编码 Agent 工作流,不负责定价或结账。

主要功能

  1. 01读取公开报价要求
  2. 02查找项目中的近期可打印文件
  3. 03上传用户确认的文件
  4. 04提交人工报价请求
  5. 05查询报价状态

适用场景

  1. 01为生成的 3D 模型申请报价
  2. 02在项目中查找可打印文件
  3. 03查询已提交报价的状态

MCP 相关

向 MCP 客户端提供报价要求、本地文件发现、私密上传与报价提交,以及公开安全的状态查询工具。提供远程 MCP 接口和本地 stdio 程序包。

配置

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

服务地址https://printyourduck.com/api/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@printyourduck/mcp0.1.1

工具

3

此工具无需参数。

详细介绍

PrintYourDuck MCP

CI Security MCP Node.js >=20 License: MIT

用于将本地 3D 打印文件发送至 PrintYourDuck 进行人工报价审核的 MCP 服务。它面向编码 Agent 工作流:用户已生成或选定本地 .stl、.step、.stp、.3mf、.obj 或 .zip 文件,并希望获得报价请求准备方面的帮助。

该服务已预先配置为使用 https://printyourduck.com。用户无需提供 API URL、API 密钥或店铺路由配置。

状态

接入方式状态
远程 MCP已上线:https://printyourduck.com/api/mcp
本地 stdio 包可通过 npm 获取:@printyourduck/mcp
npm 包公开:@printyourduck/mcp
OCI 镜像发布目标:ghcr.io/printyourduck/printyourduck-mcp:<version>
MCP Registry已上线:com.printyourduck/quote

目前首选通过 npx 安装。只有确认目标版本的 GHCR 镜像可公开拉取后,才使用 Docker。

为什么要开发它

用户从代码、CAD 生成或快速原型设计流程转向 3D 打印报价时,很容易出错。此 MCP 服务为 Agent 提供了一套范围明确、可审计的工作流:

  1. 阅读公开的报价要求。
  2. 在当前项目中查找近期可打印的文件。
  3. 请用户选择一个文件,并确认所需的安全声明。
  4. 通过 PrintYourDuck 的私有上传流程上传该文件。
  5. 提交人工报价请求。
  6. 通过报价 ID 和客户电子邮件查询可公开查看的报价状态。

它不会计算即时价格、在上传时收取款项、自动完成结账,也不会暴露私有运营详情。

安装

目前请使用:

npx -y @printyourduck/mcp

对于团队共享或需要复现的客户端配置,请固定软件包版本:

npx -y @printyourduck/mcp@<version>

客户端设置

不同客户端的 MCP 配置文件并不相同。请使用符合客户端要求的配置格式,然后重启或刷新客户端,以便重新加载服务。

Claude Code,本地用户设置:

claude mcp add --transport stdio printyourduck -- npx -y @printyourduck/mcp

Claude Code,项目共享的 .mcp.json:

{
  "mcpServers": {
    "printyourduck": {
      "command": "npx",
      "args": ["-y", "@printyourduck/mcp"]
    }
  }
}

只有当仓库有意向所有打开该项目的用户提供 PrintYourDuck 工具时,才使用项目共享的 .mcp.json。Claude Code 在使用项目范围的 MCP 服务前会要求批准。

VS Code 工作区设置,位于 .vscode/mcp.json:

{
  "servers": {
    "printyourduck": {
      "command": "npx",
      "args": ["-y", "@printyourduck/mcp"]
    }
  }
}

使用通用 mcpServers 格式的客户端可以使用上方的 Claude Code 项目配置片段。

使用 MCP Inspector 测试本地服务:

npx -y @modelcontextprotocol/inspector npx -y @printyourduck/mcp

Docker,确认 GHCR 镜像可公开拉取后使用:

docker run --rm -i ghcr.io/printyourduck/printyourduck-mcp:<version>

目前可连接支持远程连接的 MCP 客户端:

https://printyourduck.com/api/mcp

Claude Code 远程 HTTP 设置:

claude mcp add --transport http printyourduck https://printyourduck.com/api/mcp

工具

工具用途网络/文件访问
get_printyourduck_quote_requirements返回可接受的文件类型、材料选项、必需的确认事项和安全边界。不访问本地文件。不访问网络。
find_recent_printable_files在允许的本地项目目录中查找近期可打印的文件。只读本地文件元数据。
submit_local_file_for_quote上传一个经用户批准的本地文件,并创建人工报价请求。读取一个允许访问的本地文件,私密上传,然后提交至 PrintYourDuck。
get_quote_status使用报价 ID 和匹配的电子邮箱查询可公开的报价状态。仅向 PrintYourDuck 发起网络请求。

默认情况下,本地文件发现和上传仅限于当前工作目录。当 MCP 客户端需要访问其他项目目录时,可将 PRINTYOURDUCK_MCP_ALLOWED_ROOTS 设为以路径分隔的允许列表。

除非调用方提供 submissionId,否则 submit_local_file_for_quote 会根据所选文件和报价详情生成稳定的 submissionId。重试时请重复使用该 ID,以避免创建重复的人工报价请求。该辅助工具还会在本地按 submissionId 和文件哈希缓存已上传的私有文件密钥;如果上传服务返回了生成的 Blob 密钥,重试时便可重复使用相同的已上传文件引用。

防护措施

此服务遵守 PrintYourDuck 的人工报价边界:

  • 当前不提供即时定价;
  • 上传时不付款;
  • 不自动执行结账;
  • 不声称产品在本地生产、在加拿大制造或保证交付;
  • 公开响应中不包含供应商所在地、履约路线、承运商策略、供应商成本、利润逻辑、私有文件引用或客户数据。

只有在明确界定范围、经过测试、公开记录,并与结账或收款清楚区分的情况下,价格范围或即时估价才可作为未来功能提供。

开发

pnpm install
pnpm check:release

实用检查:

pnpm check          # lint, tests, typecheck
pnpm check:security # audit, gitleaks, trufflehog
pnpm check:mcp      # stdio initialize, tool list, fixture discovery, path guard
pnpm check:pack     # npm tarball allowlist

pnpm check:mcp 会构建服务,通过 stdio 启动服务,验证初始化和工具元数据,创建临时 .stl 测试文件,验证本地文件发现,并验证不在允许根目录内的文件会在上传前被拒绝。

仅当你有意创建真实的报价请求时,才运行生产环境实时冒烟测试:

PRINTYOURDUCK_MCP_LIVE_SMOKE=1 \
[email protected] \
pnpm smoke:live

实时冒烟测试会通过 https://printyourduck.com 上传一个很小的测试文件,提交一条人工报价请求,并验证 get_quote_status 能返回结果。

发布清单

只有在以下各项全部通过后,才能声称 npm 本地辅助工具可安装:

pnpm check:release
npm view @printyourduck/mcp version
VERSION="$(npm view @printyourduck/mcp version)"
gh release view "mcp-v${VERSION}"
PRINTYOURDUCK_MCP_LIVE_SMOKE=1 [email protected] pnpm smoke:live

应从此专用 MCP 仓库发布 npm 软件包更改,而不是从网站仓库发布。

对于每个带标签的版本,请验证 npm 软件包是从该标签对应的提交发布的:

VERSION="$(node -p "require('./package.json').version")"
test "$(npm view "@printyourduck/mcp@${VERSION}" gitHead)" = "$(git rev-parse HEAD)"
npm view "@printyourduck/mcp@${VERSION}" dist.tarball dist.integrity

MCP Registry 名称为 com.printyourduck/quote,因此发布时使用基于域名的 HTTP 身份验证,域名为 printyourduck.com。请从 https://printyourduck.com/.well-known/mcp-registry-auth 提供公开的 v=MCPv1; ... 记录,并仅将匹配的私钥保存在此仓库的 MCP_REGISTRY_PRIVATE_KEY GitHub Actions 密钥中。

只有在以下检查通过后,才能声称已发布至 MCP Registry:

curl -f "https://registry.modelcontextprotocol.io/v0/servers/com.printyourduck%2Fquote/versions"

标记版本前,请在 GitHub 的软件包设置中将 GHCR 软件包设为公开。如果 ghcr.io/printyourduck/printyourduck-mcp 仍为私有,发布工作流会在发布 npm 前失败,因为公开发布的软件包必须允许匿名拉取。

只有在将软件包可见性设为公开并运行以下命令后,才能声称 OCI/容器可安装:

VERSION="$(node -p "require('./package.json').version")"
DOCKER_CONFIG="$(mktemp -d)" docker manifest inspect "ghcr.io/printyourduck/printyourduck-mcp:${VERSION}"

贡献

请参阅 CONTRIBUTING.md。适合作为入门贡献的领域包括客户端设置文档、路径安全加固、MCP 元数据安全、软件包发布检查,以及可公开的示例。

如需报告安全问题,请参阅 SECURITY.md。请勿在公开问题中包含密钥、客户文件、私有文件引用、供应商/成本/利润详情或仪表板截图。

评论

支持 Markdown

第一次接触 MCP?

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

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