关于 ShipMyForm
ShipMyForm 的 JavaScript 库可将静态网站表单提交到其托管后端,并提供 React、Vue、Svelte、Solid 和 Astro 绑定。库提供类型化结果,并支持客户端配合滥用防护机制。
主要功能
- 01与框架无关的提交客户端
- 02React、Vue、Svelte、Solid 和 Astro 绑定
- 03类型化提交结果
- 04支持蜜罐和 Turnstile 令牌
- 05可选的签名时间陷阱令牌
适用场景
- 01提交静态网站联系表单
- 02在 React 应用中添加表单提交
- 03从 Svelte 或 Vue 网站发送表单数据
- 04随提交请求传递 Turnstile 令牌
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
服务地址
https://shipmyform.com/api/mcp一键复制安装命令
Claude CodeTerminal
claude mcp add --transport http shipmyform https://shipmyform.com/api/mcpCursor.cursor/mcp.json
{"mcpServers":{"shipmyform":{"type":"http","url":"https://shipmyform.com/api/mcp"}}}在 Cursor 中打开VS Code.vscode/mcp.json
{"servers":{"shipmyform":{"type":"http","url":"https://shipmyform.com/api/mcp"}}}在 VS Code 中打开Claude Desktopclaude_desktop_config.json
{"mcpServers":{"shipmyform":{"type":"http","url":"https://shipmyform.com/api/mcp"}}}Windsurf~/.codeium/windsurf/mcp_config.json
{"mcpServers":{"shipmyform":{"serverUrl":"https://shipmyform.com/api/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
全部服务地址
Streamable HTTP
https://shipmyform.com/api/mcp需要授权工具
29| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| string | 是 | 用户的电子邮件地址。请询问用户;切勿自行编造。 | |
| workspaceName | string | 否 | |
| agent | string | 否 | 你的名称,例如 'Claude Code',会显示在验证邮件中。 |
| preset | enum | 否 | 命名的权限范围组合:full(全部)、wiring(仅表单,无提交访问权限)、readonly、triagefull | wiring | readonly | triage |
| scopes | array | 否 | 显式指定权限范围,而不是使用预设值。如果超出调用密钥自身的权限范围,则会忽略。 |
详细介绍
shipmyform-js
用于通过 fetch 向 ShipMyForm 提交表单的客户端库,提供类型化结果和框架绑定。
| Package | 用途 |
|---|---|
@shipmyform/core | 与框架无关的客户端和渐进增强 |
@shipmyform/react | useSubmit hook |
@shipmyform/vue | useSubmit 组合式函数 |
@shipmyform/svelte | store 和 use:shipmyform action |
@shipmyform/solid | createSubmit 原语 |
@shipmyform/astro | <ShipMyForm> 组件 |
快速开始
import { createClient } from '@shipmyform/core'
const form = createClient({ formId: 'YOUR_FORM_ID' })
const result = await form.submit({ email: '[email protected]', message: 'Hello' })
if (!result.ok) console.error(result.error, result.message)
React:
import { useSubmit } from '@shipmyform/react'
function Contact() {
const { submit, submitting, succeeded, error } = useSubmit({ formId: 'YOUR_FORM_ID' })
if (succeeded) return <p>Thanks!</p>
return (
<form onSubmit={(e) => (e.preventDefault(), submit(e.currentTarget))}>
<input name="email" type="email" required />
<textarea name="message" required />
<button disabled={submitting}>Send</button>
{error && <p>{error.message}</p>}
</form>
)
}
滥用防护
ShipMyForm 的端点是公开的,且支持跨源请求,因此无需获取 CSRF 令牌。请求会通过来源允许列表、蜜罐字段(_gotcha)、可选的 Cloudflare Turnstile 令牌和速率限制进行筛查。客户端会将蜜罐字段留空,在你传入 Turnstile 令牌时转发该令牌,还可以通过可选的 tokenProvider 获取签名的时间陷阱令牌。
发布
使用 Changesets 发布。在你的 PR 中添加一个 changeset:
pnpm changeset
合并到 main 后,会创建一个“Version Packages”PR;合并该 PR 后会更新版本并发布到 npm。
许可证
MIT
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。