cx_ai_agent_v1 / mcp /servers /calendar_server.py
muzakkirhussain011's picture
Add application files (text files only)
8bab08d
# file: mcp/servers/calendar_server.py
#!/usr/bin/env python3
import json
from datetime import datetime, timedelta
from aiohttp import web
class CalendarServer:
"""Calendar MCP server"""
async def handle_rpc(self, request):
data = await request.json()
method = data.get("method")
params = data.get("params", {})
if method == "health":
return web.json_response({"result": "ok"})
elif method == "calendar.suggest_slots":
# Generate slots for next week
now = datetime.utcnow()
slots = []
for days in [2, 3, 5]: # 2, 3, 5 days from now
slot_time = now + timedelta(days=days, hours=14) # 2 PM
slots.append({
"start_iso": slot_time.isoformat(),
"end_iso": (slot_time + timedelta(minutes=30)).isoformat()
})
return web.json_response({"result": slots})
elif method == "calendar.generate_ics":
summary = params["summary"]
start = params["start_iso"]
end = params["end_iso"]
ics = f"""BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Lucidya//MCP//EN
BEGIN:VEVENT
SUMMARY:{summary}
DTSTART:{start.replace('-', '').replace(':', '').replace('.', '')}
DTEND:{end.replace('-', '').replace(':', '').replace('.', '')}
DESCRIPTION:Discuss customer experience improvements
END:VEVENT
END:VCALENDAR"""
return web.json_response({"result": ics})
return web.json_response({"error": "Unknown method"}, status=400)
app = web.Application()
server = CalendarServer()
app.router.add_post("/rpc", server.handle_rpc)
if __name__ == "__main__":
web.run_app(app, port=9003)