calendar-tasks-mcp
Click on "Install 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., "@calendar-tasks-mcpshow me my events for next Tuesday"
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.
calendar-tasks-mcp
An MCP server that lets Claude manage the workshop@burrowsjewellers.com.au Outlook calendar and Microsoft To Do, via Microsoft Graph. Built as a sibling to burrows-mcp, in the dashboard's Node/ESM style, with the same token-lifecycle pattern as xeroClient.js (mint once → silent refresh, refresh token stored in Postgres).
Delegated, least-privilege: it signs in as workshop@ and can only touch that mailbox's calendar and tasks — no mail, no files.
Tools
Tool | What it does |
| Create a calendar event (local wall-clock time + timezone), with a phone reminder. |
| Change fields on an event by id. |
| Delete one event by id. |
| List events in a window (resolve an id before update/delete). |
| Add a task to the "Burrows Ops" To Do list (due date + reminder optional). |
| Mark a task complete. |
| List tasks (resolve an id before completing). |
The agent is instructed (via tool descriptions) to confirm before deleting events or acting on many items at once — this is write access to a live calendar.
Related MCP server: Outlook MCP Server
One-time setup
1. Register the Entra (Azure AD) app
In the Entra admin center → Identity → Applications → App registrations → New registration:
Name:
burrows-calendar-tasks-mcpSupported account types: Accounts in this organizational directory only (single tenant).
Register. Copy the Application (client) ID and Directory (tenant) ID → these become
GRAPH_CLIENT_ID/GRAPH_TENANT_ID.Authentication → Advanced settings → Allow public client flows → Yes. (Device-code flow needs this; no client secret is created.)
API permissions → Add a permission → Microsoft Graph → Delegated permissions, add exactly:
Calendars.ReadWriteTasks.ReadWriteoffline_accessUser.Read
Grant admin consent (button at the top) using the Global Admin
adm_mark.burrows@…onmicrosoft.com.
2. Configure
cp .env.example .env
# set GRAPH_CLIENT_ID, GRAPH_TENANT_ID, confirm GRAPH_DEFAULT_TIMEZONE, fill PG* for the token table
npm install3. Sign in once (mint the refresh token)
npm run loginOpen the printed URL, enter the code, and sign in as workshop@burrowsjewellers.com.au. The refresh token is stored (Postgres graph_tokens table by default). After this the server refreshes access tokens silently.
4. (Optional) Verify live
npm run smoke # creates + cleans up a test event and task against the real mailboxRun / deploy
Locally, the MCP runs over stdio:
npm startOn the droplet, run it under pm2 like burrows-dashboard-api:
pm2 start src/server.js --name calendar-tasks-mcp --interpreter node
pm2 saveRegister it with your MCP client (e.g. burrows-mcp's host config):
{
"mcpServers": {
"calendar-tasks": {
"command": "node",
"args": ["/path/to/calendar-tasks-mcp/src/server.js"]
}
}
}Config (.env)
Key | Purpose |
| From the Entra app registration. |
| IANA tz applied to events/tasks. Confirm the store's timezone. |
| Default event reminder lead time (30). |
| To Do list for tasks ( |
|
|
| Token table (reuses |
Tests
npm test # payload-builder unit tests + a spawned-server integration test (no live Graph needed)Notes / cautions
Reminders fire on the phone only if
workshop@is signed into the phone's Outlook app. Add it if not.Conditional-access policies can occasionally force a fresh
npm run login; the refresh token isn't guaranteed to last forever.Token storage mirrors the dashboard's
xero_tokens: one row, app-owned, never committed to git.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/itscartmanbrah/calendar-mcp-task'
If you have feedback or need assistance with the MCP directory API, please join our Discord server