mcpField
S
ShipMyForm

ShipMyForm

VerifiedFeaturedRemote
shipmyform.comDeveloper Tools0Updated 5w ago

About ShipMyForm

ShipMyForm's JavaScript libraries submit static-site forms to its hosted backend, with bindings for React, Vue, Svelte, Solid, and Astro. They provide typed results and client-side support for abuse-screening mechanisms.

Key features

  1. 01Framework-agnostic submission client
  2. 02React, Vue, Svelte, Solid, and Astro bindings
  3. 03Typed submission results
  4. 04Honeypot and Turnstile token support
  5. 05Optional signed time-trap token

Use cases

  1. 01Submit a static-site contact form
  2. 02Add form submission to a React app
  3. 03Send form data from a Svelte or Vue site
  4. 04Pass a Turnstile token with a submission

Configuration

Remote servers need no local install. Pick your client, then copy the config or install in one click.

Endpointhttps://shipmyform.com/api/mcp
Copy install command
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.

All endpoints
Streamable HTTPhttps://shipmyform.com/api/mcpAuth required

Tools

29
ParameterTypeRequiredDescription
emailstringYesThe user's email address. Ask for it; never invent one.
workspaceNamestringNo
agentstringNoYour name, e.g. 'Claude Code', shown in the verification email.
presetenumNoNamed scope bundle: full (everything), wiring (forms only, no submission access), readonly, triagefull | wiring | readonly | triage
scopesarrayNoExplicit scopes, instead of a preset. Ignored where it would exceed the calling key's own scopes.

Details

From the project README

shipmyform-js

npm ci license

Client libraries for submitting forms to ShipMyForm over fetch, with typed results and framework bindings.

PackageUse
@shipmyform/coreFramework-agnostic client and progressive enhancement
@shipmyform/reactuseSubmit hook
@shipmyform/vueuseSubmit composable
@shipmyform/sveltestore and use:shipmyform action
@shipmyform/solidcreateSubmit primitive
@shipmyform/astro<ShipMyForm> component

Quick start

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>
  )
}

Abuse protection

ShipMyForm's endpoint is public and cross-origin, so there is no CSRF token to fetch. Requests are screened by an origin allowlist, a honeypot field (_gotcha), an optional Cloudflare Turnstile token, and rate limiting. The client keeps the honeypot empty, forwards a Turnstile token when you pass one, and can fetch a signed time-trap token through an optional tokenProvider.

Releasing

Published with Changesets. Include one in your PR:

pnpm changeset

Merging to main opens a "Version Packages" PR; merging that bumps versions and publishes to npm.

License

MIT

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.