Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Beschreibung vom Entwickler (englisches Original)
Create signed Apple Wallet passes (.pkpass): boarding passes, tickets, coupons, store cards.
Diese drei werden nie zu einer Punktzahl zusammengefasst: Meinungen, Messungen und Beliebtheit sind verschiedene Dinge.
Für diesen Server haben wir noch keine Zusammenfassung in einfacher Sprache geschrieben. Unten stehen die Fakten, die wir aus der Registry gelesen haben.
Wähle die KI-App, die du nutzt, und kopiere die Einstellungen.
Du brauchst
Welche App nutzt du?
Wähle oben deine App. Wir merken sie uns, damit der Button beim nächsten Mal „In … installieren“ anzeigt.
Funktioniert in Claude im Web, auf dem Desktop und auf dem Handy:
https://walletmcppass.com/mcpFühre das in deinem Terminal aus
claude mcp add --transport http wallet https://walletmcppass.com/mcpIn .cursor/mcp.json in deinem Projekt oder in ~/.cursor/mcp.json einfügen
{
"mcpServers": {
"wallet": {
"url": "https://walletmcppass.com/mcp"
}
}
}Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.
In .vscode/mcp.json in deinem Projekt einfügen
{
"servers": {
"wallet": {
"type": "http",
"url": "https://walletmcppass.com/mcp"
}
}
}Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.
ChatGPT verbindet sich nur mit Servern im Internet:
https://walletmcppass.com/mcpMenünamen können sich je nach Tarif und mit der Zeit leicht unterscheiden.
Deine Auswahl bleibt in einem Cookie auf diesem Gerät; kein Konto nötig.
Diese Einstellungen werden aus dem Registry-Eintrag des Entwicklers erzeugt. Wenn in der README etwas anderes steht, folge der README.
Die Tool-Liste dieses Servers haben wir noch nicht gelesen; wir prüfen die Endpunkte reihum.
Wir prüfen Informationen, die jeder sehen kann; den Code haben wir nicht gelesen. Checks, die nicht zutreffen, werden nicht mitgezählt. · Geprüft am 6. Nov. 2026
Der Herausgeber (walletmcppass.com) ist nicht der Repo-Inhaber (arshwaraich); vielleicht hat jemand anderes ihn eingetragen
Dieses Repo haben wir noch nicht von GitHub gelesen
Dieses Repo haben wir noch nicht von GitHub gelesen
Noch nicht geprüft; wir prüfen die Endpunkte reihum
Noch nicht geprüft; wir prüfen die Endpunkte reihum
Noch nicht geprüft; wir lesen die Tool-Liste, wenn wir den Endpunkt prüfen
Verglichen mit allen aktiven Servern dieser Kategorie in der Registry. Sterne zählen nur, wenn dem Herausgeber das Repo gehört.
Er hat 0 von 1 zutreffenden Basischecks bestanden. Den Code haben wir nicht gelesen. Bevor du einen Schlüssel oder Token hinzufügst, sieh nach, welche Zugriffe der Server verlangt, und nutze einen Schlüssel, der nur die Berechtigungen hat, die du brauchst.
Die Registry nennt keinen erforderlichen Schlüssel, manche Server bitten dich aber bei der ersten Nutzung, dich anzumelden.
Er läuft in der Cloud des Entwicklers. Du verbindest dich übers Internet, ohne etwas zu installieren, aber was du sendest, läuft über die Server des Entwicklers.
Das GitHub-Repo wurde zuletzt – geändert, und die neueste Version (1.1.0) kam vor 21 Tagen in die Registry.
Apps, die MCP unterstützen, etwa Claude Desktop, Claude Code, Cursor und VS Code. Er verbindet sich per URL, also funktionieren auch Apps, die Remote-MCP-Server akzeptieren, zum Beispiel ChatGPT im Entwicklermodus.
In derselben Kategorie: Spec Driven Development, Remote Desktop Commander, Intervals MCP
Server derselben Kategorie von anderen Entwicklern, sortiert nach Sternen.
So liest du eine Karte:★ GitHub-SterneiDrei Säulen: Bewertungen · Checks · NutzungiAktualisiert = neueste Version in der Registry veröffentlichti
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Remote MCP server for intervals.icu run data and analysis
Unverändert aus dem Repo des Entwicklers übernommen. PopNx MCP hat den Inhalt weder geprüft noch empfiehlt es ihn. HTML, Bilder und Skripte wurden entfernt. Links führen von dieser Website weg.
Turn a PDF boarding pass, ticket, coupon or loyalty card into a signed Apple Wallet pass (.pkpass) from an AI assistant, with no Apple Developer account. wallet-mcp is the open-source server behind walletmcppass.com: an MCP server with two tools, create_wallet_pass and update_wallet_pass, and the same pass builder as a REST API.
| MCP endpoint | https://walletmcppass.com/mcp (Streamable HTTP) |
| REST API | POST https://walletmcppass.com/api/passes, PATCH .../api/passes/{serial} |
| Sign-in | None. No account or API key, just a contact email on each call |
| Price | Free for 30 calls (creates + updates) a day per IP address, 20 from 2026-11-18; past that $0.01 per call in USDC on Base, paid with x402 |
| Limits | 500 free calls a day in total; paid: 1,000 a day per IP, 10,000 in total; passes up to 10 MB |
| Pass types | Boarding pass, event ticket, coupon, store card, generic (+ iOS 27 poster layout) |
| Works with | Claude, ChatGPT, Codex, the OpenAI Responses API, Claude Code, any Streamable HTTP MCP client |
| Output | A download link, valid for 1 hour, that opens "Add to Apple Wallet" on an iPhone |
| Updates | Optional: updatable=True passes can be changed for 1 hour, or up to 30 days with updatable_hours, and installed copies refresh |
Claude (web, desktop and mobile; any plan, Free allows one custom connector): open Customize → Connectors, click + Add → Add custom connector, name it walletmcppass, paste https://walletmcppass.com/mcp, choose No sign in and click Add. In a chat, click + → Connectors and switch it on. Full steps.
ChatGPT: go to chatgpt.com/plugins, select + → Add custom MCP server, name it walletmcppass, enter https://walletmcppass.com/mcp under Connection, set authentication to none and select Create as a plugin. In a chat, type @ and pick walletmcppass. Availability depends on your plan and workspace settings. Full steps.
Codex
codex mcp add walletmcppass --url https://walletmcppass.com/mcp
Claude Code
claude mcp add --transport http walletmcppass https://walletmcppass.com/mcp
OpenAI Responses API
from openai import OpenAI
client = OpenAI() response = client.responses.create( model="gpt-6-astra", tools=[{ "type": "mcp", "server_label": "walletmcppass", "server_description": "Creates signed Apple Wallet passes.", "server_url": "https://walletmcppass.com/mcp", "require_approval": "never", }], input="Make an Apple Wallet coupon for 20% off at Harbor Café, valid until 31 December, with the QR code CAFE20.", ) print(response.output_text)
Any other MCP client: add a remote Streamable HTTP server at https://walletmcppass.com/mcp, with no headers. No MCP client? Use the REST API.
Then ask for a pass:
Give your assistant the airline's PDF or a screenshot and it builds a Wallet boarding pass. Boarding passes are built from your real airline-issued barcode: the pass carries the same barcode data as your PDF (usually a PDF417 or Aztec code holding an IATA BCBP string), which is what security and gate scanners read. The service doesn't issue tickets, check you in or contact airlines, and the pass won't receive gate changes. Assistants read a PDF's printed text reliably but can't always decode the barcode image; if yours can't, scan it with a barcode scanner app and paste the text.
Wallet in iOS 27 can scan a card or fill in a Standard, Membership or Event template on the iPhone, which covers a single simple card. wallet-mcp adds:
.pkpass file you can share, or add on an iPhone that isn't running iOS 27.walletmcppass.com is an independent project, not affiliated with Apple. Pass contents aren't written to the request log, and pass files are deleted when their link expires after 1 hour; the request log keeps only the time, IP address, pass style and organization name, plus the contact email and x402 status every call must send. Updatable passes are stored for their update window (1 hour by default, at most 30 days) and then deleted. Questions and bug reports: GitHub issues.
Building a .pkpass by hand means writing pass.json, generating icon/logo art, hashing every file into a manifest, signing it with an Apple Pass Type ID certificate, and zipping it up flat — a fiddly, easy-to-get-wrong process (see the "gotchas" below). This wraps that whole pipeline behind a single MCP tool call, so an LLM agent (or you, through one) can just ask for a pass.
One process, one port, four things on it:
/mcp — the create_wallet_pass tool.POST /api/passes — the same pass builder for non-MCP callers. It shares the rate limits and request log with the tool; each logged request records which one it came through (source = mcp or api)./ and /api/stats — request counts, success/error rate, recent activity, all read from a local SQLite log. The hosted instance doesn't expose these publicly./download/{token} — built passes are served with the correct application/vnd.apple.pkpass content type (required for Wallet to recognize the file) and expire after 1 hour, swept by file mtime so a crash/restart can't leak files.server.py MCPServer instance: the tool + custom HTTP routes (REST API, dashboard, stats, downloads)
pass_builder.py Builds pass.json per style, signs the manifest with openssl smime, zips the .pkpass image_gen.py Pillow-based icon/logo generation (colored square + initials / wordmark) db.py SQLite request log + per-IP and global daily rate limits dashboard.html Static dashboard page, polls /api/stats every 15s wallet-mcp.service Example systemd unit (Restart=on-failure, boots enabled)
create_wallet_passAnnotated with title: "Create Apple Wallet pass", readOnlyHint: false and destructiveHint: false: it only ever creates a new pass file.
style: "boardingPass" | "eventTicket" | "coupon" | "generic" | "storeCard"
organization_name, description # required logo_text, transit_type # transit_type only applies to boardingPass ("Air" default) barcode_message, barcode_format # format name or ordered list, e.g. ["EAN13", "Code128"]; omit message for no barcode
barcode_alt_text # human-readable text under the barcode background_color, foreground_color, label_color # hex "#1a1a19" or "rgb(26, 26, 25)" relevant_date, expiration_date # ISO 8601 locations # up to 10 of {latitude, longitude, altitude?, relevantText?}: show on the lock screen nearby max_distance # meters; can only shrink Wallet's default radius around each location voided # stamps the pass VOID primary_fields, secondary_fields, auxiliary_fields, header_fields, back_fields
serial_number # auto-generated UUID if omitted icon_color, icon_text, logo_color # control the auto-generated art icon_png_b64, logo_png_b64 # supply your own PNG instead of auto-generated art generate_logo # False = no logo image (e.g. when logo_text alone is enough)
poster # Poster Generic layout; style must be generic/storeCard/coupon (kept as fallback) footer_fields # up to 2, poster only background_png_b64 # poster background (1035x1515 px); gradient auto-generated if omitted featured_actions # up to 2 of {type, url}, e.g. {"type": "membershipBenefits", "url": "https://..."}
semantics # Apple SemanticTags dict, emitted as given; unknown keys and bad types rejected semantic_layout # boardingPass (airline, iOS 26+) -> semanticBoardingPass; eventTicket -> posterEventTicket
info_links # top-level event-guide / airline-page links: bagPolicyURL, changeSeatURL, ...
primary_logo_png_b64, secondary_logo_png_b64, strip_png_b64, thumbnail_png_b64, artwork_png_b64
Returns { download_url, expires_in_seconds, serial_number, pass_type_identifier }. The download link is valid for one hour. Open it in Safari on the iPhone; Wallet won't add a .pkpass handed over by another app. Google Wallet on Android imports the same file.
POST /api/passesThe JSON body takes exactly the tool's parameters above. The request model is generated from the same function signature, so the two can't drift apart. Unknown keys are rejected.
curl https://walletmcppass.com/api/passes \
-H 'Content-Type: application/json' \ -d '{"style": "generic", "organization_name": "Harbor Climbing Gym", "description": "Day pass", "contact_email": "you@yourcompany.com", "x402_ready": false, "primary_fields": [{"label": "Guest", "value": "Ada L."}], "barcode_message": "DAY-0042"}'
| Status | Body |
|---|---|
| 200 | Same as the tool: { download_url, expires_in_seconds, serial_number, pass_type_identifier } |
| 400 | {"error": "invalid request", "details": [...]} for a malformed body or wrong types; {"error": "..."} when the pass itself is invalid |
| 402 | Past a free limit (per-IP or global): an x402 PaymentRequired body (also base64'd in the PAYMENT-REQUIRED header). Retry with a payment, see below |
| 429 | {"error": "rate limit exceeded: ..."} or "service is at its daily request limit ..." — only when payments are off |
| 500 | {"error": "internal error building the pass"} |
As with the tool, bodies that fail schema validation are rejected before the rate limiter and aren't logged; pass-builder errors are logged and do count.
update_wallet_pass / PATCH /api/passes/{serial}Create the pass with updatable=True, and optionally updatable_hours (1 to 720, default 1) for how long it can be updated. The response adds updatable_until and an edit_token, a secret that is the only way to change that pass (no
Nur der Anfang wird gezeigt; den Rest findest du im Repo