关于 SpacePost
SpacePost 是供 AI 助手调用 SpacePost 事务邮件 API 的 MCP 服务。其工具由 OpenAPI 文档生成,并支持托管或本地连接,以及按 API 区域和权限筛选工具。
主要功能
- 01为 API 端点提供对应工具
- 02发送事务邮件
- 03管理域名、联系人和 Webhook
- 04按 API 区域筛选工具
- 05按密钥权限限制工具
适用场景
- 01通过助手发送事务邮件
- 02管理邮件域名和联系人
- 03处理 Webhook 和受众
- 04将可用工具限制为只读操作
MCP 相关
将 SpacePost API 操作作为 MCP 工具开放,工具根据 OpenAPI 文档生成。客户端可连接托管的 Streamable HTTP 端点,也可通过 stdio 在本地运行软件包。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://api.spacepost.dev/mcpclaude mcp add --transport http dev-spacepost https://api.spacepost.dev/mcp{"mcpServers":{"dev-spacepost":{"type":"http","url":"https://api.spacepost.dev/mcp"}}}在 Cursor 中打开{"servers":{"dev-spacepost":{"type":"http","url":"https://api.spacepost.dev/mcp"}}}在 VS Code 中打开{"mcpServers":{"dev-spacepost":{"type":"http","url":"https://api.spacepost.dev/mcp"}}}{"mcpServers":{"dev-spacepost":{"serverUrl":"https://api.spacepost.dev/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
https://api.spacepost.dev/mcp需要授权工具
46| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| after | string | 否 | 返回早于此 ID 的项目(下一页)。不能与 `before` 同时使用。 |
| limit | integer | 否 | 要返回的项目数。 |
| before | string | 否 | 返回早于此 ID 的项目(上一页)。不能与 `after` 一起使用。 |
详细介绍
@spacepost/mcp
一个 MCP 服务,为 AI 助手提供完整的 SpacePost API:根据 API 参考文档中的 OpenAPI 文档生成,每个端点对应一个工具。新的 API 功能会自动成为 MCP 工具。文档:https://docs.spacepost.dev/tools/mcp/
SpacePost 是一款兼容 Resend、基于 Amazon SES 的事务邮件 API(欧盟公司),提供 SMTP 中继 和此 MCP 服务。
有两种使用方式:
- 托管方式:
https://api.spacepost.dev/mcp(Streamable HTTP),使用Authorization: Bearer sp_live_...。无需安装。 - 本地方式(此软件包):
npx -y @spacepost/mcp,使用 stdio。规范已打包,因此可离线启动。
在 SpacePost 控制面板中创建 API 密钥。在官方 MCP Registry 中,该服务的名称为
dev.spacepost/mcp;在 npm 上的名称为
@spacepost/mcp。
配置
| 环境变量 | |
|---|---|
SPACEPOST_API_KEY | 必填。助手拥有与此密钥完全相同的权限(sending_access 密钥只能发送邮件)。 |
SPACEPOST_BASE_URL | 可选,默认值为 https://api.spacepost.dev |
SPACEPOST_DEFAULT_FROM | 可选发件人(例如 Acme <[email protected]>),在 send_email 未设置 from 时使用 |
SPACEPOST_READ_ONLY | true = --read-only |
SPACEPOST_TOOLSETS | = --toolsets |
SPACEPOST_PERMISSION | = --permission |
| 标志 | |
|---|---|
--read-only | 仅使用 GET 端点的工具 |
--toolsets a,b | 仅使用这些 API 区域(OpenAPI 标签):emails、domains、apikeys、webhooks、audiences、contacts、broadcasts、suppressions、tenants |
--permission sending_access | 仅使用仅发送密钥可用的工具(具有 x-permission: sending_access 的操作) |
--list-tools | 输出给定选项对应的工具,然后退出 |
--help、--version |
托管端点接受相同的选项作为查询参数:/mcp?read_only=true&toolsets=emails,domains。它会根据调用者的密钥确定权限筛选条件:sending_access 密钥在 tools/list 中只能看到发送工具。MCP 不会阻止其他工具;调用这些工具会向 API 发起请求,API 会像处理 REST 请求一样返回 restricted_api_key。
Claude Code
# hosted
claude mcp add --transport http spacepost https://api.spacepost.dev/mcp --header "Authorization: Bearer sp_live_..."
# local
claude mcp add spacepost -e SPACEPOST_API_KEY=sp_live_... -e SPACEPOST_DEFAULT_FROM="Acme <[email protected]>" -- npx -y @spacepost/mcp
Cursor(~/.cursor/mcp.json 或 .cursor/mcp.json)
{
"mcpServers": {
"spacepost": { "url": "https://api.spacepost.dev/mcp", "headers": { "Authorization": "Bearer sp_live_..." } }
}
}
Claude Desktop(claude_desktop_config.json)
{
"mcpServers": {
"spacepost": {
"command": "npx",
"args": ["-y", "@spacepost/mcp"],
"env": { "SPACEPOST_API_KEY": "sp_live_...", "SPACEPOST_DEFAULT_FROM": "Acme <[email protected]>" }
}
}
}
Docker
docker build -t spacepost-mcp .
docker run -i --rm -e SPACEPOST_API_KEY=sp_live_... spacepost-mcp
此镜像从本仓库的源代码构建服务,并以非 root 用户通过 stdio 运行。密钥在运行时从环境变量读取,不会写入镜像。
工具的构建方式
- 名称:
operationId的 snake_case 形式(sendEmail→send_email,getBroadcastReadiness→get_broadcast_readiness)。0.1 版的 12 个手写工具保留原名。 - 输入:一个扁平的 JSON Schema 对象,包含路径参数(snake_case:
audience_id、id_or_email)、查询参数、标头参数(Idempotency-Key→idempotency_key)以及顶层 JSON 请求体字段。与参数名称冲突的请求体字段会以body_<field>的形式公开;非对象请求体(批处理数组)则以body的形式公开。$ref/allOf会内联;枚举、格式、模式、边界、默认值和描述均予以保留。 - 描述:规范中的摘要和描述、精选补充内容、所需权限以及 HTTP 路由。
- 注解:GET →
readOnlyHint;DELETE →destructiveHint;GET/PUT/DELETE →idempotentHint;可按操作覆盖。 - 结果:API 的 JSON(文本 +
structuredContent)。错误:返回isError: true,并包含 Resend 风格的{ statusCode, name, message }错误正文和提示。
调整工具
工具遵循 API 的 OpenAPI 文档。操作包含以下扩展(由 SpacePost 在规范中设置):
x-mcp: { hidden: false, description: "Extra guidance for agents.", destructive: true, idempotent: true, openWorld: true }
x-permission: sending_access # only on operations a sending_access key may call
src/overlay.ts(按 operationId 索引)保存少量精选描述,内容侧重于如何更好地使用工具,而非 API 本身;若同一字段在两处都有设置,则以 x-mcp 为准。
开发
bun install
bun run build # dist/index.js, spec included
bun test
bun run generate # refresh src/generated/openapi.json from https://api.spacepost.dev/openapi.json
欢迎提交问题和拉取请求。安全问题请发送至:[email protected]。
0.2 版的破坏性变更:结果改为原始 API JSON,不再是简短的文本摘要;verify_domain 返回验证响应(如需获取新状态,请调用 get_domain)。
许可证
MIT,详见 LICENSE。© Studio 404 d.o.o.
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。