AI Calendar Assistant
Provides tools for managing Google Calendar events, including listing, creating, updating, deleting events, and checking availability.
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., "@AI Calendar AssistantWhat's on my calendar today?"
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.
๐๏ธ AI Calendar Assistant
Personal calendar management powered by local LLM (Ollama), Google Calendar API, and Model Context Protocol (MCP)
A lightweight, privacy-first AI calendar assistant that runs entirely on your local machine. Chat with your calendar using natural language, powered by Llama 3.2 running locally via Ollama - completely free, no API costs.
โจ Features
๐ค Local AI - Uses Ollama (llama3.2:3b) running on your machine
๐ Google Calendar Integration - Full read/write access via OAuth2
๐ฌ Natural Language - Ask questions in plain English
โก Fast - Responses in 1-2 seconds
๐ Privacy-First - LLM runs locally, only calendar sync requires internet
๐ 100% Free - No API costs, no subscriptions
๐ MCP Compatible - Integrates with Claude Desktop and other MCP clients
๐จ Beautiful CLI - Rich terminal interface with color and formatting
๐๏ธ Architecture
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ MCP Client for Ollama (ollmcp) โ
โ Terminal UI - Natural Language Interface โ
โโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ
โ (MCP Protocol) โ (Ollama API)
โ โ
โผ โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Calendar MCP Server โ โ Ollama โ
โ (calendar_server.py) โ โ Llama 3.2 3B โ
โ โ โ (Local LLM) โ
โ Exposes 7 Calendar Tools: โ โ โ
โ โข list_events โ โ Handles: โ
โ โข get_today_events โ โ โข Intent parsing โ
โ โข create_event โ โ โข Natural language โ
โ โข search_events โ โ โข Response generation โ
โ โข update_event โ โ โข Tool orchestration โ
โ โข delete_event โ โ โ
โ โข check_availability โ โ โ
โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โ (Google Calendar API)
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ GoogleCalendarClient โ
โ โข OAuth2 Authentication โ
โ โข Event CRUD Operations โ
โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Google Calendar โ
โ (Cloud Storage) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโFlow:
You type natural language โ MCP Client (ollmcp)
Ollama (Llama 3.2) understands intent and determines which MCP tools to call
MCP Client calls appropriate calendar tools via MCP protocol
Calendar MCP Server executes Google Calendar operations
Response flows back through MCP โ Ollama โ formatted natural language response
๐ Quick Start
Prerequisites
Python 3.8+
macOS, Linux, or Windows
Google account
4GB RAM (for local LLM)
Installation
Install Ollama
# macOS brew install ollama # Start Ollama service ollama serve # Pull the model (in a new terminal) ollama pull llama3.2:3bClone & Setup
git clone https://github.com/othmane-zizi-pro/ai-calendar-assistant.git cd ai-calendar-assistant pip install -r requirements.txtGet Google Calendar Credentials
Go to Google Cloud Console
Create a new project
Enable "Google Calendar API"
Create OAuth 2.0 credentials (Desktop app)
Download JSON and save as
credentials.json
Install MCP Client for Ollama
pip install mcp-client-for-ollamaRun - Start Natural Language Calendar Chat
# First run - authenticate with Google (this will open browser) python run_calendar_server.py # Test server once, then Ctrl+C # Start interactive MCP chat with Ollama ollmcp --servers-json ollmcp_config.json --model llama3.2:3b
๐ก Usage
Interactive MCP-Powered Chat
# Start the MCP client with Ollama
ollmcp --servers-json ollmcp_config.json --model llama3.2:3bExample conversation:
You: What's on my calendar today?
AI: Let me check your calendar for today...
[Calls get_today_events tool via MCP]
You have 3 events scheduled today:
1. Team Standup at 9:00 AM
2. Client Meeting at 2:00 PM
3. Gym Session at 6:00 PM
You: Create a meeting tomorrow at 3pm for 1 hour called "Project Review"
AI: I'll create that event for you...
[Calls create_event tool via MCP]
โ
Done! Event "Project Review" scheduled for tomorrow 3:00 PM - 4:00 PM
You: Am I free on Friday afternoon?
AI: Let me check your availability...
[Calls check_availability tool via MCP]
Yes, you're free after 2:00 PM on Friday!Available MCP Tools
The calendar MCP server exposes these tools (automatically used by Ollama through the MCP client):
list_events - Get upcoming calendar events
get_today_events - Retrieve today's schedule
create_event - Create new calendar event
search_events - Search events by keyword
update_event - Modify existing event
delete_event - Remove event from calendar
check_availability - Check if time slot is free
Alternative: Use with Claude Desktop
If you prefer using Claude Desktop instead of the local Ollama setup:
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"calendar": {
"command": "python3",
"args": ["run_calendar_server.py"],
"cwd": "/path/to/ai-calendar-assistant"
}
}
}Restart Claude Desktop - now Claude can access your calendar via MCP!
๐ ๏ธ Technical Stack
Core Technologies
Component | Technology | Purpose |
MCP Client | mcp-client-for-ollama (ollmcp) | Bridges Ollama with MCP servers, terminal UI |
Local LLM | Ollama (Llama 3.2 3B) | Natural language understanding, intent parsing, tool orchestration |
MCP Server | Model Context Protocol SDK | Exposes calendar tools via MCP protocol |
Calendar API | Google Calendar API v3 | Event management, OAuth2 authentication |
NLP | LangChain | Prompt engineering, chain-of-thought |
Key Features Implementation
1. MCP Server - Tool Exposure
# Expose calendar tools via MCP protocol
@app.list_tools()
async def list_tools():
return [
Tool(name="list_events", description="List upcoming calendar events", ...),
Tool(name="create_event", description="Create a new calendar event", ...),
Tool(name="search_events", description="Search events by keyword", ...),
Tool(name="get_today_events", ...),
Tool(name="update_event", ...),
Tool(name="delete_event", ...),
Tool(name="check_availability", ...)
]
@app.call_tool()
async def call_tool(name: str, arguments: Any):
client = get_calendar_client()
if name == "list_events":
events = client.list_events(...)
return [TextContent(type="text", text=formatted_output)]2. OAuth2 Authentication
# Google Calendar OAuth2 flow
flow = InstalledAppFlow.from_client_secrets_file(
'credentials.json',
SCOPES=['https://www.googleapis.com/auth/calendar']
)
creds = flow.run_local_server(port=0)3. MCP + Ollama Integration
# ollmcp connects Ollama to MCP servers
ollmcp --servers-json ollmcp_config.json --model llama3.2:3b
# User types: "What's on my calendar today?"
# โ Ollama (Llama 3.2) understands intent
# โ Calls get_today_events tool via MCP protocol
# โ Calendar server executes Google Calendar API call
# โ Response formatted and returned via MCP
# โ Ollama generates natural language response๐ Performance
Metric | Value |
Response Time | 1-2 seconds (local LLM) |
Memory Usage | ~4GB RAM (Llama 3.2 3B) |
API Calls | Only for calendar sync (free tier: 1M requests/day) |
Offline Capability | LLM works offline, calendar requires internet |
Cost | $0/month (100% free) |
Model Comparison
Model | Size | RAM | Speed | Quality | Use Case |
llama3.2:3b | 2GB | 4GB | โกโกโก | โญโญโญโญ | Recommended |
gemma:2b | 1.4GB | 3GB | โกโกโกโก | โญโญโญ | Faster, lower RAM |
phi3:mini | 2.3GB | 4GB | โกโกโก | โญโญโญโญ | Better code understanding |
mistral:7b | 4.1GB | 8GB | โกโก | โญโญโญโญโญ | Highest quality |
๐ง Project Structure
ai-calendar-assistant/
โโโ calendar_assistant/
โ โโโ mcp_server/
โ โ โโโ __init__.py
โ โ โโโ calendar_server.py # MCP server implementation
โ โโโ llm/
โ โ โโโ __init__.py
โ โ โโโ local_assistant.py # Ollama integration
โ โโโ utils/
โ โ โโโ __init__.py
โ โ โโโ google_calendar.py # Google Calendar API wrapper
โ โโโ __init__.py
โ โโโ cli.py # CLI interface
โโโ calendar_assistant.py # Main entry point
โโโ requirements.txt # Dependencies
โโโ verify_setup.py # Setup verification script
โโโ .env.example # Environment configuration template
โโโ .gitignore # Git ignore rules
โโโ README.md # This file
โโโ QUICKSTART.md # 5-minute setup guide
โโโ SETUP.md # Detailed setup instructions
โโโ LOCAL_LLM_SETUP.md # Ollama installation guide๐ฏ MCP Tools Available
When integrated with Claude Desktop, the following tools are exposed:
Tool | Description | Parameters |
| Get upcoming calendar events |
|
| Retrieve today's schedule | None |
| Create a new calendar event |
|
| Search events by keyword |
|
| Modify existing event |
|
| Remove event from calendar |
|
| Check if time slot is free |
|
๐ Privacy & Security
โ Local LLM - All AI processing happens on your machine
โ OAuth2 - Secure Google authentication
โ No Cloud LLM APIs - No data sent to OpenAI/Anthropic
โ Credentials Protected -
credentials.jsonandtoken.picklein.gitignoreโ Open Source - Full transparency, audit the code yourself
Data Flow:
Your query โ Local LLM (Ollama) โ Intent extracted
Calendar operation โ Google Calendar API (OAuth2)
Response โ Local LLM โ Natural language response
๐ Documentation
Quick Start Guide - Get running in 5 minutes
Setup Guide - Detailed installation instructions
Local LLM Setup - Ollama configuration
๐ค Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Fork the repository
Create your feature branch (
git checkout -b feature/AmazingFeature)Commit your changes (
git commit -m 'Add some AmazingFeature')Push to the branch (
git push origin feature/AmazingFeature)Open a Pull Request
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
๐ Acknowledgments
Ollama - Local LLM runtime
Model Context Protocol - AI integration framework
Google Calendar API - Calendar integration
LangChain - LLM orchestration
Rich - Beautiful terminal output
๐ง Contact
Othmane Zizi - othmane.zizi.pro@gmail.com
Project Link: https://github.com/othmane-zizi-pro/ai-calendar-assistant
โญ Star this repo if you found it helpful!
This server cannot be installed
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
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/othmane-zizi-pro/ai-calendar-assistant'
If you have feedback or need assistance with the MCP directory API, please join our Discord server