Skip to main content
Glama

Server Details

The Ferryhopper MCP server is a connector for LLMs and AI Agents in maritime travel that exposes ferry routes, schedules, and booking options. It enables AI assistants to search ports and connections across 33 countries and 190+ ferry operators, provide real-time ferry itineraries with indicative prices, and assist users with planning island-hopping or multi-leg journeys by processing natural language queries about ferry times, passenger counts, and travel durations.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.1/5 across 6 of 6 tools scored.

Server CoherenceA
Disambiguation4/5

Each tool serves a distinct purpose (ports, connections, disruptions, trip search, trip details), but the presence of both search_trips and its deprecated v2 creates overlap. The clear deprecation note mitigates ambiguity, so it's mostly distinct.

Naming Consistency4/5

Most tools follow a verb_noun pattern (get_direct_connections_for_ports, get_disruptions, get_ports, search_trips, search_trips_v2). However, trip_details swaps the order to noun_noun, which deviates from the established convention.

Tool Count5/5

Six tools well cover the domain of ferry travel information: port lookup, route discovery, trip search (with v2 supporting round-trips), trip details, and disruptions. No redundancy or bloat; each tool earns its place.

Completeness4/5

The surface covers the key informational workflows: finding ports, routes, trips, and details, plus disruption alerts. It lacks booking functionality, but the server's purpose appears to be planning/quoting rather than booking, so the gap is acceptable.

Available Tools

6 tools
get_direct_connections_for_portsGet Direct ConnectionsA
Read-only
Inspect

Find all direct ferry routes and reachable destination ports from a given origin port without layovers or transfers.

ParametersJSON Schema
NameRequiredDescriptionDefault
portLocationYesLocation name or search term used to find matching ports (not limited to exact port codes).

Output Schema

ParametersJSON Schema
NameRequiredDescription
departurePortYesThe name of the departure port
connectedDestinationsYesList of ports directly connected to the departure port
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds the behavioral constraint of returning only direct, non-stop routes, which goes beyond the readOnlyHint annotation. The annotation already establishes that the operation is read-only and safe; the description enriches this by clarifying the filtering behavior. It does not mention edge cases like empty results, but given the readOnlyHint and the presence of an output schema, this is adequate.

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 a single, well-structured sentence that front-loads the main action and key constraint. It is concise without sacrificing necessary information, making it easy to parse quickly. No unnecessary words or repetition.

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

Completeness5/5

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

Given the tool's simplicity (one parameter, read-only operation), full schema coverage, and existing safety annotations, the description provides all necessary context. It explains what the tool does, the direct-route filter, and the origin port requirement. The return value structure is presumably covered by the output schema, so there are no obvious gaps.

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 schema already has 100% coverage for the portLocation parameter, describing it as a 'Location name or search term used to find matching ports'. The tool description adds that this is the origin port ('from a given origin port'), clarifying the parameter's role beyond the generic schema description. This is meaningful additional context, though not extensive.

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 function: finding direct ferry routes without layovers. It uses a specific verb 'Find', specifies the resource 'direct ferry routes and reachable destination ports', and includes the key differentiator 'without layovers or transfers' which distinguishes it from trip search tools like search_trips that may include connections. An agent can immediately understand its purpose and difference from siblings.

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

Usage Guidelines3/5

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

The description implies usage when direct connections from a single origin are needed, as it explicitly states 'without layovers or transfers'. However, it does not name alternative tools like search_trips or provide explicit when-not-to-use conditions. The usage context is only implied, not clearly delineated with alternatives or exclusions.

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

get_disruptionsGet DisruptionsA
Read-only
Inspect

Find all ferry travel disruptions, including delays, weather alerts, and strikes for a given date and country.

ParametersJSON Schema
NameRequiredDescriptionDefault
countryYesISO 3166-1 alpha-2 country code to filter disruptions by country (e.g. "GR" for Greece).
tripDateYesDeparture date in ISO format YYYY-MM-DD (e.g. 2026-03-15).

Output Schema

ParametersJSON Schema
NameRequiredDescription
disruptionsYesList of active disruptions matching the requested date and country.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description does not need to restate the tool's read-only nature. It adds a small behavioral detail by listing the types of disruptions (delays, weather alerts, strikes), which provides context, but it does not disclose any side effects or limitations beyond what annotations already indicate. The description aligns with the 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 a single, well-structured sentence that front-loads the primary action ('Find all ferry travel disruptions') and packs the scope ('for a given date and country') efficiently. Every word contributes to conveying the tool's purpose without redundancy or filler.

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?

The tool has a clear purpose, two required parameters with thorough schema descriptions, an output schema (so return format is assumed to be known), and annotations covering the safety profile. The description is sufficient for an agent to understand when to invoke it and what inputs to provide. No critical information about calling the tool is missing, though it does not mention any pagination or filtering nuances.

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%, with both parameters (country and tripDate) having clear descriptions including format examples. The description's phrase 'for a given date and country' simply repeats what the schema already documents. It adds no extra meaning beyond the schema, so a baseline of 3 is appropriate.

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 uses a specific verb 'Find' and names the resource 'ferry travel disruptions' with concrete examples (delays, weather alerts, strikes). The tool name 'get_disruptions' is also specific, and it is clearly distinct from siblings like search_trips or trip_details, which focus on connections and itineraries. The purpose is unambiguous.

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

Usage Guidelines3/5

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

The description does not explicitly mention when to use this tool versus alternatives, but the purpose is clear enough that an agent can infer it should be used when disruptions are relevant. It does not provide any 'when not to use' guidance or mention sibling tools, so usage is implied rather than explicit.

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

get_portsGet PortsA
Read-only
Inspect

Find ferry ports, harbors, maritime terminals, port IDs, codes, and geographic locations.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
portsYes
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered at the structured level. The description adds a preview of what results contain (IDs, codes, locations) and does not contradict the annotations. It omits scope (all ports vs. regional), ordering, or pagination, but with a zero-parameter read tool this is a modest gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler. The only minor issue is mild redundancy in the list ('ferry ports, harbors, maritime terminals' are overlapping categories), but it is short, scannable, and every clause contributes meaning.

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?

For a zero-parameter, read-only listing tool with an output schema, the description is essentially complete: it states what is found and what the caller receives. It could note whether the port set is exhaustive or filtered by a region, but nothing an agent needs to invoke it correctly is missing.

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?

There are 0 parameters, so the baseline is 4 — there is nothing to describe beyond the schema, which is empty. The description usefully signals what the caller can expect back (port IDs, codes, geographic locations), which is the meaningful semantic content for a param-less listing tool.

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 has a specific verb ('Find') and a clear resource class: ferry ports, harbors, and maritime terminals, plus what it returns (port IDs, codes, geographic locations). It is distinct from the siblings, which cover trips, disruptions, and connections. However, it doesn't name or explicitly contrast any sibling, so differentiation is left implicit.

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

Usage Guidelines3/5

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

Usage context is implied by the resource type — this returns port identifiers that would feed sibling tools like trip or connection lookups — but there is no explicit when-to-use guidance or mention of alternatives. The purpose is self-evident enough that an agent would not misroute it, but no exclusion or priority is stated.

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

search_tripsSearch Trips (Deprecated)A
Read-only
Inspect

Deprecated: prefer search_trips_v2, which covers this tool plus round-trip search and per-segment availability flags. Get a list of available one-way ferry trips between two ports on a specific date.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesDeparture date in ISO format YYYY-MM-DD (e.g. 2026-03-15).
arrivalLocationYesArrival location as a human-readable name or search term (e.g. city, port name), not a port code.
departureLocationYesDeparture location as a human-readable name or search term (e.g. city, port name), not a port code.

Output Schema

ParametersJSON Schema
NameRequiredDescription
foundDirectItinerariesForTripYes
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds useful behavioral context by specifying that it only returns one-way trips and is deprecated. It doesn't contradict annotations and adds the one-way limitation, which goes beyond the structured fields.

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?

Two sentences with no waste. The deprecation warning and redirect are front-loaded, followed by a concise statement of the tool's function. Every word earns its place.

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?

The tool has an output schema (so return format is covered), annotations covering safety, and the description adds deprecation status and one-way scope. It doesn't discuss error conditions or edge cases, but for a deprecated shim tool, it provides enough context for an agent to use or avoid it correctly.

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 fully documents all three parameters. The description only implies the port relationship ('between two ports') and doesn't add detail beyond what the schema provides. Baseline 3 is appropriate when the schema carries the parameter meaning.

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 a specific verb and resource: 'Get a list of available one-way ferry trips between two ports on a specific date.' It also distinguishes itself from the sibling by explicitly naming search_trips_v2 as the preferred replacement, making its scope unambiguous.

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 says 'Deprecated: prefer search_trips_v2' and explains what the alternative covers ('round-trip search and per-segment availability flags'). This gives clear when-to-use and when-not-to-use guidance, effectively routing the agent away from this tool.

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

search_trips_v2Search Trips (v2)A
Read-only
Inspect

Get a list of available ferry trips between two ports on a specific date. Supports round-trip searches when a return date is provided. Availability flags (cabin, vehicles, pets, e-ticket) are reported per segment.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesDeparture date in ISO format YYYY-MM-DD (e.g. 2026-03-15).
returnDateNoReturn date in ISO format YYYY-MM-DD. When provided, the search returns round-trip booking solutions pairing an outbound and return trip.
arrivalLocationYesArrival location as a human-readable name or search term (e.g. city, port name), not a port code.
departureLocationYesDeparture location as a human-readable name or search term (e.g. city, port name), not a port code.

Output Schema

ParametersJSON Schema
NameRequiredDescription
tripsByIdYesLookup of every trip (one direction of travel) referenced anywhere in bookingSolutions, keyed by trip id. Trip data lives here once even if the same trip appears in multiple booking solutions — resolve the ids in bookingSolutions[].trips against this object rather than expecting inline trip data.
bookingSolutionsYes
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds that availability flags (cabin, vehicles, pets, e-ticket) are reported per segment, which is useful behavioral context. Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the description does not carry the full safety burden. It does not mention pagination, rate limits, or that results may change (though openWorldHint covers the latter).

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?

Two concise sentences front-load the core purpose, then add round-trip and per-segment details. No filler or redundant repetition of schema info.

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 existence of an output schema, the description doesn't need to detail return values. It covers primary functionality, round-trip behavior, and availability flags. Minor gaps like pagination or ordering are not addressed but are not critical for basic invocation.

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 every parameter (date, returnDate, departureLocation, arrivalLocation) already has a clear description in the schema. The tool description adds no additional parameter-level meaning beyond what's in the schema, matching the baseline of 3.

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 returns available ferry trips between ports on a date, with round-trip support and per-segment availability flags. It is specific on the resource and action, but does not explicitly differentiate from the sibling tool 'search_trips', so the v2 distinction is left to inference.

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

Usage Guidelines3/5

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

Usage is implied by the description: it supports round-trip when a return date is provided, which hints at when to use it over a one-way search. However, there is no explicit guidance on when to choose this tool versus 'search_trips' or when not to use it, leaving the agent to infer.

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

trip_detailsTrip DetailsA
Read-only
Inspect

Get full details for a single sailing leg, looked up by the tripId returned by search_trips_v2. Returns the trip's departure/arrival time, ports, and operating company, plus the vessel's technical specs, onboard amenities, and photos. Use this to answer questions about a vessel such as: does it have wifi / a restaurant / a snack bar / an open deck / a lift or elevator / wheelchair or disabled access / a designated smoking area? Is it pet-friendly, or does it allow pets on board? Does it have cabins, or a garage / vehicle deck for cars and motorbikes? How many passengers or vehicles does it carry (capacity)? How long is the vessel (length in meters)? What is its IMO number or MMSI (maritime identification numbers used for registry/tracking lookups)? Is this vessel accessible, family-friendly, or suitable for passengers who need mobility assistance? What does the vessel look like (photos)? If no detailed specs exist for the vessel in the source system, vessel.hasDetails is returned as false and every spec/amenity field is null — this means the data is unavailable, not that the vessel lacks that amenity. Also returns the trip's bookable accommodation tiers (seat/cabin classes) with their price and a photo of that accommodation, when available. Throws if the tripId is malformed or the trip is no longer bookable (e.g. it has already departed, was cancelled, or sold out) — re-run search_trips_v2 to get a fresh tripId in that case.

ParametersJSON Schema
NameRequiredDescriptionDefault
tripIdYesThe trip identifier for a single sailing leg, as returned in tripsById/bookingSolutions by search_trips_v2. Do not fabricate this value.

Output Schema

ParametersJSON Schema
NameRequiredDescription
tripYes
vesselYes
vesselImagesYesVessel photos ordered for display (e.g. in a carousel). Empty if no photos are available.
accommodationsYesBookable accommodation tiers for this trip (seat/cabin classes), one entry per fare code as priced by the source system — multiple entries may share the same type/image at different prices (e.g. different berth counts within the same cabin category).
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true and openWorldHint=true, but the description goes far beyond that. It explains the critical semantic that null spec/amenity fields mean 'data unavailable, not that the vessel lacks that amenity,' which is essential for correct interpretation. It also discloses the throw behavior on malformed or unbookable trips and instructs recovery. This is substantial behavioral context not present in annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but extremely well-organized: a one-sentence summary, a list of concrete queries it supports, null-semantics explanation, accommodation tier note, and error handling. Each section serves a distinct purpose and there is no redundancy. While it could be trimmed, the length is justified by the breadth of questions the tool answers, so it earns a 4 rather than a 3.

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

Completeness5/5

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

With an output schema present, return structure is already documented. The description covers the input requirement (tripId from search_trips_v2), the data semantics (nulls mean unavailable), the error conditions and recovery, and the scope of information returned (including accommodation tiers). Nothing an agent needs to correctly invoke and interpret this tool is missing.

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?

Schema coverage is 100%, so the schema already defines tripId as the identifier from search_trips_v2 and warns not to fabricate it. The description adds meaning by reinforcing the source requirement and explaining that an invalid or non-bookable trip causes an error, implying the value must be current and valid. This is a meaningful addition beyond the schema's static definition, though not excessive.

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 opens with a precise verb and resource: 'Get full details for a single sailing leg,' and explicitly states the lookup mechanism via tripId from search_trips_v2. This clearly separates it from siblings like search_trips_v2 (which searches) and get_ports (which fetches ports). The purpose is unambiguous and immediately actionable.

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 ties usage to search_trips_v2: 'looked up by the tripId returned by search_trips_v2.' It provides a concrete list of question types it answers, and gives explicit error-handling instructions: if it throws because the trip is no longer bookable, 're-run search_trips_v2 to get a fresh tripId.' This is textbook guidance on when and how to use the tool versus alternatives.

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

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Servers

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.

Resources