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/mcpand run locally via stdio - Hosted endpoint — Connect directly to
https://embedacal.com/api/mcp/mcpvia Streamable HTTP
Both methods require an API key, generated in your dashboard settings.
Get an API Key
- Go to Dashboard → Settings
- Scroll to the “API Keys” section
- Enter a name (e.g. “Claude Desktop”) and click “Generate key”
- 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.
npm install -g @embedacal/mcpOr run directly with npx (no install needed):
EMBEDACAL_API_KEY=eca_your_key npx @embedacal/mcpHosted Endpoint
For clients that support Streamable HTTP, connect directly without installing anything:
https://embedacal.com/api/mcp/mcpFor stdio-only clients, you can bridge to the hosted endpoint using mcp-remote:
npx mcp-remote https://embedacal.com/api/mcp/mcpClaude Desktop
Add the following to your Claude Desktop configuration file (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"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):
{
"mcpServers": {
"embedacal": {
"command": "npx",
"args": ["@embedacal/mcp"],
"env": {
"EMBEDACAL_API_KEY": "eca_your_key_here"
}
}
}
}Or use the hosted endpoint directly:
{
"mcpServers": {
"embedacal": {
"url": "https://embedacal.com/api/mcp/mcp"
}
}
}ChatGPT
ChatGPT supports MCP via remote endpoints. Use the hosted Streamable HTTP URL:
https://embedacal.com/api/mcp/mcpWhen prompted, provide your API key as a tool parameter for the list-feeds tool to authenticate.
Available Tools
list-feedsList all calendar feeds for your organization. Returns feed slugs, URLs, status, and event counts.
| Parameter | Type | Description |
|---|---|---|
| apiKey | string | Your EmbedACal API key (hosted endpoint only) |
get-feed-infoGet detailed information about a specific calendar feed.
| Parameter | Type | Description |
|---|---|---|
| feedSlug | string | The slug identifier of the feed |
get-eventsGet upcoming events from a calendar feed, sorted by date.
| Parameter | Type | Description |
|---|---|---|
| feedSlug | string | The slug identifier of the feed |
| perPage | number? | Number of events (max 100, default 20) |
search-eventsSearch for events by keyword across titles, descriptions, cities, states, and addresses.
| Parameter | Type | Description |
|---|---|---|
| feedSlug | string | The slug identifier of the feed |
| query | string | Search query |
| perPage | number? | Number of results (max 100, default 20) |
get-nearby-eventsFind events near a geographic location, sorted by distance.
| Parameter | Type | Description |
|---|---|---|
| feedSlug | string | The slug identifier of the feed |
| latitude | number | Latitude of center point |
| longitude | number | Longitude of center point |
| radiusMiles | number? | Search radius in miles (default 100) |
| perPage | number? | Number of results (max 100, default 20) |
get-calendar-monthGet all events for a specific calendar month.
| Parameter | Type | Description |
|---|---|---|
| feedSlug | string | The slug identifier of the feed |
| year | number | Year (e.g. 2026) |
| month | number | Month (1-12) |