Skip to main content
Glama
richarda23

Edinburgh Festivals MCP Server

by richarda23
README.md
# edfringe-mcp

An MCP server to query the Edinburgh Festivals API for information about events and venues for all the Edinburgh festivals, inluding historical data.

Note that access to  Fringe event data for 2025 is  only  supported on request. Running this MCP remotely would need approval by Edinburgh Fringe. 

<a href="https://glama.ai/mcp/servers/@richarda23/edfest-mcp">
  <img width="380" height="200" src="https://glama.ai/mcp/servers/@richarda23/edfest-mcp/badge" alt="Edinburgh Festivals Server MCP server" />
</a>

## Tools

- `search_edinburgh_festivals`: Search for events based on location, genre, date, or text.
- `search_edinburgh_festival_venues`: Search for venues based on festival type, postcode or other criteria.

Some prompts are also available to frame queries with correct context.

## Example queries 

- what's on at the Gilded Balloon tonight? -> Which of these are comedy? 
- What disabled access is there at the Assembly rooms?
- When did Gordon Brown last speak at the Book festival?

If you have a Google Maps key added, routing and navigation is supported too  or, install a Google Maps MCP)

- How long does it take to walk between the Gilded Balloon and the Pleasance?
- 
  
## Requirements

- Python 3.12+
- [uv](https://docs.astral.sh/uv/#highlights)

## Setup

1. [Create an Edinburgh Festival API account](https://api.edinburghfestivalcity.com/documentation).

2. Clone or download this project.  
   Create a `.env` file in the project root containing:
    ```
    api_secret=your_secret
    api_key=your_key
    ```

    If you have a Google Maps API key you can add

    ```
    GOOGLE_MAPS_API_KEY=your API key
    ```
    and that will enable timing and route calculations between venues. 

3. Install dependencies:
    ```
    uv sync
    ```

4. Add the following MCP configuration to your `mcp.json` config file in your LLM client app:
    ```json
    "edinburghFestival": {
        "command": "uv",
        "args": [
            "--directory",
            "/full/path/to/edfringe-mcp",
            "run",
            "main.py"
        ]
    }
    ```

## Development

Running tests:

    uv sync --all-groups
    uv run pytest

## License

This project is licensed under the MIT License. See [LICENSE](LICENSE) for details.

TDQS

B3/5.0

Scored across 3 tools

Disambiguation5/5

The three tools have clearly distinct purposes: one searches for events, one searches for venues, and one calculates routes between venues. There is no overlap in functionality, making it easy for an agent to select the right tool for each task.

Naming Consistency5/5

All tool names follow a consistent snake_case pattern with the prefix 'edinburgh_festival_' followed by a descriptive noun phrase (events, venue_routes, venues). This uniformity makes the tool set predictable and easy to understand.

Tool Count3/5

With only three tools, the server feels somewhat thin for a festivals domain that might benefit from additional operations like booking tickets, getting event details, or managing schedules. However, the tools cover core search and navigation needs, keeping it borderline but functional.

Completeness3/5

The tools provide good search capabilities for events and venues, plus route calculation, but there are notable gaps. For example, there is no tool to retrieve detailed information about a specific event or venue, update data, or handle user interactions like favorites or reviews, which limits comprehensive festival management.

Maintenance

ActivityInactive
ResponsivenessNo issues