Connect to an AI agent
Overview
Want to connect your AI agent directly to the Edinburgh Festival Listings?
We've launched an MCP server that connects MCP-compatible AI agents directly to the Listings API. Use a commercially available client like Claude, Junie, or Antigravity to explore the listings, ask it questions, or build your own AI application with an MCP client library.
Model Context Protocol (MCP) is an open-source standard that lets AI applications like Claude connect to external tools, data sources, and services in a consistent way.
Under development: we're releasing this as a beta, treating the current tools and responses as experimental while we gather feedback and improve the service. If you're using it, or planning to, we'd love to hear your thoughts and suggestions.
Getting started
The MCP server offers a streamable HTTP transport at:
https://api.edinburghfestivalcity.com/mcp
Authentication
All requests to the MCP server require authentication by way of an HTTP Authorization header with a
Bearer token.
Most applications that can connect to MCP servers offer a way to add authentication, but not all authentication methods are supported by all applications.
Each API key you create will have a unique token you should treat securely. You can find a token for your API key within the key details on your profile.
Note: We do not currently support OAuth2, so you will need to send an Authorization header with a valid token on every request.
Configuration examples
Depending on your client and platform, each require slightly different config. We have included examples for some of the mainstream providers.
claude mcp add --transport http edinburgh_festivals https://api.edinburghfestivalcity.com/mcp \
--header "Authorization: Bearer <<<your-token>>>"
Claude Desktop uses local stdio processes by default. To connect an HTTP-based MCP server, you
must use a local stdio-to-HTTP bridge like mcp-remote.
{
"mcpServers": {
"edinburgh_festivals": {
"command": "npx",
"args": [
"mcp-remote",
"https://api.edinburghfestivalcity.com/mcp",
"--header",
"Authorization:Bearer <<<your-token>>>"
]
}
}
}
{
"mcpServers": {
"edinburgh_festivals": {
"serverUrl": "https://api.edinburghfestivalcity.com/mcp",
"headers": {
"Authorization": "Bearer <<<your-token>>>"
}
}
}
}
npx @modelcontextprotocol/inspector \
--transport http \
--server-url https://api.edinburghfestivalcity.com/mcp \
--header "Authorization: Bearer <<<your-token>>>"
Replace <<<your-token>>> with the token found in your access key details
Limitations & eschewed features
Response sizes and format
Currently, each request tool/call will respond with no more than 100 events.
We have reduced the size of the objects we return to minimal summary data on events.
This is to intentionally limit the amount of data returned in a single response as it would be both impractical to
return thousands of events and will only overload your LLM context, consuming tokens, and leading to instability in
your client
MCP does not support pagination of tool responses, and potentially
returning thousands of events in a single response is both impractical and will overload your context while
consuming significant numbers of tokens and credits.