← Back to docs

MCP Integration

Connect AI agents to your EmbedACal calendar feeds via the Model Context Protocol. Works with Claude, Cursor, ChatGPT, and any MCP-compatible client.

Overview

EmbedACal provides an MCP server that lets AI agents query your calendar events. You can use it in two ways:

  • npm package — Install @embedacal/mcp and run locally via stdio
  • Hosted endpoint — Connect directly to https://embedacal.com/api/mcp/mcp via Streamable HTTP

Both methods require an API key, generated in your dashboard settings.

Get an API Key

  1. Go to Dashboard → Settings
  2. Scroll to the “API Keys” section
  3. Enter a name (e.g. “Claude Desktop”) and click “Generate key”
  4. Copy the key immediately — it's only shown once

You can create up to 5 API keys per organization. Revoke unused keys from the same settings page.

npm Package (stdio)

The npm package runs as a local process and communicates via stdio. This is the recommended approach for Claude Desktop and Cursor.

bash
npm install -g @embedacal/mcp

Or run directly with npx (no install needed):

bash
EMBEDACAL_API_KEY=eca_your_key npx @embedacal/mcp

Hosted Endpoint

For clients that support Streamable HTTP, connect directly without installing anything:

text
https://embedacal.com/api/mcp/mcp

For stdio-only clients, you can bridge to the hosted endpoint using mcp-remote:

bash
npx mcp-remote https://embedacal.com/api/mcp/mcp

Claude Desktop

Add the following to your Claude Desktop configuration file (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

json
{
  "mcpServers": {
    "embedacal": {
      "command": "npx",
      "args": ["@embedacal/mcp"],
      "env": {
        "EMBEDACAL_API_KEY": "eca_your_key_here"
      }
    }
  }
}

Restart Claude Desktop. You'll see EmbedACal tools available in the tools menu.

Cursor

Add to your Cursor MCP configuration (.cursor/mcp.json in your project or global settings):

json
{
  "mcpServers": {
    "embedacal": {
      "command": "npx",
      "args": ["@embedacal/mcp"],
      "env": {
        "EMBEDACAL_API_KEY": "eca_your_key_here"
      }
    }
  }
}

Or use the hosted endpoint directly:

json
{
  "mcpServers": {
    "embedacal": {
      "url": "https://embedacal.com/api/mcp/mcp"
    }
  }
}

ChatGPT

ChatGPT supports MCP via remote endpoints. Use the hosted Streamable HTTP URL:

text
https://embedacal.com/api/mcp/mcp

When prompted, provide your API key as a tool parameter for the list-feeds tool to authenticate.

Available Tools

Toollist-feeds

List all calendar feeds for your organization. Returns feed slugs, URLs, status, and event counts.

ParameterTypeDescription
apiKeystringYour EmbedACal API key (hosted endpoint only)
Toolget-feed-info

Get detailed information about a specific calendar feed.

ParameterTypeDescription
feedSlugstringThe slug identifier of the feed
Toolget-events

Get upcoming events from a calendar feed, sorted by date.

ParameterTypeDescription
feedSlugstringThe slug identifier of the feed
perPagenumber?Number of events (max 100, default 20)
Toolsearch-events

Search for events by keyword across titles, descriptions, cities, states, and addresses.

ParameterTypeDescription
feedSlugstringThe slug identifier of the feed
querystringSearch query
perPagenumber?Number of results (max 100, default 20)
Toolget-nearby-events

Find events near a geographic location, sorted by distance.

ParameterTypeDescription
feedSlugstringThe slug identifier of the feed
latitudenumberLatitude of center point
longitudenumberLongitude of center point
radiusMilesnumber?Search radius in miles (default 100)
perPagenumber?Number of results (max 100, default 20)
Toolget-calendar-month

Get all events for a specific calendar month.

ParameterTypeDescription
feedSlugstringThe slug identifier of the feed
yearnumberYear (e.g. 2026)
monthnumberMonth (1-12)