EfficioMCP is an intelligent AI-powered assistant built with LangGraph, Google Calendar API, and MCP to help you manage your schedule through natural conversation.
It understands human-friendly date expressions like "today", "next Friday", "tomorrow at 3pm", and translates them into actionable calendar tasks.
- ✅ Check your schedule by asking "What’s on my calendar today?"
- 🕐 Schedule events naturally like "Create an event next Monday at 2pm called Meeting"
- 📆 Automatically parses dates like "July 21st, 3pm"
- 🧠 Remembers the last 5 user and assistant messages for better context
- 🌐 Uses Google Calendar API (via Service Account)
- Python 3.9+
- LangGraph (via LangChain)
- MCP (Message Chain Protocol)
- Google Calendar API
- Gemini LLM (via
langchain_google_genai) dateutilfor smart date parsing
EfficioMCP/
├── calendar_client.py # The LangGraph-based AI client interface
├── calendar_server.py # The MCP tool server using Google Calendar API
├── .env # Environment variables for credentials
└── credentials.json # Google service account credentials
git clone https://github.com/your-username/EfficioMCP.git
cd EfficioMCPpip install -r requirements.txtIf requirements.txt is missing, you can install manually:
pip install python-dotenv langchain langgraph mcp langchain-google-genai google-api-python-client google-auth python-dateutil- Go to Google Cloud Console
- Create a new project or use existing one
- Go to IAM & Admin > Service Accounts
- Create a new service account and download
credentials.json
- In Google Cloud Console > APIs & Services > Library
- Enable Google Calendar API for your project
- Open Google Calendar
- Under My calendars, click Settings & sharing
- Add the service account’s email (from
credentials.json) with Make changes and manage sharing permission
Create a .env file in the root directory:
GOOGLE_API_CREDENTIALS_PATH=credentials.json
CALENDAR_ID=primary
CALENDAR_IDcan be a calendar ID or"primary"for your main calendar.
python calendar_client.pyYou’ll see:
🔔 Agent ready. Ask about your calendar (type 'exit' to quit).
You:
Now you can start chatting!
You: what is my schedule today?
You: do I have anything tomorrow at 2pm?
You: schedule event called Project Demo on July 22 at 4pm
You: cancel event with ID abc123
You: find a free 60-minute slot tomorrow after 10am- You can change the LLM model inside
calendar_client.pyby modifying:
ChatGoogleGenerativeAI(model="gemini-2.5-flash-preview-05-20")- Modify date parsing rules in the
parse_date_time()function to support more phrases.
❌ I don’t see the event in Google Calendar
- Ensure time zone is specified in the API call (
Asia/Dhakafor GMT+6) - Confirm that the correct calendar ID is used
- Make sure the service account is shared on the calendar
- Check if the event is in a different timezone (UTC vs GMT+6)
❌ Time parsing errors
- Install
dateutil:pip install python-dateutil - Avoid ambiguous date phrases (e.g., “next month”)
Sadman Labib Efficio AI Calendar Project – JavaFest Hackathon