Skip to main content
Glama

Disney Parks MCP Server

An MCP (Model Context Protocol) server that provides Disney parks data to Claude Code. Returns structured data for attractions, dining, and other park entities.

Features

  • Attraction data: Height requirements, Lightning Lane status, thrill levels, single rider availability

  • Dining data: Service type, meal periods, cuisine, reservations, mobile ordering

  • Fuzzy search: Find entities by name with intelligent matching

  • Auto-caching: 24-hour cache with SQLite persistence

  • Dual data sources: Disney Finder API (primary) with ThemeParks.wiki fallback

Related MCP server: mcp-themeparks

Installation

npm install
npm run build

Usage

With Claude Code

Add to your Claude Code MCP configuration:

{
  "mcpServers": {
    "disney": {
      "command": "node",
      "args": ["/path/to/mouse-mcp/dist/index.js"]
    }
  }
}

Development

# Run in development mode with auto-reload
npm run dev

# Type check without building
npm run check

# Test with MCP inspector
npm run inspector

Tools

disney_destinations

List all supported Disney destinations with their parks.

No parameters required

disney_attractions

Get attractions for a destination or park.

Parameter

Type

Required

Description

destination

string

Yes

wdw or dlr

parkId

string

No

Filter to specific park

filters.hasLightningLane

boolean

No

Only Lightning Lane attractions

filters.maxHeightRequirement

number

No

Max height in inches

filters.thrillLevel

string

No

family, moderate, or thrill

filters.hasSingleRider

boolean

No

Only single rider attractions

disney_dining

Get dining locations for a destination or park.

Parameter

Type

Required

Description

destination

string

Yes

wdw or dlr

parkId

string

No

Filter to specific park

filters.serviceType

string

No

table-service, quick-service, etc.

filters.mealPeriod

string

No

breakfast, lunch, dinner, snacks

filters.reservationsAccepted

boolean

No

Only reservation restaurants

filters.characterDining

boolean

No

Only character dining

disney_entity

Look up a specific entity by ID or fuzzy name search.

Parameter

Type

Required

Description

id

string

No*

Entity ID for exact lookup

name

string

No*

Entity name for fuzzy search

destination

string

No

Limit search to wdw or dlr

entityType

string

No

ATTRACTION or RESTAURANT

*Either id or name is required.

disney_status

Get server health and cache statistics.

Parameter

Type

Required

Description

includeDetails

boolean

No

Include entity breakdown

Configuration

Environment variables (all prefixed with MOUSE_MCP_):

Variable

Default

Description

MOUSE_MCP_LOG_LEVEL

INFO

Log level: DEBUG, INFO, WARN, ERROR

MOUSE_MCP_DB_PATH

~/.cache/mouse-mcp/disney.db

SQLite database path

MOUSE_MCP_TIMEOUT

30000

Request timeout in ms

MOUSE_MCP_HEADLESS

true

Run Playwright in headless mode

Architecture

┌─────────────────────────────────────────────────────────────┐
│                     MCP Server                               │
│  ┌─────────────────────────────────────────────────────┐   │
│  │                    Tools                             │   │
│  │  destinations | attractions | dining | entity | status │
│  └─────────────────────────────────────────────────────┘   │
│                           │                                  │
│  ┌─────────────────────────────────────────────────────┐   │
│  │                  API Clients                         │   │
│  │  ┌─────────────────┐    ┌─────────────────┐        │   │
│  │  │ Disney Finder   │───▶│ ThemeParks.wiki │        │   │
│  │  │    (primary)    │    │   (fallback)    │        │   │
│  │  └─────────────────┘    └─────────────────┘        │   │
│  │           │                                          │   │
│  │  ┌─────────────────┐                                │   │
│  │  │ Session Manager │ (Playwright auth)              │   │
│  │  └─────────────────┘                                │   │
│  └─────────────────────────────────────────────────────┘   │
│                           │                                  │
│  ┌─────────────────────────────────────────────────────┐   │
│  │                   SQLite Database                    │   │
│  │  sessions | cache | entities (with FTS5)            │   │
│  └─────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────┘

Supported Destinations

Walt Disney World Resort (wdw)

  • Magic Kingdom Park

  • EPCOT

  • Disney's Hollywood Studios

  • Disney's Animal Kingdom Theme Park

Disneyland Resort (dlr)

  • Disneyland Park

  • Disney California Adventure Park

License

MIT

Available Tools

7 tools
discoverA

Discover Disney experiences using natural language. Uses semantic search to find entities matching concepts like 'thrill rides for teenagers', 'romantic dinner spots', or 'character breakfast'. Requires initialize to be run first. For exact name lookups, use search instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesNatural language query describing what you're looking for (e.g., 'thrill rides', 'romantic dinner', 'kid-friendly attractions')
destinationNoLimit search to a destination: 'wdw' or 'dlr'
entityTypeNoFilter by entity type
limitNoMaximum number of results (default: 5, max: 20)

TDQS

A4.1/5.0
Behavior3/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 mentions the semantic search approach and the initialize prerequisite, which adds useful context. However, it doesn't describe what happens when the tool is invoked (e.g., response format, error handling, or performance characteristics like rate limits), leaving gaps in behavioral understanding.

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 perfectly front-loaded and concise with three sentences that each earn their place: the core purpose, the semantic search mechanism with examples, the prerequisite, and the alternative tool guidance. There is zero wasted text, making it highly efficient.

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?

Given the tool's moderate complexity (4 parameters, semantic search functionality) and no output schema, the description provides good purpose and usage guidance but lacks details about what the tool returns. Without annotations or output schema, the agent won't know the format or structure of results, which is a significant gap for a discovery tool.

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 description coverage is 100%, so the schema already fully documents all four parameters. The description mentions 'natural language query' which aligns with the query parameter's schema description, but doesn't add significant meaning beyond what's already in the structured schema. The baseline of 3 is appropriate when the schema does the heavy lifting.

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's purpose with specific verbs ('discover Disney experiences') and resources ('entities'), and explicitly distinguishes it from the sibling 'search' tool for exact name lookups. It provides concrete examples of what can be discovered, making the purpose immediately understandable.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool ('using natural language', 'semantic search to find entities matching concepts') versus when to use alternatives ('For exact name lookups, use search instead'). It also specifies a prerequisite ('Requires initialize to be run first'), giving clear context for proper usage.

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

find_attractionsA

Find attractions at Disney parks with filters. Returns ride metadata including height requirements, Lightning Lane status, thrill level, and single rider availability. Use list_parks first to get valid destination and park IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
destinationYesDestination ID: 'wdw' (Walt Disney World) or 'dlr' (Disneyland Resort)
parkIdNoFilter to a specific park by ID (e.g., '80007944' for Magic Kingdom). Get park IDs from list_parks.
filtersNoOptional filters to narrow results

TDQS

A4.2/5.0
Behavior3/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 behavioral disclosure. It describes what the tool returns (ride metadata with specific attributes) and implies a read-only operation by using 'Find' and 'Returns,' but it doesn't mention potential limitations like rate limits, authentication needs, or error conditions. The description adds some context about the return data but lacks comprehensive behavioral traits.

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 front-loaded with the core purpose in the first sentence, followed by return details and usage guidance. Every sentence earns its place by providing essential information without redundancy, making it efficient and well-structured.

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

Completeness4/5

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

Given the complexity (3 parameters with nested objects, no annotations, no output schema), the description is reasonably complete. It covers the purpose, return data, and usage prerequisites. However, it could improve by addressing potential behavioral aspects like error handling or data freshness, which are not covered by annotations or output schema.

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?

Schema description coverage is 100%, so the input schema already documents all parameters thoroughly. The description adds minimal value beyond the schema by mentioning 'filters' generically and referencing 'list_parks' for IDs, but it doesn't provide additional syntax, format details, or examples. Baseline 3 is appropriate when the schema does the heavy lifting.

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 specific action ('Find attractions at Disney parks with filters') and resource ('attractions'), distinguishing it from siblings like 'find_dining' or 'list_parks'. It specifies the exact type of metadata returned (ride metadata including height requirements, Lightning Lane status, thrill level, and single rider availability), making the purpose highly specific and differentiated.

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

Usage Guidelines5/5

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

The description explicitly states 'Use list_parks first to get valid destination and park IDs,' providing clear prerequisites and guidance on when to use this tool versus alternatives. It distinguishes this tool from 'list_parks' by indicating that 'list_parks' should be used first to obtain necessary IDs, establishing a clear workflow.

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

find_diningA

Find dining locations at Disney parks with filters. Returns restaurant metadata including service type, meal periods, cuisine, price range, and reservation requirements. Use list_parks first to get valid destination and park IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
destinationYesDestination ID: 'wdw' (Walt Disney World) or 'dlr' (Disneyland Resort)
parkIdNoFilter to a specific park by ID. Get park IDs from list_parks.
filtersNoOptional filters to narrow results

TDQS

A4.2/5.0
Behavior3/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 discloses the return format (restaurant metadata with specific fields) and hints at filtering behavior, but lacks details on rate limits, error handling, pagination, or authentication needs. For a tool with no annotations, this is a moderate disclosure—adequate but with gaps.

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 front-loaded with the core purpose, followed by return details and a usage guideline. Both sentences earn their place—the first defines the tool, and the second provides critical context. It's efficient with zero waste, making it highly concise and well-structured.

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

Completeness4/5

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

Given no annotations and no output schema, the description does well by specifying return metadata and prerequisites. However, it lacks details on behavioral aspects like rate limits or error handling. For a tool with 3 parameters and nested objects, it's mostly complete but could improve by addressing missing behavioral transparency.

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?

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal value beyond the schema, mentioning filters generally but not elaborating on parameter usage. With high schema coverage, the baseline is 3, and the description doesn't significantly enhance parameter understanding.

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 specific action ('Find dining locations at Disney parks with filters') and resource ('restaurant metadata'), distinguishing it from siblings like find_attractions (which focuses on attractions rather than dining) and list_parks (which lists parks rather than restaurants). It provides a comprehensive list of what metadata is returned, making the purpose explicit and differentiated.

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

Usage Guidelines5/5

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

The description explicitly states 'Use list_parks first to get valid destination and park IDs,' providing clear prerequisites and guidance on when to use this tool versus alternatives. It doesn't mention other siblings like search or discover, but the specific instruction for list_parks as a prerequisite is sufficient for a top score.

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

initializeA

Initialize the server by loading all Disney park data and generating embeddings for semantic search. Call this once before using discover for meaning-based queries. Returns statistics about loaded entities and embedding generation progress.

ParametersJSON Schema
NameRequiredDescriptionDefault
destinationNoSync specific destination. Currently only 'wdw' (Walt Disney World) is supported.
skipEmbeddingsNoSkip embedding generation (faster, but semantic search won't work)
forceNoForce fresh fetch from API, bypassing cache. Use to retry Disney API after session established.

TDQS

A4.4/5.0
Behavior4/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 effectively describes what the tool does (loads data, generates embeddings), mentions the output ('Returns statistics about loaded entities and embedding generation progress'), and implies it's a setup/initialization operation. However, it doesn't mention potential side effects like data persistence, time requirements, or error conditions.

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 perfectly concise with three sentences that each earn their place: the core functionality, usage guidance, and return value. It's front-loaded with the main purpose and wastes no words while covering essential information.

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

Completeness4/5

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

Given the tool's complexity (server initialization with data loading and embedding generation) and the absence of both annotations and output schema, the description does well by explaining the purpose, usage context, and return values. However, it could be more complete by mentioning potential performance implications, error handling, or what happens on subsequent calls.

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?

Schema description coverage is 100%, so the schema already fully documents all three parameters. The description doesn't add any parameter-specific information beyond what's in the schema, so it meets the baseline expectation but doesn't provide additional semantic context about how parameters affect the initialization process.

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 specific action ('initialize the server by loading all Disney park data and generating embeddings for semantic search') and distinguishes it from sibling tools by explicitly mentioning 'discover' as the tool to use after initialization. It specifies both the verb ('initialize') and the resource ('server' with Disney park data).

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool ('Call this once before using discover for meaning-based queries'), which clearly distinguishes it from alternatives like 'discover' and other search/find tools. It establishes a clear prerequisite relationship with the 'discover' tool.

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

list_parksA

List all Disney parks with their IDs, names, and locations. Returns Walt Disney World (wdw) and Disneyland Resort (dlr) with their theme parks. Use park IDs from this response when filtering attractions or dining.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior3/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 describes the return content (IDs, names, locations) and scope (Walt Disney World and Disneyland Resort theme parks), but lacks details on rate limits, error handling, or response format. It adds some context but does not fully compensate for the absence of annotations.

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 front-loaded with the core purpose in the first sentence, followed by usage guidance in the second. Every sentence earns its place by providing essential information without waste, making it efficient and well-structured for quick understanding.

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

Completeness4/5

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

Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is complete enough for its purpose. It explains what the tool returns and how to use the output with sibling tools. However, without an output schema, it could benefit from more detail on the response structure, but it adequately covers the basics.

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 input schema has 0 parameters with 100% coverage, so no parameter information is needed. The description appropriately does not discuss parameters, focusing instead on the tool's output and usage. This meets the baseline for tools with no parameters, as it adds value without unnecessary details.

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's purpose with specific verbs ('List all Disney parks') and resources ('parks with their IDs, names, and locations'), and distinguishes it from siblings by specifying it returns only Walt Disney World and Disneyland Resort theme parks. It explicitly mentions what the tool does beyond just restating the name.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool by stating 'Use park IDs from this response when filtering attractions or dining,' which directly references sibling tools like find_attractions and find_dining. It clearly indicates this tool should be used first to obtain IDs for filtering in other operations.

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

statusA

Get server health status, session state, and cache statistics. Useful for debugging data freshness and connectivity issues.

ParametersJSON Schema
NameRequiredDescriptionDefault
includeDetailsNoInclude detailed cache and entity breakdown (default: false)

TDQS

A3.7/5.0
Behavior3/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 discloses the tool's purpose and use case but lacks details on behavioral traits like performance characteristics, error handling, or whether it requires specific permissions. The mention of 'debugging' implies it's safe and read-only, but this isn't explicitly 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 appropriately sized with two sentences that are front-loaded and efficient. The first sentence states the purpose, and the second provides usage context, with no wasted words or redundancy.

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?

Given the tool's low complexity (1 optional parameter, no output schema), the description is somewhat complete but lacks details on return values or error conditions. Without annotations or an output schema, it should ideally specify what 'health status' or 'cache statistics' entail, but it's adequate for a simple diagnostic tool.

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, so the schema already documents the 'includeDetails' parameter. The description doesn't add meaning beyond what the schema provides, such as explaining the impact of setting 'includeDetails' to true. With high schema coverage, 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.

Purpose4/5

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

The description clearly states the tool's purpose with specific verbs ('Get server health status, session state, and cache statistics') and identifies the resource being accessed. It distinguishes itself from siblings like 'list_parks' or 'search' by focusing on system diagnostics rather than data retrieval, though it doesn't explicitly name alternatives for similar functions.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool ('Useful for debugging data freshness and connectivity issues'), which helps differentiate it from other tools. However, it doesn't explicitly state when not to use it or name specific alternative tools for overlapping purposes, such as checking connectivity via other means.

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

TDQS

A4.1/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose with no significant overlap. For example, 'discover' handles semantic/conceptual queries, 'search' handles exact name lookups, and tools like 'find_attractions' and 'find_dining' target specific resource types. The descriptions explicitly differentiate between similar tools (e.g., 'discover' vs. 'search'), preventing agent confusion.

Naming Consistency4/5

Most tools follow a consistent verb_noun pattern (e.g., 'find_attractions', 'find_dining', 'list_parks', 'search'), but 'discover' and 'initialize' deviate slightly by using single verbs without nouns. However, these deviations are minor and still readable, maintaining overall clarity without chaotic mixing of conventions.

Tool Count5/5

With 7 tools, the count is well-scoped for the Disney parks domain, covering core operations like data initialization, park listing, attraction/dining discovery, and health checks. Each tool earns its place by addressing specific needs, such as semantic search, exact lookups, and filtered queries, without being overly sparse or bloated.

Completeness4/5

The tool surface covers essential CRUD-like operations for the domain, including initialization, listing, searching, and filtering for attractions and dining. Minor gaps exist, such as no explicit update or delete tools for dynamic data (e.g., ride wait times), but agents can work around this using the provided tools for discovery and status checks.

Maintenance

ActivityStale
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

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/cameronsjo/mouse-mcp'

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