Skip to main content
Glama
jnss95

iCal MCP Server

by jnss95

Server Quality Checklist

67%
Profile completionA complete profile improves this server's visibility in search results.
  • Latest release: v1.0.3

  • Disambiguation4/5

    The tools are mostly distinct: list_calendars vs get_calendar_info for calendar list/detail, and list_events vs search_events for broad vs specific retrieval. The only slight overlap is between list_events and search_events, but their descriptions clarify the difference (range vs criteria).

    Naming Consistency5/5

    All tools follow a consistent verb_noun pattern using verbs like list, get, search, create, update, delete. The pattern is uniform across calendar and event resources, making the tool API predictable and easy to navigate.

    Tool Count5/5

    Eight tools is well-scoped for a calendar server covering two resources (calendars and events). It provides a focused set without unnecessary bulk, and each tool serves a clear purpose.

    Completeness5/5

    Events have full CRUD coverage (create, read, list, search, update, delete), and calendars have read operations appropriate for loaded calendars. The surface covers the expected workflows without obvious gaps for the stated purpose.

  • Average 3.2/5 across 8 of 8 tools scored.

    See the Tool Scores section below for per-tool breakdowns.

    • No community issues in the last 6 months
    • 0 commits in the last 12 weeks
    • No stable releases found
    • No critical vulnerability alerts
    • No high-severity vulnerability alerts
    • No code scanning findings
    • CI status not available
  • This repository is licensed under MIT License.

  • This repository includes a README.md file.

  • No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.

    Tip: use the "Try in Browser" feature on the server page to seed initial usage.

  • Add a glama.json file to provide metadata about your server.

  • If you are the author, simply .

    If the server belongs to an organization, first add glama.json to the root of your repository:

    {
      "$schema": "https://glama.ai/mcp/schemas/server.json",
      "maintainers": [
        "your-github-username"
      ]
    }

    Then . Browse examples.

  • Add related servers to improve discoverability.

How to sync the server with GitHub?

Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.

To manually sync the server, click the "Sync Server" button in the MCP server admin interface.

How is the quality score calculated?

The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).

Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.

Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).

Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.

Tool Scores

  • Behavior2/5

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

    With no annotations, the description carries the full burden of behavioral disclosure. It simply says 'Update an existing event' without explaining whether it performs a partial or full update, what happens to omitted fields, required permissions, or idempotency. This is a significant transparency gap for a mutation tool.

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

    Conciseness3/5

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

    The description is extremely concise (one short sentence) and front-loaded, but it is under-specified. It conveys the core action but omits valuable context, making it more a minimal placeholder than a well-crafted concise description.

    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?

    Given the tool's complexity (14 parameters, no output schema, no annotations), the description is incomplete. It does not explain update semantics, how optional fields interact, or what happens if no optional fields are provided. The schema covers parameter names but not behavioral context.

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

    Parameters3/5

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

    The schema has 100% description coverage for all 14 parameters, so the baseline is 3. The description adds no additional meaning beyond what the schema provides, but it does not need to compensate given the thorough schema descriptions.

    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 ('Update') and the resource ('an existing event'), distinguishing it from sibling tools like create_event, delete_event, and get_event. However, it lacks detail about which fields can be updated or any scope, so it is not as strong as descriptions that enumerate specific aspects.

    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?

    No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, such as needing the event to exist, or when to prefer create_event for new events. The description leaves usage entirely implied.

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

  • Behavior2/5

    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 disclosing behavioral traits. It only states that the tool searches; it does not mention that it is a read-only operation, how results are returned, any pagination, or search semantics like case sensitivity. This is a significant gap for a tool with a non-obvious behavior.

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

    Conciseness5/5

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

    The description is a single, clear sentence with no fluff or redundancy. It is front-loaded with the verb and object, making the purpose immediately understandable. There is zero wasted text, meeting the high standard for conciseness.

    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?

    Given the tool has 8 parameters, no output schema, and minimal description, the overall context is incomplete. The description does not explain how the search criteria interact, what fields are searched, or what the response looks like. Sibling tools like list_events are not clarified in relation, leaving the agent with significant ambiguity.

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

    Parameters3/5

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

    The input schema has 100% description coverage for all 8 parameters, so the baseline is 3. The tool description itself adds no additional meaning to the parameters, but the schema already documents each parameter's purpose. Therefore, no extra credit is given.

    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 'Search for events matching specified criteria' clearly states the tool's action (search) and resource (events), and implies criteria-based filtering. However, it does not differentiate itself from the sibling tool 'list_events', which could also be used to retrieve events, so it lacks sibling differentiation.

    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 like list_events or get_event. It does not mention any exclusions, prerequisites, or scenarios where search_events is preferred, leaving the decision to the agent without direction.

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

  • Behavior2/5

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

    With no annotations, the description must disclose behavioral traits, but it only states the action. It does not mention permission requirements, side effects, defaults, or what happens on success/failure. This is comparable to a minimal 'Update' description that also scored 2.

    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 a single, front-loaded sentence with no filler words. However, it is under-specified given the tool's complexity, so it loses a point for not earning its place with more substance.

    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?

    This is a 13-parameter create tool with no output schema and no annotations. The description provides almost no context about required inputs, defaults, or expected outcomes, leaving the agent to rely solely on the schema. For a mutation tool with this complexity, this is a significant gap.

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

    Parameters3/5

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

    The schema covers 100% of parameters with descriptions, so the description does not need to add parameter details. It adds no additional meaning beyond the schema, but the baseline of 3 applies due to high schema coverage.

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

    Purpose5/5

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

    The description states a specific verb and resource: 'Create a new event in the calendar.' This clearly distinguishes it from sibling tools like update_event, delete_event, and list_events. The resource (event) and scope (calendar) are both named.

    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?

    No guidance is provided on when to use this tool versus alternatives. It does not mention that this is for creating new events, as opposed to updating or deleting, and gives no prerequisites or context about when creation is appropriate.

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

  • Behavior2/5

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

    No annotations are present, so the description carries the full burden of behavioral disclosure. It does not mention that deletion is irreversible, whether special permissions are required, or what happens if the event does not exist. This lack of context is significant for a mutating operation.

    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 a single, concise sentence with no filler. It is appropriately brief for a simple operation, though it could be more informative without becoming verbose.

    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 deletion tool with no annotations and no output schema, the description is too sparse. It does not explain return behavior, error handling, or side effects, leaving the agent without enough context to invoke the tool confidently.

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

    Parameters3/5

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

    Both parameters (eventId and calendarId) have descriptions in the schema, providing full coverage. The description itself does not add any additional parameter detail, so the baseline score of 3 is appropriate.

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

    Purpose5/5

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

    The description 'Delete an event from the calendar' uses a specific verb and resource, making it immediately clear what the tool does. It also distinguishes it from sibling tools like create_event and update_event.

    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?

    No guidance is provided on when to use this tool versus alternatives such as update_event or get_event. The description does not mention any prerequisites, exclusions, or typical use cases.

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

  • Behavior2/5

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

    There are no annotations, so the description must disclose behavior. It mentions listing and date filtering but does not discuss pagination, expandRecurring behavior, default limits, or any side effects. The read-only nature is implied by 'List' but not stated.

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

    Conciseness5/5

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

    The description is a single concise sentence that is front-loaded with the key action and resource. Every word adds value, with no filler or repetition of schema fields.

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

    Completeness3/5

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

    The tool has six parameters and no output schema, but the schema provides good field details. The description is adequate for a basic list operation, yet it omits guidance on pagination, recurring event expansion, and response format, which would be useful given the parameter richness.

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

    Parameters3/5

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

    The schema descriptions cover 100% of parameters, so the baseline is 3. The description adds no extra parameter semantics beyond the date range filter, which is already documented in startDate and endDate.

    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 tool lists events in a calendar with optional date range filtering, using a specific verb and resource. It does not explicitly mention alternatives like search_events, but the 'all events' scope helps differentiate it from get_event and list_calendars.

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

    Usage Guidelines3/5

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

    The description implies the tool is for listing events, with optional date range filtering, but provides no explicit guidance on when to use this versus search_events or other sibling tools. It gives context but no exclusions or alternative recommendations.

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

  • Behavior2/5

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

    No annotations are provided, so the description carries the full burden. It states 'Get metadata and information' but does not clarify what 'metadata and information' includes, error behavior, or required state (e.g., what 'loaded' means). Minimal behavioral detail beyond the tool's name.

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

    Conciseness5/5

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

    The description is a single, front-loaded sentence with no waste. It immediately states the action and resource.

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

    Completeness3/5

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

    For a simple one-parameter getter, the description is adequate but leaves ambiguity about return format and the 'loaded' prerequisite. Since there is no output schema, it could have explained what 'metadata and information' entails, but the core purpose is clear.

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

    Parameters3/5

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

    The sole parameter calendarId is already fully described in the schema as 'The calendar identifier' (100% coverage). The description adds no additional semantic meaning, so the baseline score of 3 applies.

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

    Purpose5/5

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

    The description uses the specific verb 'Get' with resource 'metadata and information about a loaded calendar', clearly distinguishing it from sibling tools like list_calendars or get_event. It precisely conveys what the tool does.

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

    Usage Guidelines3/5

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

    The description implies usage when you need metadata for a specific calendar by ID, but it does not explicitly state when to use this vs alternatives (e.g., list_calendars for enumerating calendars). No exclusions or prerequisites are mentioned.

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

  • Behavior2/5

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

    No annotations are provided, so the description alone must convey behavioral context. It merely states the read action without disclosing error handling, permissions, or response format, providing minimal transparency beyond what the name implies.

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

    Conciseness5/5

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

    The description is a single concise sentence, front-loading the action and resource without unnecessary words.

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

    Completeness3/5

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

    With no output schema, the description could clarify return details or error behavior, but for a simple event retrieval with two well-documented parameters, the description is minimally adequate.

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

    Parameters3/5

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

    Both parameters are fully described in the schema (100% coverage). The description adds little beyond the schema, only referencing UID, which aligns with eventId. No additional semantic value is provided.

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

    Purpose5/5

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

    The description clearly states the tool retrieves detailed information about a specific event using its UID, distinguishing it from list/search operations.

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

    Usage Guidelines3/5

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

    The description implies usage when a specific event UID is known, but does not explicitly contrast with sibling tools like list_events or search_events, leaving the selection guidance implicit.

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

  • Behavior2/5

    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 implies a read-only operation but does not describe the return format, pagination, or what 'currently loaded' means. This leaves significant room for ambiguity about side effects or state.

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

    Conciseness5/5

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

    The description is a single sentence of six words, with no redundancy. For a zero-parameter tool, this is appropriately concise and front-loaded with the essential information.

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

    Completeness3/5

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

    The tool is simple (no params, no output schema), but the description lacks detail about the return value and the concept of 'loaded' calendars. This could confuse an agent if the response format is crucial for downstream steps, though for a simple listing tool it is minimally sufficient.

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

    Parameters4/5

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

    The tool has zero parameters, so there is no parameter semantics to clarify. The schema is empty and the description adds no parameter-related information, but the baseline for zero-parameter tools is 4 since no compensation is needed.

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

    Purpose5/5

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

    The description clearly states the action (list) and resource (calendars), with 'currently loaded' adding scope. It distinguishes itself from sibling tools like list_events and get_calendar_info by targeting calendars as a whole.

    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?

    No guidance is provided on when to use this tool versus alternatives like get_calendar_info or list_events. The description does not mention exclusions or prerequisites, leaving the agent to infer appropriate usage from the name alone.

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

GitHub Badge

Glama performs regular codebase and documentation scans to:

  • Confirm that the MCP server is working as expected.
  • Confirm that there are no obvious security issues.
  • Evaluate tool definition quality.

Our badge communicates server capabilities, safety, and installation instructions.

Card Badge

ical-mcp MCP server

Copy to your README.md:

Score Badge

ical-mcp MCP server

Copy to your README.md:

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/jnss95/ical-mcp'

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