Skip to main content
Glama
AnByoungHyun

Google Calendar MCP

by AnByoungHyun

create_event

Schedule new Google Calendar events by specifying summary, start and end times, location, description, and attendee emails via the MCP server.

Instructions

새로운 일정 생성 (attendees: 이메일 리스트)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
attendeesNo
descriptionNo
endYes
locationNo
startYes
summaryYes

Implementation Reference

  • The main handler function for the 'create_event' tool. It is decorated with @mcp.tool() which registers it, constructs an event body from parameters, and inserts it into the primary Google Calendar using the authenticated service.
    @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}
  • Helper function that provides the authenticated Google Calendar API service, handling OAuth token management and refresh. Used by the create_event handler.
    def get_calendar_service():
        creds = None
        if os.path.exists(TOKEN_FILE):
            with open(TOKEN_FILE, "rb") as token:
                creds = pickle.load(token)
        if not creds or not creds.valid:
            if creds and creds.expired and creds.refresh_token:
                creds.refresh(Request())
            else:
                flow = InstalledAppFlow.from_client_secrets_file(CLIENT_SECRET_FILE, SCOPES)
                creds = flow.run_local_server(port=0)
            with open(TOKEN_FILE, "wb") as token:
                pickle.dump(creds, token)
        service = build("calendar", "v3", credentials=creds)
        return service 
  • The @mcp.tool() decorator registers the create_event function as an MCP tool.
    @mcp.tool()
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. While 'create' implies a write operation, it doesn't specify authentication requirements, rate limits, error conditions, or what happens on success. The description mentions attendees but doesn't explain how they're notified or what permissions are needed to invite them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise - just one phrase with a parenthetical clarification. It's front-loaded with the main purpose. However, the extreme brevity comes at the cost of completeness, making it more under-specified than optimally concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a creation tool with 6 parameters, 0% schema coverage, no annotations, and no output schema, the description is insufficient. It doesn't explain what values the tool returns, error handling, or the semantics of critical parameters like start/end formats. The context signals indicate high complexity that the description doesn't adequately address.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage for 6 parameters, the description only addresses one parameter (attendees as email list). It doesn't explain the purpose or format of the 3 required parameters (summary, start, end) or the optional ones (description, location). The description fails to compensate for the complete lack of schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('새로운 일정 생성' - create new event) and specifies a key parameter (attendees as email list). It distinguishes from siblings like get_event_detail, list_day_events, and update_event by focusing on creation rather than retrieval or modification. However, it doesn't explicitly contrast with all siblings in a comprehensive way.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. There's no mention of prerequisites, when to choose create_event over update_event, or any contextual constraints. The sibling tools include retrieval and update functions, but the description offers no comparative usage advice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Related Tools

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

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