MCP Calendar Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Calendar Servershow my events for today"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP 캘린더 서버
ADT(Algebraic Data Type) 기반의 MCP 캘린더 관리 시스템입니다.
개요
이 프로젝트는 Model Context Protocol(MCP)을 사용하여 캘린더 이벤트를 관리하는 서버입니다. 함수형 프로그래밍 패러다임과 ADT를 적용하여 타입 안전성과 예측 가능성을 보장합니다.
Related MCP server: Daily Calorie Tracker MCP Server
주요 기능
✅ 캘린더 이벤트 CRUD 작업
✅ 카테고리별 이벤트 분류 (학습, 업무, 휴식, 활동)
✅ 이벤트 상태 관리 (계획됨, 완료됨, 취소됨)
✅ 스태미나 시스템 통합
✅ 시간 충돌 방지
✅ 날짜별/카테고리별 이벤트 조회
설치 및 실행
요구사항
Python 3.10+
uv 패키지 매니저
설치
# 의존성 설치
uv sync
# 개발 의존성 포함 설치
uv sync --extra dev실행
# MCP 서버 실행
uv run python main.py
# 또는 직접 실행
uv run python src/main.pyAPI 도구 (Tools)
1. get_all_events()
모든 캘린더 이벤트를 조회합니다.
2. get_event_by_id(event_id: int)
특정 ID의 이벤트를 조회합니다.
3. create_calendar_event(...)
새로운 캘린더 이벤트를 생성합니다.
매개변수:
title: 이벤트 제목start_time: 시작 시간 (ISO 형식: 2025-08-02T10:00:00)duration: 지속 시간(분)category: 카테고리 (STUDY, WORK, REST, ACTIVITY)description: 이벤트 설명 (선택)location: 장소 (선택)stamina_cost: 스태미나 소모량 (기본값: 0)
4. update_calendar_event(event_id: int, ...)
기존 이벤트를 수정합니다.
5. delete_calendar_event(event_id: int)
이벤트를 삭제합니다.
6. complete_event(event_id: int, stamina_after: int)
이벤트를 완료 상태로 변경합니다.
7. get_events_by_category(category: str)
카테고리별로 이벤트를 조회합니다.
8. get_events_by_date(date: str)
특정 날짜의 이벤트를 조회합니다.
데이터 모델
EventCategory
STUDY: 학습WORK: 업무REST: 휴식ACTIVITY: 활동
EventStatus
PLANNED: 계획됨COMPLETED: 완료됨CANCELED: 취소됨
CalendarEvent
캘린더 이벤트의 핵심 엔티티로 다음 필드를 포함합니다:
ID, 사용자 ID, 제목, 설명, 장소
시작 시간, 지속 시간, 카테고리
스태미나 소모량, 상태, 완료 후 스태미나
생성 시간
프로젝트 구조
ittae-MCP/
├── src/
│ ├── __init__.py
│ ├── main.py # MCP 서버 메인
│ ├── models/
│ │ └── __init__.py # 데이터 모델 정의
│ ├── services/
│ │ ├── __init__.py
│ │ └── calendar_service.py # 비즈니스 로직
│ └── exceptions/
│ └── __init__.py # 예외 처리
├── tests/ # 테스트 파일
├── main.py # 진입점
├── pyproject.toml # 프로젝트 설정
└── README.md사용 예시
이벤트 생성
create_calendar_event(
title="팀 미팅",
start_time="2025-08-02T10:00:00",
duration=60,
category="WORK",
description="주간 팀 미팅",
location="회의실 A",
stamina_cost=20
)날짜별 이벤트 조회
get_events_by_date("2025-08-02")이벤트 완료 처리
complete_event(event_id=1, stamina_after=80)개발
테스트 실행
uv run pytest코드 포맷팅
uv run black src/
uv run ruff check src/라이선스
이 프로젝트는 MIT 라이선스 하에 배포됩니다.
Available Tools
8 toolscomplete_eventB
이벤트를 완료 상태로 변경하고 완료 후 스태미나를 설정합니다.
Args:
event_id: 완료할 이벤트 ID
stamina_after: 완료 후 스태미나 수치
| Name | Required | Description | Default |
|---|---|---|---|
| event_id | Yes | ||
| stamina_after | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| title | Yes | |
| status | Yes | |
| category | Yes | |
| duration | Yes | |
| location | No | |
| created_at | Yes | |
| start_time | Yes | |
| description | No | |
| stamina_cost | Yes | |
| stamina_after_completion | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the tool changes an event to 'complete 상태' and sets stamina, but lacks critical details: whether this is a destructive/mutative operation, what permissions are required, if there are side effects (e.g., triggers notifications), or rate limits. For a mutation tool with zero annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately concise with two sentences: one stating the purpose and another listing parameters with brief explanations. It's front-loaded with the main action, and the parameter section adds necessary detail without redundancy. However, the parameter explanations could be slightly more detailed (e.g., units for stamina).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (a mutation with 2 parameters) and the presence of an output schema (which handles return values), the description is moderately complete. It covers the basic purpose and parameters but lacks usage guidelines, behavioral details (e.g., error conditions), and context about how this fits with sibling tools, leaving gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful context for both parameters beyond the input schema (which has 0% description coverage). It explains that 'event_id' is for '완료할 이벤트' (the event to complete) and 'stamina_after' is for '완료 후 스태미나 수치' (stamina value after completion), clarifying their roles in the operation. This compensates well for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('complete 상태로 변경', '설정합니다') and resources ('이벤트', '스태미나'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'update_calendar_event' or 'delete_calendar_event', which might also modify events.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 (e.g., event must be in progress), exclusions (e.g., cannot complete already completed events), or comparisons to sibling tools like 'update_calendar_event' for other modifications.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_calendar_eventA
새로운 캘린더 이벤트를 생성합니다.
Args:
title: 이벤트 제목
start_time: 시작 시간 (ISO 형식: 2025-08-02T10:00:00)
duration: 지속 시간(분)
category: 카테고리 (STUDY, WORK, REST, ACTIVITY)
description: 이벤트 설명 (선택)
location: 장소 (선택)
stamina_cost: 스태미나 소모량 (기본값: 0)
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| start_time | Yes | ||
| duration | Yes | ||
| category | Yes | ||
| description | No | ||
| location | No | ||
| stamina_cost | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| title | Yes | |
| status | Yes | |
| category | Yes | |
| duration | Yes | |
| location | No | |
| created_at | Yes | |
| start_time | Yes | |
| description | No | |
| stamina_cost | Yes | |
| stamina_after_completion | No |
TDQS
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. It states this creates events but doesn't mention authentication requirements, rate limits, what happens on conflict, whether events are immediately visible, or what the output contains. The description is minimal beyond the basic creation statement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and well-structured with a clear purpose statement followed by organized parameter documentation. Every sentence earns its place, though the parameter documentation could be slightly more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists, the description doesn't need to explain return values. However, for a creation tool with 7 parameters and no annotations, the description should provide more behavioral context about what happens after creation, error conditions, or system constraints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully compensate. It provides detailed parameter documentation including format examples (ISO format for start_time), enum values for category, optional flags, and default values. This adds substantial meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states '새로운 캘린더 이벤트를 생성합니다' (creates a new calendar event), which is a specific verb+resource combination. It distinguishes from siblings like update_calendar_event, delete_calendar_event, and various get_* tools by focusing exclusively on creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives. While the purpose is clear, there's no mention of prerequisites, when not to use it, or how it relates to sibling tools like update_calendar_event or complete_event.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_calendar_eventB
캘린더 이벤트를 삭제합니다.
Args:
event_id: 삭제할 이벤트 ID
| Name | Required | Description | Default |
|---|---|---|---|
| event_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('delete') but doesn't specify whether this is a permanent deletion, if it requires specific permissions, what happens to related data, or any rate limits. For a destructive operation with zero annotation coverage, this leaves critical behavioral traits unaddressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, with the core purpose stated first in a clear sentence. The parameter explanation is concise and directly relevant. However, the structure could be slightly improved by integrating the parameter info more seamlessly rather than as a separate 'Args' section.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (destructive operation with no annotations) and the presence of an output schema (which handles return values), the description is minimally adequate. It covers the basic purpose and parameter but lacks details on behavioral aspects like permissions, reversibility, or error handling, which are important for such a tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful context for the single parameter 'event_id' by specifying it as '삭제할 이벤트 ID' (event ID to delete), which clarifies its role beyond what the schema provides (just 'Event Id' with type integer). With 0% schema description coverage and only one parameter, this compensates adequately, though it doesn't detail format or sourcing of the ID.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('delete') and resource ('calendar event'), making the purpose immediately understandable. It distinguishes itself from siblings like 'create_calendar_event' and 'update_calendar_event' by specifying deletion rather than creation or modification. However, it doesn't explicitly differentiate from other destructive operations like 'complete_event'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. It doesn't mention prerequisites (e.g., needing an existing event ID), when not to use it (e.g., for soft deletion vs. hard deletion), or direct alternatives among siblings like 'complete_event' which might serve a similar purpose in some contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_all_eventsC
모든 캘린더 이벤트를 조회합니다.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states retrieval but doesn't disclose behavioral traits like whether this requires authentication, returns paginated results, includes deleted events, or has rate limits. For a read operation with zero annotation coverage, this leaves significant gaps in understanding how it behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence in Korean that directly states the action. It's appropriately sized for a simple tool, with no wasted words, though it could be more front-loaded with differentiation from siblings.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (0 parameters, read-only operation) and the presence of an output schema, the description is minimally adequate. However, with no annotations and multiple sibling tools, it lacks context on when to use it versus alternatives, leaving room for improvement in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add parameter details, which is appropriate. Baseline is 4 for zero parameters, as there's nothing to compensate for.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description '모든 캘린더 이벤트를 조회합니다' (Retrieves all calendar events) clearly states the verb (retrieve) and resource (calendar events), establishing basic purpose. However, it doesn't differentiate from siblings like get_event_by_id or get_events_by_date, which are more specific retrieval tools. The description is accurate but generic.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. With siblings like get_events_by_date for date-filtered retrieval or get_event_by_id for single events, there's no indication that this tool returns unfiltered/all events, leaving usage context implied at best.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_event_by_idB
ID로 특정 캘린더 이벤트를 조회합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| event_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| title | Yes | |
| status | Yes | |
| category | Yes | |
| duration | Yes | |
| location | No | |
| created_at | Yes | |
| start_time | Yes | |
| description | No | |
| stamina_cost | Yes | |
| stamina_after_completion | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states this is a retrieval operation ('조회'), which implies read-only behavior, but doesn't clarify aspects like authentication requirements, error handling (e.g., what happens if the ID is invalid), rate limits, or response format. For a tool with no annotation coverage, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence in Korean that directly states the tool's purpose without unnecessary words. It is appropriately sized and front-loaded, with every part contributing to understanding the core functionality. There is no wasted text or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (single parameter, no nested objects) and the presence of an output schema (which handles return values), the description is minimally adequate. However, with no annotations and 0% schema description coverage, it lacks details on behavioral aspects like error handling or authentication. It meets basic needs but has clear gaps for a retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds minimal meaning beyond the input schema. It indicates that the 'event_id' parameter is used to retrieve a specific event, but with 0% schema description coverage, the schema only defines the parameter as an integer without context. The description doesn't compensate by explaining what the ID represents (e.g., numeric identifier from the system) or format expectations. Baseline is 3 due to the single parameter, but it doesn't fully address the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'ID로 특정 캘린더 이벤트를 조회합니다' (Retrieve a specific calendar event by ID). It specifies the verb (retrieve/조회), resource (calendar event/캘린더 이벤트), and key constraint (by ID/ID로). However, it doesn't explicitly distinguish this from sibling tools like 'get_all_events' or 'get_events_by_category' beyond the ID focus.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. It doesn't mention scenarios where this is preferred over other retrieval tools (e.g., 'get_all_events' for bulk access or 'get_events_by_date' for date-based queries), nor does it specify prerequisites like needing a valid event ID. Usage is implied by the description but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_events_by_categoryB
카테고리별로 이벤트를 조회합니다.
Args:
category: 카테고리 (STUDY, WORK, REST, ACTIVITY)
| Name | Required | Description | Default |
|---|---|---|---|
| category | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states this is a retrieval operation ('조회합니다') but doesn't disclose behavioral traits like whether it's paginated, what permissions are needed, error handling, rate limits, or what the output contains. The description is minimal and lacks essential operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately concise with two sentences: a purpose statement and parameter documentation. The structure is front-loaded with the main purpose first. However, the parameter documentation could be more integrated rather than a separate 'Args:' section.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 1 parameter with no schema documentation, the description adequately covers the parameter semantics. However, with no annotations and a retrieval operation, it should provide more behavioral context (pagination, permissions, etc.). The existence of an output schema reduces the need to describe return values, but overall completeness is minimal.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage and only 1 parameter, the description adds significant value by documenting the parameter 'category' and listing its allowed values (STUDY, WORK, REST, ACTIVITY). This compensates for the schema's lack of documentation, though it doesn't explain format or constraints beyond the enum list.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('조회합니다' - retrieves/gets) and resource ('이벤트' - events) with the specific scope '카테고리별로' (by category). It distinguishes from siblings like get_all_events (no filtering) and get_events_by_date (different filter). However, it doesn't explicitly mention what 'events' refer to in this context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when filtering events by category, but doesn't explicitly state when to use this vs alternatives like get_all_events (unfiltered) or get_events_by_date (date-based filtering). No guidance on prerequisites, error conditions, or when-not-to-use scenarios is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_events_by_dateB
특정 날짜의 이벤트를 조회합니다.
Args:
date: 날짜 (YYYY-MM-DD 형식)
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It states this is a retrieval operation ('조회'), implying read-only behavior, but doesn't specify permissions, rate limits, error handling, or what 'events' encompass (e.g., calendar events, system events). For a tool with no annotation coverage, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately concise with two sentences: one stating the purpose and another detailing the parameter. It's front-loaded with the core function, and every sentence adds value. However, the structure could be slightly improved by integrating the parameter info more seamlessly, but it remains efficient with zero waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (1 parameter) and the presence of an output schema (which handles return values), the description is minimally adequate. It covers the basic purpose and parameter semantics, but lacks behavioral context (e.g., permissions, error cases) and usage guidelines relative to siblings. With no annotations, it should do more to be fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful semantics beyond the input schema. The schema has 0% description coverage (only titles), but the description specifies the parameter's purpose ('날짜' meaning date) and format ('YYYY-MM-DD 형식'), which are crucial for correct usage. This compensates well for the low schema coverage, though it doesn't cover edge cases like time zones.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: '특정 날짜의 이벤트를 조회합니다' (Retrieves events for a specific date). It specifies both the verb (조회/retrieve) and resource (이벤트/events), making the function unambiguous. However, it doesn't explicitly differentiate from sibling tools like get_all_events or get_events_by_category, which would require a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. With siblings like get_all_events (retrieves all events) and get_events_by_category (retrieves by category), the agent must infer usage based on the name alone. No explicit when/when-not instructions or alternative mentions are included.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_calendar_eventB
기존 캘린더 이벤트를 수정합니다.
Args:
event_id: 수정할 이벤트 ID
title: 이벤트 제목
start_time: 시작 시간 (ISO 형식: 2025-08-02T10:00:00)
duration: 지속 시간(분)
category: 카테고리 (STUDY, WORK, REST, ACTIVITY)
description: 이벤트 설명 (선택)
location: 장소 (선택)
stamina_cost: 스태미나 소모량 (기본값: 0)
status: 이벤트 상태 (PLANNED, COMPLETED, CANCELED) (선택)
| Name | Required | Description | Default |
|---|---|---|---|
| event_id | Yes | ||
| title | Yes | ||
| start_time | Yes | ||
| duration | Yes | ||
| category | Yes | ||
| description | No | ||
| location | No | ||
| stamina_cost | No | ||
| status | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| title | Yes | |
| status | Yes | |
| category | Yes | |
| duration | Yes | |
| location | No | |
| created_at | Yes | |
| start_time | Yes | |
| description | No | |
| stamina_cost | Yes | |
| stamina_after_completion | No |
TDQS
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 '수정합니다' (modify) implies a mutation operation, the description doesn't disclose important behavioral traits: whether this requires specific permissions, what happens when updating only some fields (partial updates), whether changes are reversible, error conditions, or how it interacts with other tools. The description provides basic parameter information but lacks behavioral context needed for safe invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and well-structured with a clear purpose statement followed by organized parameter documentation. Each parameter explanation is concise and adds value. While slightly longer than minimal, every sentence serves a purpose given the 9 parameters with no schema descriptions. The structure helps the agent understand parameter roles efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (9 parameters, mutation operation) with no annotations but with an output schema, the description is moderately complete. It covers parameter semantics well but lacks behavioral context needed for a mutation tool. The presence of an output schema means the description doesn't need to explain return values, but it should address mutation-specific concerns like permissions, partial updates, and error handling that aren't covered elsewhere.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates well by providing semantic context for all 9 parameters. It explains event_id identifies what to modify, clarifies ISO format for start_time, specifies duration in minutes, enumerates category options, identifies optional parameters, provides default values, and explains stamina_cost units. This adds substantial meaning beyond what the bare schema provides, though it doesn't cover all edge cases or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as '기존 캘린더 이벤트를 수정합니다' (modify existing calendar events), which is a specific verb+resource combination. It distinguishes itself from siblings like create_calendar_event and delete_calendar_event by focusing on modification rather than creation or deletion. However, it doesn't explicitly differentiate from complete_event which might also modify event status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. It doesn't mention when to choose update_calendar_event over complete_event for status changes, or when to use it versus creating a new event. There's also no information about prerequisites, permissions, or constraints beyond what's implied by the parameter list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
8 tool updates
- First observed
complete_event - First observed
create_calendar_event - First observed
delete_calendar_event - First observed
get_all_events - First observed
get_event_by_id - First observed
get_events_by_category - First observed
get_events_by_date - First observed
update_calendar_event
TDQS
Each tool has a clearly distinct purpose with no ambiguity. The CRUD operations (create, get, update, delete) target different actions, while the query tools (get_all_events, get_events_by_category, get_events_by_date) provide complementary filtering options. The complete_event tool uniquely handles event completion with stamina management, separate from general updates.
Most tools follow a consistent verb_noun pattern (create_calendar_event, delete_calendar_event, update_calendar_event, get_all_events, get_event_by_id, get_events_by_category, get_events_by_date). The only deviation is complete_event, which uses a different verb style and omits the 'calendar' prefix, but this is minor given its distinct functionality.
With 8 tools, this server is well-scoped for calendar management. It provides full CRUD operations plus specialized queries and a unique completion tool, avoiding both under-coverage (e.g., just 1-2 tools) and bloat (e.g., 25+ tools). Each tool earns its place in the workflow.
The toolset offers complete coverage for calendar event management: create, read (with multiple query options), update, and delete operations. It also includes specialized functionality like event completion with stamina tracking and status management. No obvious gaps exist for the domain, supporting full agent workflows without dead ends.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
ADHD system of record for agents: tasks, goals, loops, calendar, focus stats.
Manage your endurance training data and race preparation
Turn any goal with a deadline into a private, gamified, evidence-based execution calendar.
Calendar API for AI agents: events, availability, Google/Microsoft setup, scheduling, and iCal.
Related MCP Servers
- FlicenseBqualityDmaintenanceEnables managing personal information with dynamic topic-based organization (tasks, meetings, contacts, etc.), supporting optional OTP authentication and AES-256 encryption for sensitive data with automatic backups.106-
- AlicenseNot gradedqualityDmaintenanceEnables users to track daily calorie consumption by logging meals through natural language and searching a comprehensive food database. It provides daily summaries, weekly reports, and persistent SQLite storage to monitor dietary trends and goals.23MIT
- FlicenseAqualityDmaintenanceIntegrates simulated health data and task management to provide energy-aware scheduling based on calculated readiness scores. It allows users to query health summaries, manage tasks, and generate optimized daily schedules through a local SQLite database.5-
- AlicenseAqualityDmaintenanceIntegrates the YearAtAGlance calendar with AI assistants to manage events, categories, and event density heatmaps. It enables users to perform CRUD operations on calendar data and utilize AI-powered features like natural language milestone creation and yearly analysis.1515MIT
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/highthon-16/MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server