Calends MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Calends MCP Serverwhat subscriptions renew next week?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Billing and payment history
Track what you pay, when it renews, and who owes you. Calends brings subscriptions, shared plans and prepaid balances into one private, single-owner ledger, with an optional read-only public page and AI access through MCP.
Flexible billing — monthly, yearly, custom cycles and lifetime purchases, with trials, intro prices, bonus periods, pauses, advance charging and cancellation deadlines.
Billing history — keep price, plan and region changes, gaps and overlapping subscriptions. See total spent, actual monthly cost and every charge.
Multiple currencies — historical exchange rates for past charges, current rates for forecasts, and your choice of display currency.
Balances and shared plans — track prepaid credit and gift cards, estimate when balances run out, and manage payments for friends. Shared plans have dated collection rules, member overrides, independent coverage periods, overdue tracking and exit refunds; people have private avatars and a separate account for each plan.
Reports and calendar — spending trends, cash vs. accrual, prepaid value, cancellation savings, subscription checkups and a shareable year in review. Includes month/year calendars and a private ICS feed.
Search — find Chinese names by full pinyin, initials or mixed syllables in the subscription list, command palette and pickers.
Renewal reminders — email, Telegram, Lark/Feishu, DingTalk, WeCom, Slack, Discord, Bark, ntfy, ServerChan and custom webhooks.
AI access — query and update your ledger from an MCP-compatible assistant, with scoped tokens and previews for write operations.
Import external ledgers — preview and import CSV files, ZIP backups and databases from Wallos and other services in your browser.
Storage and access — password and passkey sign-in, remote device sign-out, optional public sharing with server-side masking, JSON backup/restore and CSV import/export. Available in 14 languages.
Related MCP server: Wallos MCP
Quick start
Try the live demo to explore before deploying. It is shared by all visitors and resets daily; external notifications are disabled.
Open Calends at / and sign in at /login. After signing in, / redirects to your configured start page, defaulting to /overview. Public sharing is optional: enable it in Settings to make the read-only page available at /public. See routes and login redirects for details.
Cloudflare Workers
Use one-click deployment with Workers and D1, or deploy from source:
git clone https://github.com/imetn/calends
cd calends
npm ci
npx wrangler login
node scripts/wrangler.mjs secret put SETUP_TOKEN
npm run deployUse a long random string for SETUP_TOKEN. The deploy command builds the app, provisions D1 on first deployment and applies migrations. Open https://<your-worker>.workers.dev/, enter the token on the login page and set your password.
Docker
Run the prebuilt image directly:
docker run -d --name calends -p 8787:8787 -v calends-data:/data xizozhe/calends:latest
docker logs calendsOpen http://localhost:8787/ and use the setup token printed in the logs on the login page. The named volume calends-data persists SQLite data at /data. You can also use ghcr.io/imetn/calends:latest. For production, pin a version tag such as 1.9.0 instead of latest.
Alternatively, build from source with Compose. From a source checkout, Compose (in docker/) builds the included Dockerfile and starts the app:
cd docker
docker compose up -d --build
docker compose logs calendsThe Compose configuration persists SQLite data in a named volume mounted at /data. Building locally does not require a published Calends image or a Cloudflare account. See the Docker guide for image registries, upgrades and Compose options.
For public access, enable HTTPS through a reverse proxy and set TRUST_PROXY=1. Add a passkey after setup in Settings → Security.
See the self-hosting guide for custom domains, configuration, email reminders, subpath deployment and a prompt to delegate deployment to your AI agent.
AI & MCP
Ask “What renews next week?”, “How much did I spend this year?” or “Netflix went up to $17.99 from today.” Calends provides 32 tools over a stateless MCP endpoint at /mcp using Streamable HTTP.
On the AI access page (/connect), create a read-only or read/write token, then connect your client. Opening /mcp in a browser takes you to this page; MCP clients use the /mcp endpoint:
Claude Code
claude mcp add --transport http calends https://your-domain/mcp --header "Authorization: Bearer <token>"Codex
export CALENDS_TOKEN='<token>'
codex mcp add calends --url https://your-domain/mcp --bearer-token-env-var CALENDS_TOKENKeep CALENDS_TOKEN available in the environment that launches Codex. Tools cover subscriptions, spending, trends, receivables and insights, plus changes to prices, plans, status and payments. Every write tool supports dry_run; AI access can be turned off in Settings.
Contributing
Bug reports, translations and pull requests are welcome. See CONTRIBUTING.md for local setup, checks and contribution guidelines.
Start with the architecture and code standards before changing a subsystem. Coding agents use AGENTS.md; CLAUDE.md imports the same instructions.
Built with React 19, Vite, HeroUI / React Aria, shadcn/ui and Cloudflare Workers + D1 (SQLite). Billing, exchange rates and other domain logic are shared between the browser and Worker in shared/.
Translations live in shared/locales/<locale>/<namespace>.json, with English and Simplified Chinese as the source languages.
About the name
Calends were the first day of every Roman month, when accounts were settled and debts called in. It is also where the word calendar comes from.
License
Calends is open source under the MIT License; see LICENSE. You may use, modify and redistribute it, including commercially, provided you retain the copyright and license notices in copies or substantial portions of the software. If you fork Calends, please use a distinct name and credit Calends as the upstream source so users can distinguish your version from this project.
This server cannot be deployed
Maintenance
Related MCP Connectors
Manage your KeepMySubs subscriptions, spend, renewals, and bills from any MCP client.
Log, query, and edit expenses, budgets, and accounts in Ledgy from any MCP-compatible AI assistant.
Personal finance ledger for AI agents — query spending, track bills, forecast cash flow.
- ManiloOAuthapp.ledgy.api
Log, query, and edit expenses, budgets, and accounts in Manilo (formerly Ledgy) from any MCP-compatible AI assistant.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceMCP server that exposes the wallet-watch subscription-tracking REST API as tools for AI assistants, enabling natural language management of subscriptions including listing, renewal forecasts, spend summaries, and actions like snoozing or downgrading.-
- AlicenseNot gradedqualityCmaintenanceEnables MCP clients to manage a self-hosted Wallos subscription tracker through tools for listing, creating, updating, and deleting subscriptions, as well as retrieving monthly costs and reference data.37 npmMIT

RevenueDot MCPofficial
AlicenseAqualityBmaintenanceEnables AI assistants such as Claude, ChatGPT and Cursor to manage an open-source subscription backend: setting up products, entitlements, offerings and packages, looking up customers, granting or revoking access, adding webhooks, and tracking RevenueCat imports. Tool names mirror RevenueCat's MCP tools, so existing prompts work unchanged.3817 npmMIT- AlicenseNot gradedqualityCmaintenanceEnables subscription management in a single connected Wallos account via Streamable HTTP tools — reference data lookup, search and pagination, cost summaries, upcoming payments, subscription creation and patching, tracking-state toggles, and reminder settings. Writes are idempotent and version-checked against the underlying Wallos records.37 npmDo What The F*ck You Want To Public