Google Calendar MCP Server

by amornpan
Verified
from mcp import ClientSession, StdioServerParameters from mcp.client.stdio import stdio_client import asyncio import logging import os # Set up logging logging.basicConfig( level=logging.INFO, format='[%(asctime)s] %(levelname)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S' ) logger = logging.getLogger(__name__) async def run(): # Create server parameters server_params = StdioServerParameters( command="python", args=[os.path.join(os.path.dirname(__file__), "mcp_server.py")] ) try: async with stdio_client(server_params) as (read, write): async with ClientSession(read, write) as session: # Initialize connection await session.initialize() logger.info("Initialization successful") # List calendar events using tool result = await session.call_tool("list", {}) if result and hasattr(result, "content"): for content_item in result.content: if hasattr(content_item, "text"): print("\nCalendar Events:\n") print(content_item.text) else: logger.warning("No events data received") except Exception as e: logger.error(f"Error: {e}", exc_info=True) if __name__ == "__main__": try: asyncio.run(run()) except KeyboardInterrupt: logger.info("Client shutdown requested")