Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者による説明(英語の原文)
Evite for Claude — list events, guest lists & RSVPs, RSVP, message guests, and create/edit events
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
EVITE_EMAIL, EVITE_PASSWORD, EVITE_SESSION_COOKIE, EVITE_SESSION_CACHE, EVITE_SESSION_FILE, EVITE_DISABLE_FETCHPROXY, EVITE_UPLOAD_DIR, FETCHPROXY_WS_PORT, FETCHPROXY_WS_HOST, FETCHPROXY_IDENTITY_DIR「秘密」と表示された値は、あなたのアカウントの鍵です。絶対に人に教えたり、チャットに貼り付けたりしないでください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"evite": {
"command": "npx",
"args": [
"-y",
"evite-mcp"
],
"env": {
"EVITE_EMAIL": "your-value",
"EVITE_PASSWORD": "your-value",
"EVITE_SESSION_COOKIE": "your-value",
"EVITE_SESSION_CACHE": "your-value",
"EVITE_SESSION_FILE": "your-value",
"EVITE_DISABLE_FETCHPROXY": "your-value",
"EVITE_UPLOAD_DIR": "your-value",
"FETCHPROXY_WS_PORT": "your-value",
"FETCHPROXY_WS_HOST": "your-value",
"FETCHPROXY_IDENTITY_DIR": "your-value"
}
}
}
}ターミナルでこれを実行します
claude mcp add evite --env EVITE_EMAIL=your-value --env EVITE_PASSWORD=your-value --env EVITE_SESSION_COOKIE=your-value --env EVITE_SESSION_CACHE=your-value --env EVITE_SESSION_FILE=your-value --env EVITE_DISABLE_FETCHPROXY=your-value --env EVITE_UPLOAD_DIR=your-value --env FETCHPROXY_WS_PORT=your-value --env FETCHPROXY_WS_HOST=your-value --env FETCHPROXY_IDENTITY_DIR=your-value -- npx -y evite-mcp動かす前に、空欄の値を入力してください。
プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"evite": {
"command": "npx",
"args": [
"-y",
"evite-mcp"
],
"env": {
"EVITE_EMAIL": "your-value",
"EVITE_PASSWORD": "your-value",
"EVITE_SESSION_COOKIE": "your-value",
"EVITE_SESSION_CACHE": "your-value",
"EVITE_SESSION_FILE": "your-value",
"EVITE_DISABLE_FETCHPROXY": "your-value",
"EVITE_UPLOAD_DIR": "your-value",
"FETCHPROXY_WS_PORT": "your-value",
"FETCHPROXY_WS_HOST": "your-value",
"FETCHPROXY_IDENTITY_DIR": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"evite": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"evite-mcp"
],
"env": {
"EVITE_EMAIL": "your-value",
"EVITE_PASSWORD": "your-value",
"EVITE_SESSION_COOKIE": "your-value",
"EVITE_SESSION_CACHE": "your-value",
"EVITE_SESSION_FILE": "your-value",
"EVITE_DISABLE_FETCHPROXY": "your-value",
"EVITE_UPLOAD_DIR": "your-value",
"FETCHPROXY_WS_PORT": "your-value",
"FETCHPROXY_WS_HOST": "your-value",
"FETCHPROXY_IDENTITY_DIR": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
EVITE_EMAIL envEVITE_SESSION_CACHE envEVITE_SESSION_FILE envEVITE_DISABLE_FETCHPROXY envEVITE_UPLOAD_DIR envFETCHPROXY_WS_PORT envFETCHPROXY_WS_HOST envFETCHPROXY_IDENTITY_DIR envこの設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント chrischall で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
入力が必要なもの:EVITE_PASSWORD, EVITE_SESSION_COOKIE
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(1.4.0)がレジストリに届いたのは一昨日です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.jsも必要です。
同じカテゴリには:Spec Driven Development, Remote Desktop Commander, Dialyne
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
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.
Real phone calls in France for AI agents: dial +33 numbers, menus, hold, AI disclosure.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
A Model Context Protocol server for Evite — read and act on your events as both guest (invitations received) and host (events you created): list events, view guest lists & RSVP tallies, RSVP, message guests, and create/edit events. Built on @chrischall/mcp-utils.
Status: read + write tools live. The five read tools work against Evite's internal API, authenticating from email/password (tier-1,
POST /ajax_login), a raw cookie env var, or a signed-in browser tab (fetchproxy bootstrap). The thirteen write tools ask you to confirm first — nothing is sent until you approve (see Confirmations) — and their endpoints are live-verified (seedocs/EVITE-API.md); a couple of request *bodies* are still assumed rather than captured (#3).
Six read tools (all read-only), thirteen confirmed write tools, evite_upload_slots (read-only: upload links for photos on the hosted connector), plus evite_healthcheck:
| Tool | Endpoint | Returns |
|---|---|---|
evite_list_events | GET /services/events/v1/ | your events + a totals breakdown (filterBy = all/host/others, repeatable status, offset/numResults paging) |
evite_get_event | GET /services/event/v1/{id} | single-event detail (event, settings, location) |
evite_list_guests | GET /services/event/v1/{id}/guests/ | the guest list + RSVP responses (delivery status, views, short links) |
evite_rsvp_summary | (derived from guests) | just the RSVP summary (yes/no/maybe/noReply + head counts) |
evite_list_messages | GET /services/event/v1/{id}/posts/ | the event's Messages thread |
evite_list_templates | scrapes /invites/{category}/ | invitation template slugs (the template_name evite_create_event needs) + display names |
Every write tool asks you to confirm before it sends anything. A client that can show a confirmation prompt (Claude Code) shows one with the exact values that would be sent (unless MCP_CONFIRM_ELICITATION=off). Elsewhere (claude.ai, Claude Desktop) the first call performs no write (at most a read-only lookup — e.g. evite_update_guest reads the draft guest list to build an exact preview) and returns that preview plus a confirmToken; only a repeat call with the token performs the write. The token is single-use, expires, and is bound to the tool and the exact values — change anything and it is refused (DRAFT_CHANGED) with a fresh preview. See Confirmations. Endpoints are verified; the CSRF token (X-CSRFToken, read fresh per request as it rotates) is attached centrally.
| Tool | Endpoint | Action |
|---|---|---|
evite_rsvp | PUT /services/event/v1/{id}/guests/{guestId} | RSVP for a guest (response + adult/kid head counts + optional note) |
evite_send_message | POST /tsunami/v1/services/event/{id}/guest/{gid}/messages | send a private message to one guest (body assumed) |
evite_broadcast | POST /tsunami/v1/services/event/{id}/broadcast/ | broadcast a message to whole RSVP segments (virtual_groups) at once |
evite_upload_photo | POST …/photos/v1/{id}/upload/request/ → GCS → finish → shared-gallery | upload a photo to the event's shared photo album (4-step GCS signed upload) — from a local path, inline base64, or an upload-slot blob_key (see Photo uploads) |
evite_create_event | POST /services/event/v1/ ({event:{…}}) | create an event draft (needs template_name; the API 500s even on success) |
evite_update_event | PATCH /services/event/v1/{id} ({event:{…}}) | edit an event (only the fields you pass change) |
evite_add_guest | POST /ajax/event/{id}/guestlist/draft/ | add guests to the draft (un-sent) list — [{name,email}] |
evite_update_guest | PATCH /ajax/event/{id}/guestlist/draft/ | edit a draft guest's name/email/phone |
evite_remove_guest | DELETE /ajax/event/{id}/guestlist/draft/{gid} | remove a draft guest |
evite_send | POST /services/event/v1/{id}/send/ | "Send now" — emails the ready-to-send guests |
evite_cancel_event | POST …/actions/cancel/ | cancel an event / delete a draft (destructive; reversible) |
evite_reinstate_event | POST …/actions/reinstate/ | reinstate a cancelled event |
evite_duplicate_event | GET /plus/create/{id}/copy/ (→302) | copy an event into a fresh draft; returns the new event id |
The authoring flow is evite_create_event → evite_add_guest → evite_send. evite_send, evite_send_message, evite_broadcast, and evite_cancel_event have real-world effects (emails / cancellation notices), so their confirmation matters.
| variable | default | |
|---|---|---|
MCP_CONFIRM_MODE | ask-user | What a write does on a client that cannot show a confirmation prompt (claude.ai, Claude Desktop). ask-user: two steps — the first call writes nothing and returns a preview plus a token, and the model must get your approval in chat before calling again with it. auto: the same two steps, but the model may use the token after reviewing the preview itself. refuse: writes are refused on such clients. A client that can show prompts (Claude Code) always gets the real prompt, unless MCP_CONFIRM_ELICITATION=off. An unrecognised value is treated as refuse. |
MCP_CONFIRM_ELICITATION | on | off never shows a confirmation prompt, so every client gets the MCP_CONFIRM_MODE behaviour. Set it for a client that says it can show prompts but never does (the write hangs — opencode 2.0.x). Any other value is treated as on, with a warning on stderr. |
MCP_CONFIRM_TTL_SECONDS | 600 | How long a token stays valid. |
MCP_CONFIRM_SECRET | random per process | Signing key; set it only if tokens must survive a server restart. |
evite_upload_photo takes the image as exactly one of three inputs (JPEG/PNG/GIF/WebP/HEIC, max 20 MB; the bytes must really be that image type, whatever the name says):
EVITE_UPLOAD_DIR (below).{ filename, content_base64 }. Works anywhere; meant for a small photo, since every byte rides inside the tool call.path is refused there with directions. Instead, call evite_upload_slots with the filenames; each slot has a signed uploadUrl and a ready curl command that PUTs the file with the exact Content-Type. Then pass the slot's blobKey as blob_key. The upload is read on the preview and again on confirm, and its SHA-256 is bound into the confirmation, so a file replaced in between is refused (DRAFT_CHANGED). It is deleted only after Evite accepts the photo (the result's blob says whether that delete worked). If the upload fails it is kept, so a retry can reuse the same blob_key. evite_upload_slots refuses on a local install, which has no blob store.| variable | default | |
|---|---|---|
EVITE_UPLOAD_DIR | ~/Downloads/evite-mcp | The directories evite_upload_photo may read from — one or more, separated by the platform path delimiter (: on macOS/Linux, ; on Windows); ~ is allowed. A relative path is resolved against the first one. A path outside them (symlinks included), or a hidden file or directory inside them, is refused before the file is even looked at. Put photos to upload in ~/Downloads/evite-mcp, or point this elsewhere. |
Fetchproxy-archetype MCP. Evite has no public API, so the server calls Evite's *internal* /services/ web API using your session. src/auth.ts resolves that session in priority order:
https://www.evite.com/ajax_login, then build the session from the response Set-Cookie jar (x-evite-session, evtsession, csrftoken, x-evite-features). No browser bridge, no hand-copied cookie. Both vars must be set, or the resolver falls through. *(Live.)*cookie: header copied from a signed-in evite.com tab (or set in CI). Used verbatim. *(Live.)*x-evite-session, evtsession, x-evite-features, csrftoken) from a signed-in evite.com browser tab via @fetchproxy/bootstrap, which needs the ContextMint Bridge browser extension (Chrome: load the chrome zip from the releases page unpacked. Safari isn't available yet — it will ship inside the ContextMint app, which has no public download — so use Chrome for now). ContextMint Bridge is the fetchproxy browser extension under its new name, from the same maintainer — fetchproxy's own README points to it. Its source is public at nullnet-app/contextmint-bridge: build it yourself, or check a release zip against the .sha256 file published beside it (shasum -a 256 -c contextmint-bridge-chrome- .zip.sha256). Bootstrap runs once; every API call then goes out via plain Node fetch() with the cookies attached. Opt out with EVITE_DISABLE_FETCHPROXY=1. *(Live.)*One tier is intentionally deferred (the resolver is shaped to slot it in):
fetch trips a wall; not observed during discovery.The thirteen write tools (rsvp, add/update/remove-guest, send, send-message, broadcast, upload-photo, create/update/cancel/reinstate/duplicate event) ask you to confirm first (a prompt, or a preview + single-use confirmToken; see Confirmations). The single private client.write() helper attaches the CSRF token via one centralized header (CSRF_HEADER = X-CSRFToken; the csrftoken cookie rotates mid-session, so it's read fresh per request). Endpoints span three bases — REST /services/…, the legacy /ajax/event/{id}/… guest list, and the /tsunami/… messaging service — all live-verified; a couple of request bodies remain assumed (#3).
npm install # resolves @chrischall/mcp-utils from a local tarball (see issue #4)
npm run build npm test
docs/superpowers/specs/2026-05-31-evite-mcp-design.mddocs/superpowers/plans/2026-05-31-evite-mcp-scaffold-and-spike.mddocs/superpowers/plans/2026-05-31-evite-mcp-auth-and-reads.mddocs/EVITE-API.mdOpen work: #3 — write endpoints + CSRF are now live-verified; only a couple of request *bodies* (send / send-message) remain assumed. #4 tracks publishing the shared lib. (Discovery #1, tier-1 email/password login #2, and the read tools are done.)
MIT