Skip to main content
Glama

searoute_mcp

Maritime Routing MCP Server (Python)

CI License: MIT Python Status

Table of Contents


Searoute MCP Demo

Related MCP server: vessel-traffic-mcp

Overview

searoute_mcp is a Model Context Protocol (MCP) server for maritime routing.
It integrates searoute-py with MCP, exposing tools that allow LLM clients (e.g. Claude Desktop) to:

  • Compute oceangoing route distances (in nautical miles)

  • Retrieve full oceangoing routes with waypoints (GeoJSON format)

  • Compare against geodesic great-circle distances

All tools accept latitude, longitude as inputs for user friendliness, while internally converting to the required searoute format.


Installation

Clone the repository and install dependencies:

git clone https://github.com/ShippingIntel/searoute_mcp.git
cd searoute_mcp
python3 -m venv .venv
source .venv/bin/activate   # Linux/macOS
.venv\Scripts\activate      # Windows

pip install -r requirements.txt

Dependencies:

  • mcp[python]>=0.1.0

  • searoute>=1.4.3

  • geopy>=2.4.1


Quickstart

Run the server locally:

python -m mcp_server.main

Install into Claude Desktop:

mcp install mcp_server/main.py

Test with the MCP Inspector:

mcp dev mcp_server/main.py

Core Tools

  • compute_distance Shortest oceangoing route distance (nm) between two coordinates.

  • compute_route Full oceangoing route (GeoJSON geometry + distance).

  • compute_geodesic Great-circle (sphere) distance in nautical miles, ignoring land/sea constraints.


Example Prompts

All prompts use latitude, longitude ordering.

{
  "tool": "compute_distance",
  "arguments": {
    "start_lat": 47.6062,
    "start_lon": -122.3321,
    "end_lat": 35.6895,
    "end_lon": 139.6917
  }
}
{
  "tool": "compute_route",
  "arguments": {
    "start_lat": 40.7128,
    "start_lon": -74.0060,
    "end_lat": 48.8566,
    "end_lon": 2.3522
  }
}
{
  "tool": "compute_geodesic",
  "arguments": {
    "start_lat": 51.5072,
    "start_lon": -0.1276,
    "end_lat": -33.8688,
    "end_lon": 151.2093
  }
}

Examples:

  • Seattle → Tokyo (oceangoing distance)

  • New York → Paris (full route with waypoints)

  • London → Sydney (geodesic great-circle)


Running Your Server

Choose a transport:

# stdio (local dev)
python -m mcp_server.main stdio

# Streamable HTTP (for deployment)
python -m mcp_server.main streamable-http

Contributing

Contributions are welcome! See CONTRIBUTING.md for setup and workflow guidelines.


License

This project is licensed under the MIT License — see the LICENSE file for details.


References

searoute_mcp builds upon prior open-source and research projects in maritime routing and network analysis:

  • Marnet Project — Atlas of Marine Socio-economic Indicators for the Atlantic Area EU transnational project led by the Northern & Western Regional Assembly, developing a socio-economic data network for the Atlantic regions.

  • searoute-py Python package for generating shortest sea routes between two points, designed for visualizing realistic maritime routes and customizable with ports and networks.

  • NetworkX Python package for the creation, manipulation, and study of complex networks. Provides the graph algorithms underpinning routing logic.

  • Eurostat SeaRoute Java-based library and webservice by Eurostat computing shortest maritime routes from global shipping networks enriched with AIS data, using Dijkstra’s algorithm via GeoTools.

Available Tools

3 tools
compute_distanceC

Compute shortest oceangoing route distance in nautical miles.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_latYes
end_lonYes
start_latYes
start_lonYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries full burden but only reveals that it computes oceangoing distances. It does not disclose how routes are determined (e.g., waypoints, land avoidance), processing details, or any limitations.

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

Conciseness3/5

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

The description is a single sentence, concise and direct. However, its brevity sacrifices important details, making it minimally acceptable.

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

Completeness2/5

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

Given four required parameters with no schema descriptions, no annotations, and an output schema that is not described, the description is incomplete. It does not explain the return format or any additional context needed for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All four parameters (start_lat, start_lon, end_lat, end_lon) have no descriptions in the schema (0% coverage). The description adds no additional meaning or constraints, leaving the agent to infer their purpose from the tool name.

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 action (compute), the resource (shortest oceangoing route distance), and the unit (nautical miles). It effectively distinguishes from sibling tools like compute_geodesic by specifying 'oceangoing'.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus siblings. It does not mention that this is for ocean routes and should be used instead of compute_geodesic for maritime distances.

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

compute_geodesicA

Compute geodesic great-circle distance in nautical miles (ignores route, this is shortest distance on a sphere).

ParametersJSON Schema
NameRequiredDescriptionDefault
end_latYes
end_lonYes
start_latYes
start_lonYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Discloses key behavior: computes great-circle distance, ignores route, uses sphere model, output in nautical miles. No annotations exist, so description carries full burden; it provides the essential behavioral context. Does not mention coordinate validity or precision, but output schema likely covers return format.

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?

Single sentence that is tightly written with no redundant words. It efficiently conveys purpose, unit, and a key differentiator.

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 and the presence of an output schema, the description is largely complete. It covers the core functionality and distinguishes from siblings. Minor omission: no mention of coordinate system or valid ranges, but these are common defaults.

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?

With 0% schema description coverage, the description adds minimal meaning beyond parameter names. It implies start and end points but does not specify coordinate format (e.g., decimal degrees) or units. The parameter names are self-explanatory, but additional detail would improve semantic clarity.

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?

Clearly states it computes geodesic great-circle distance in nautical miles, and explicitly distinguishes from route-based calculations. The verb 'compute' and resource 'geodesic' are specific, and the note 'ignores route' differentiates it from sibling compute_route.

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?

Implicitly guides usage by stating 'ignores route', indicating it is for shortest distance on a sphere, not for route planning. However, it could explicitly contrast with compute_distance or compute_route; the current description is clear enough for an informed agent.

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

compute_routeB

Compute shortest oceangoing route with distance and waypoints between two coordinates.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_latYes
end_lonYes
start_latYes
start_lonYes

TDQS

B3.3/5.0
Behavior3/5

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

Without annotations, the description carries the full burden. It reveals the route is 'oceangoing' and outputs distance and waypoints, but lacks details about algorithm, units, constraints, or side effects. Minimal but not misleading.

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?

A single sentence with no wasted words. Front-loads the key action and outputs. Efficient for the information provided.

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

Completeness2/5

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

Given 4 required params, no output schema, and no annotations, the description is too brief. It omits critical details like units, coordinate system, return structure, and algorithm specifics, leaving the agent underinformed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, meaning parameter descriptions are absent. The description does not explain coordinate system, format, or range. The parameter names are self-explanatory, but the description adds no value beyond the schema's titles.

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 verb 'Compute' and the resource 'shortest oceangoing route', with qualifiers 'with distance and waypoints'. It distinguishes from sibling tools like compute_distance (likely distance-only) and compute_geodesic (likely geodesic line).

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. The description does not mention use cases, prerequisites, or exclusions, leaving the agent without context for selection.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 3 tool updatesv0.1.0
    • First observedcompute_distance
    • First observedcompute_geodesic
    • First observedcompute_route

TDQS

A3.6/5.0
Disambiguation5/5

Each tool serves a distinct purpose: computing oceangoing route distance, geodesic great-circle distance, and full route with waypoints. No overlap or ambiguity.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (compute_distance, compute_geodesic, compute_route), making them predictable.

Tool Count5/5

Three tools is an appropriate size for a focused maritime routing server, covering core functionality without bloat.

Completeness4/5

The set covers distance (route and geodesic) and route waypoints, but might lack options for routing preferences or alternative paths.

Maintenance

ActivityNo data
ResponsivenessSyncing

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/Project-Harrison/searoute-mcp'

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