Agent-Native Calendar
Agent-Native Google Calendar - manage events, sync, and public booking
作者による説明(英語の原文)
Your recipes as plain files in your own Google Drive, searchable by your AI assistant.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
ウェブ、デスクトップ、モバイルのClaudeで使えます:
https://chowdown.apps.mrida.ng/mcpターミナルでこれを実行します
claude mcp add --transport http chowdown https://chowdown.apps.mrida.ng/mcpプロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"chowdown": {
"url": "https://chowdown.apps.mrida.ng/mcp"
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"chowdown": {
"type": "http",
"url": "https://chowdown.apps.mrida.ng/mcp"
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
ChatGPTがつなげるのは、インターネット上のサーバーだけです:
https://chowdown.apps.mrida.ng/mcpメニューの名前は、プランや時期によって少し違うことがあります。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
このサーバーのツール一覧はまだ読み取っていません。エンドポイントは順番にチェックしています。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント mridang で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
まだチェックしていません。エンドポイントは順番にチェックしています
まだチェックしていません。エンドポイントは順番にチェックしています
まだチェックしていません。エンドポイントをチェックするときにツール一覧を読み取ります
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
作者のクラウドで動きます。インストール不要でインターネット経由でつながりますが、送った内容は作者のサーバーを通ります。
GitHubリポジトリの最終更新は–、最新バージョン(0.1.0)がレジストリに届いたのは14 日前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。URLでつながるので、リモートMCPサーバーに対応したアプリ(開発者モードのChatGPTなど)でも使えます。
同じカテゴリには:Agent-Native Calendar, Excel MCP Server, MCP Server for Excel
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
Agent-Native Google Calendar - manage events, sync, and public booking
Create and edit Excel files with AI: charts, PivotTables, formulas. No Excel needed.
Excel automation for AI - Sheets, Power Query, DAX, VBA, Tables, Ranges and more. Windows only.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
A recipe app for Cooklang .cook files, kept in the person's own Google Drive. Built as a Next.js app on Cloudflare Workers (OpenNext).
The Cloudflare Worker does the real work: Google sign-in, a separate "Connect Google Drive" step, syncing the Recipes folder into a D1 cache, the REST API, the MCP server (with its OAuth 2.1 endpoints) and the model calls for tagging and "find similar" (Workers AI). Drive stays the source of truth; D1 is a cache so pages render in one round trip.
@opennextjs/cloudflare)@mridang/eslint-defaults for linting@cooklang/cooklang-ts for parsingSigning in and connecting Google Drive are two separate steps, each with its own Google consent screen:
openid email profile). It creates the account and a signed session cookie, and nothing else.GET /auth/drive) adds the drive.file scope and an offline refresh token, then creates the app-managed "Recipes" folder. drive.file is non-sensitive and only reaches files Chowdown created, so there is no Google verification and nothing is published to the Marketplace.Until Drive is connected a person can look around and see anything already cached, but anything that reads or writes their Drive files is refused (the REST API answers 409 /problems/drive-not-connected, MCP tools return an error result that says what to do).
Set up in Google Cloud:
.../auth/drive.file scope, add your Gmail as a test user (or publish to production — still review-free).http://localhost:3737/auth/callback (dev)https://chowdown.apps.mrida.ng/auth/callback (prod)Secrets, in .env locally and wrangler secret put in production (see Deploy):
GOOGLE_OAUTH_CLIENT_ID=....apps.googleusercontent.com
GOOGLE_OAUTH_CLIENT_SECRET=... SESSION_SECRET=... # openssl rand -base64 32 — signs the session cookie TOKEN_ENCRYPTION_KEY=... # openssl rand -base64 32 — seals Drive refresh tokens
APP_URL is optional (the public origin, if it can't be read from the request).
Chowdown is an MCP server at https:// /mcp, protected with OAuth 2.1 as the MCP authorization spec describes. Add that URL as a connector in ChatGPT, Claude or any MCP client, sign in with Google when asked, and approve. There is no secret to copy. The person needs to have connected Google Drive (see above); until then the assistant is told so instead of being shown an empty collection.
Chowdown is listed in the MCP Registry as io.github.mridang/chowdown; the listing is server.json in this repository.
recipes:read (browse and search) and recipes:write (add, edit, tag, favourite, annotate). An assistant can be granted read only.browse_recipes ("I feel like cooking Indian", "something vegetarian under 30 minutes"), recipes_from_ingredients ("I have 3 tomatoes and 400 g of pasta" returns what can be cooked now and what is a couple of ingredients short) and list_filters. Every recipe is classed as vegan, vegetarian, pescatarian or non-vegetarian from its ingredients, so results can be grouped and filtered by diet; existing recipes get this without being re-tagged./.well-known/oauth-protected-resource/mcp (RFC 9728) and /.well-known/oauth-authorization-server (RFC 8414)./oauth/register, RFC 7591). Public clients only, PKCE S256 required.POST /oauth/revoke.The app's data is available as a REST API under /api, designed to the Zalando RESTful API guidelines (plural nouns, snake_case JSON, RFC 9457 problem details, cursor pagination, JSON Merge Patch, ETag / If-Match, X-Flow-ID). The deliberate departures are the /api prefix and path segments without hyphens (recipes/imports, not recipe-imports).
| Resource | Methods |
|---|---|
/api/recipes, /api/recipes/{id} | list, create · read, replace, patch, delete |
/api/recipes/{id}/notes[/{note_id}] | list, create · read, replace, delete |
/api/recipes/{id}/similar | list |
/api/recipes/suggestions?q= | list |
/api/recipes/imports[/{id}] | list, create · read, delete |
/api/users/self | read, patch, delete |
/api/users/self/favourites[/{recipe_id}] | list · read, put, delete |
/api/users/self/connections[/{grant_id}] | list · delete |
/api/sessions | delete (sign out everywhere) |
/api/sessions/self | delete (sign out) |
Auth is the signed session cookie. Writes must come from the app's own pages (cross-site writes get 403). Signing in does not connect Google Drive: writes and /api/recipes/suggestions answer 409 /problems/drive-not-connected until the person has connected it in the browser. Everything that is not a resource stays out of the API: MCP (/mcp), OAuth (/oauth/*, /.well-known/*), the Google sign-in and Drive-connection redirects (/auth/*), the health check (/health), the image proxy (/img), CSP reports (/csp/reports).
openapi.json at the root of the repository describes exactly the routes under src/app/api, nothing else. test/openapi.test.ts fails when the two drift: every exported METHOD /path must be an operation and the other way round, a public operation must answer without a session and a secured one must answer 401, bad input must answer a documented status as application/problem+json, and good answers must fit their schemas.
Every operation can be called by one ordinary signed-in account; there is no administrator role. Sign in with Google in a browser, connect Google Drive once (until then the operations that read or write recipe files answer 409), and copy the value of the chowdown_session cookie from the browser's developer tools into an environment variable. Then run, against a local or deployed instance:
export CHOWDOWN_SESSION='<the cookie value>' # a credential: keep it out of logs and files
schemathesis run openapi.json --url https://your-instance.example \ --header "Cookie: chowdown_session=$CHOWDOWN_SESSION" \ --exclude-operation-id deleteCurrentUser \ --exclude-operation-id deleteSessions
Leave the last two operations out of a long run: they delete the account and end every session, so the account is gone after the first call. The requests Schemathesis generates carry no Sec-Fetch-Site or Origin header, which the cross-site check lets through; they count against the platform's rate limits and the daily allowances of importing and suggesting, so expect some 429s with Retry-After.
All commands go through devbox, which pins Node 24:
devbox run -- npx wrangler login # once: the AI binding is remote-only in dev
devbox run -- npm run migrate # apply D1 migrations to the local database devbox run -- npm run build:views # once, and after changing src/views: the generated widget pages devbox run -- npm run dev # next dev on http://localhost:3737 devbox run -- npm test # jest, including the MCP conformance suite devbox run -- npm run lint # eslint devbox run -- npm run typecheck # tsc --noEmit devbox run -- npm run format # prettier
Put the secrets listed under Google setup in .env (gitignored) before signing in. http://localhost:3737 needs no certificate, because Google OAuth allows http for localhost: add http://localhost:3737/auth/callback to the OAuth client's redirect URIs.
# one-time per environment
devbox run -- npx wrangler d1 create chowdown-db # paste the id into wrangler.jsonc devbox run -- npx wrangler d1 migrations apply DB --remote devbox run -- npx wrangler secret put GOOGLE_OAUTH_CLIENT_ID devbox run -- npx wrangler secret put GOOGLE_OAUTH_CLIENT_SECRET devbox run -- npx wrangler secret put SESSION_SECRET devbox run -- npx wrangler secret put TOKEN_ENCRYPTION_KEY
devbox run -- npm run deploy # opennextjs-cloudflare build && wrangler deploy
The custom domain chowdown.apps.mrida.ng requires the apps.mrida.ng zone on the Cloudflare account, and the Worker needs the AI and Images bindings (declared in wrangler.jsonc).
GitHub Actions (deploy.yml) applies the D1 migrations and deploys on pushes to master. It needs a CLOUDFLARE_API_TOKEN secret and a CLOUDFLARE_ACCOUNT_ID variable in the production environment.
Settings. SESSION_SECRET signs the session cookie and TOKEN_ENCRYPTION_KEY seals Drive refresh tokens; both are Worker secrets. APP_URL is the public origin: set it in production, because when it is missing the origin is read from the request's Host header. MCP_ALLOWED_ORIGINS (comma-separated, exact origins such as chrome-extension://abcdef) lets a browser-based or webview MCP client call /mcp; leave it unset for assistants that run on a server.
Rate limits. Three layers, cheapest first:
ratelimits in wrangler.jsonc, thirteen of them), checked in the Worker before the app runs. Which request counts against which binding is in src/lib/core/http/edge-limits.ts, and a test keeps the two in step. They are per Cloudflare location and eventually consistent: a cost guard that refuses floods, not an accounting system. Optionally add one Cloudflare WAF rate-limiting rule on top (dashboard: Security, WAF, Rate limiting rules) to stop a flood before the Worker is invoked at all.src/lib/util/daily-budget.ts).A refused call answers 429 with Retry-After.
Checks. devbox run -- npm test runs the official MCP conformance suite against the server's request handling for 2026-07-28 and 2025-11-25 (test/e2e/mcp.e2e.test.ts, which also lists the known gaps with their reasons). MCP 2024-11-05 clients work over streamable HTTP only (no HTTP+SSE transport is hosted).
Skills are folders an AI agent can load to carry out a task end to end. They follow the op
冒頭だけを表示しています。続きはリポジトリで読めます