Skip to main content
Glama

Google Calendar MCP

by AnByoungHyun
sample.py3.63 kB
from mcp.server.fastmcp import FastMCP from mcp.server import Server from mcp.server.stdio import stdio_server from mcp import types from google_calendar_mcp.google_auth import get_calendar_service from datetime import datetime, timedelta from google.auth.transport.requests import Request from typing import Optional, List import asyncio # mcp = FastMCP("google_calendar_mcp") app = Server("google_calendar_mcp") @app.list_tools() async def list_tools() -> list[types.Tool]: return [ types.Tool( name="calendar_list_month", description="지정한 연/월의 모든 일정 목록 조회", inputSchema={ "type": "object", "properties": { "year": {"type": "number", "description": "연도"}, "month": {"type": "number", "description": "월"}, } } ) ] # @mcp.tool() # def list_month_events(year: int, month: int) -> dict[str, Any]: # """지정한 연/월의 모든 일정 목록 조회""" # service = get_calendar_service() # start_date = datetime(year, month, 1) # if month == 12: # end_date = datetime(year + 1, 1, 1) # else: # end_date = datetime(year, month + 1, 1) # time_min = start_date.isoformat() + 'Z' # time_max = end_date.isoformat() + 'Z' # events_result = service.events().list( # calendarId='primary', # timeMin=time_min, # timeMax=time_max, # singleEvents=True, # orderBy='startTime' # ).execute() # events = events_result.get('items', []) # return {"count": len(events), "events": events} # @mcp.tool() # def list_day_events(date: str) -> dict[str, Any]: # """지정한 날짜(YYYY-MM-DD)의 모든 일정 목록 조회""" # service = get_calendar_service() # start_date = datetime.strptime(date, "%Y-%m-%d") # end_date = start_date + timedelta(days=1) # time_min = start_date.isoformat() + 'Z' # time_max = end_date.isoformat() + 'Z' # events_result = service.events().list( # calendarId='primary', # timeMin=time_min, # timeMax=time_max, # singleEvents=True, # orderBy='startTime' # ).execute() # events = events_result.get('items', []) # return {"count": len(events), "events": events} # @mcp.tool() # def get_event_detail(event_id: str) -> dict[str, Any]: # """일정 ID로 상세 정보 조회""" # service = get_calendar_service() # event = service.events().get(calendarId='primary', eventId=event_id).execute() # return event # @mcp.tool() # def create_event(summary: str, start: str, end: str, description: str = None, location: str = None, attendees: Optional[List[str]] = None) -> dict[str, Any]: # """새로운 일정 생성 (attendees: 이메일 리스트)""" # service = get_calendar_service() # event_body = { # "summary": summary, # "description": description, # "start": {"dateTime": start}, # "end": {"dateTime": end}, # } # if location: # event_body["location"] = location # if attendees: # event_body["attendees"] = [{"email": email} for email in attendees] # event = service.events().insert(calendarId='primary', body=event_body).execute() # return {"message": "일정이 등록되었습니다.", "event": event} async def start(): async with stdio_server() as streams: await app.run( streams[0], streams[1], app.create_initialization_options() ) def run(): asyncio.run(start()) # mcp.run()

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/AnByoungHyun/google_calendar_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server