Skip to main content
Glama

club-moorage-mcp

MCP 服务器,提供游艇俱乐部的停泊记录——尺寸限制、并排停靠规则、预订流程、设施、互惠条款以及过夜舒适度排名。每条记录都带有一个 relationship

  • outstation——俱乐部为自家会员拥有的设施。随附三个皇家维多利亚游艇俱乐部(RVYC)外站(Long Harbour、Friday Harbor、Telegraph Harbour)。

  • reciprocal——接待来访 RVYC 会员的合作伙伴俱乐部,有自己的访客条款(免费过夜数、费用、最长停留时间、保险最低要求)。随附 RVYC 完整互惠列表——全球 138 家俱乐部,分为两个层级:

    • 已调研confidence 中/高,45 家俱乐部)——该船实际巡航的 BC + 华盛顿州沿海区域:南温哥华岛、海湾群岛、温哥华一侧的横渡停靠点、圣胡安群岛 / 阿纳科特斯 / 贝灵厄姆、胡安·德富卡海峡 / 北普吉特海湾。包含每家俱乐部的条款、费用、尺寸限制和 Vaan 适配情况。

    • 仅列出confidence: low,93 家俱乐部)——列表中的其余所有俱乐部:加利福尼亚、夏威夷、墨西哥、百慕大、加勒比、加拿大东部、英国、澳大利亚/新西兰等。仅提供位置、地址、电话和网站,以便航程计划可以询问“这个港口有哪家俱乐部?”——访客停泊条款经调研,每条记录都如此说明。

工具

  • list_moorage(clubs?, relationship?)——所有停泊信息:位置、坐标、尺寸限制。

  • find_moorage_near(lat, lon, radius_nm=20, clubs?, relationship?, date?)——附近的停泊点,按距离最近优先;配置后标注实时可用性。

  • get_moorage(name)——完整记录 + 说明文字;对于外站,还包括俱乐部的一般规则。

  • rank_moorage(names, forecast, date?)——对支持锚泊/系泊的记录进行过夜舒适度排名;仅限码头的记录归入 not_ranked。复用 pilotbook-mcp 的评分,结合 weather-mcp 的预报。

  • check_availability(name, date)——RVYC 可预订外站的实时泊位可用性;需要 RVYC_USERNAME/RVYC_PASSWORD

clubs 过滤器是一个可选的俱乐部代码列表(例如 ["RVYC"]);省略则包含所有俱乐部。 relationship 过滤器为 "outstation""reciprocal";省略则包含两者。代理/上下文层根据船上人员决定哪些俱乐部相关。已停用的互惠俱乐部(available: false)会从 list/find 中省略,但仍可按名称解析。

Related MCP server: flkeys-mcp

实时外站可用性(可选)

check_availability(name, date) 报告 RVYC 两个可预订外站(Long Harbour、Friday Harbor)的实时泊位可用性;find_moorage_nearrank_moorage 接受可选的 date 参数,以相同方式标注结果。Telegraph Harbour 先到先得(通过码头预订),互惠俱乐部没有在线调度器,因此这些会返回原因而不是计数。

该层默认关闭。设置 RVYC_USERNAMERVYC_PASSWORD(会员凭据)即可启用;未设置时,工具返回静态数据并附上“未配置”说明。本包不存储任何凭据或会员数据。

数据

记录为 markdown 格式(YAML frontmatter + 正文),位于 src/club_moorage_mcp/data/ 下(clubs/outstations/reciprocals/)。可通过 CLUB_MOORAGE_DATA_PATH 指向其他目录。pilotbook_anchorage 将记录交叉链接到最近的 pilot-book 锚地;代理调用 pilotbook-mcp 的 get_anchorage 获取海床/深度信息。

moorage.geojson 是包含所有内置记录的地图文件——GitHub 会内联渲染(蓝色 = 外站,绿色 = 互惠)。数据变更后,使用 uv run python ingest/build_geojson.py 重新生成;--check 在漂移时失败,tests/test_geojson.py 在 CI 中执行相同检查。

互惠记录由 ingest/reciprocals.yaml 生成——编辑 YAML,然后运行 uv run python ingest/build_records.py。三个 RVYC 外站为手工编写。俱乐部列表来自 RVYC 2024 年刊;位置和联系信息来自 RVYC 自己的互惠地图。每家俱乐部的条款尽可能从二手来源调研;抵达前请与俱乐部核实费用、LOA 和可用性。

安装

uv sync --dev

运行服务器

uv run club-moorage-mcp

Available Tools

4 tools
find_anchorages_nearC

Anchorages within a radius of a position, nearest first, with exposure summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
latYes
lonYes
radius_nmNoSearch radius in nautical miles (default 10).

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, description must disclose behavioral traits. It mentions exposure summary but omits coordinate format, rate limits, or any output details. Minimal behavioral disclosure.

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?

Single sentence is concise but too brief. It front-loads the action but lacks necessary details, making it under-specified rather than optimally concise.

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 no output schema, no annotations, and low parameter coverage, the description is incomplete. It fails to specify coordinate system, exposure summary details, or any constraints beyond radius.

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 description coverage is only 33% (radius_nm has description). Description adds no extra meaning for lat/lon parameters, leaving their format and units unspecified.

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 finds anchorages within a radius of a position, orders them nearest first, and provides an exposure summary. It distinguishes from siblings: get_anchorage (specific), list_sources (sources), rank_anchorages (ranking).

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 siblings. Does not mention when a call is appropriate or when to use alternatives like get_anchorage or rank_anchorages.

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

get_anchorageB

Full record and verbatim pilot-book prose for one named anchorage.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, and the description only mentions returning data without disclosing side effects, authentication needs, rate limits, or whether the tool is read-only. The description lacks behavioral details beyond the output content.

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 a single concise sentence. It effectively communicates the core functionality without extraneous words, though it could be structured to include parameter constraints.

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 simplicity (1 required param, no output schema), the description covers the basic purpose. However, it does not describe the return structure or what constitutes 'full record,' which would be helpful for an agent. An output schema would mitigate this, but none is provided.

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?

The single parameter 'name' has no schema description (0% coverage), and the description only implies it is the anchorage name. No format, case sensitivity, or validation details are provided, leaving the agent to guess constraints.

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 returns 'full record and verbatim pilot-book prose for one named anchorage,' specifying the verb (get) and resource (anchorage by name). It effectively distinguishes from siblings like find_anchorages_near (search) and rank_anchorages (ranking).

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?

No explicit when-to-use or when-not-to-use guidance is provided. The purpose is clear but does not mention alternatives or context like using find_anchorages_near for searching. The agent must infer usage from sibling names.

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

list_sourcesC

The pilot books ingested into the vault.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.4/5.0
Behavior1/5

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

No annotations are provided, and the description only states what is returned. It discloses nothing about behavior such as read-only nature, authentication needs, pagination, or side effects.

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

Conciseness2/5

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

The description is a single sentence but is not a proper sentence with a main verb; it is a noun phrase. It is too brief and lacks structure, failing to clearly convey the operation.

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 the simplicity of the tool (no parameters, no output schema), the description should at least include the verb 'list.' It partially tells what the tool returns but is incomplete as a functional description.

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 tool has no parameters, so schema coverage is 100%. The baseline for zero parameters is 4, and the description adds no parameter information, which is acceptable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

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

The description is a noun phrase, 'The pilot books ingested into the vault,' which omits the action verb. The tool name implies 'list,' but the description does not explicitly state that the tool lists or retrieves these books. It is somewhat clear but lacks a verb.

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?

The description provides no guidance on when to use this tool versus alternatives. Sibling tools are about anchorages, but no comparison or context is given.

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

rank_anchoragesA

Rank named anchorages by overnight comfort against a forecast. Fetch the forecast from weather-mcp and pass it as forecast (a list of steps with wind_from_deg, wind_kn, swell_from_deg, swell_m).

ParametersJSON Schema
NameRequiredDescriptionDefault
namesYes
forecastYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations provided; description only states it ranks by comfort against forecast. Lacks details on side effects, authentication, or assumptions (e.g., units, missing data). Insufficient disclosure for a tool with zero annotation coverage.

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?

Two sentences, front-loaded with the primary purpose. Second sentence provides necessary parameter detail. Minimal waste, though could be slightly more concise.

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?

Provides essential information for a ranking tool with no output schema and no annotations. Explains forecast format but does not mention output structure (ranking order, score format) or error conditions. Adequate but has 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?

Schema description coverage is 0%; description adds meaning by explaining that 'names' are anchorage names and 'forecast' is a list of steps with specified fields (wind_from_deg, wind_kn, swell_from_deg, swell_m). Adds significant value beyond raw schema.

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?

Description states verb 'rank' and resource 'anchorages' with a clear method (against a forecast). Distinguishes from siblings: find_anchorages_near (nearby, not rank), get_anchorage (single), list_sources (list).

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?

Tells user to fetch forecast from weather-mcp and pass specific fields, implying a prerequisite. Does not explicitly state when to use versus alternatives or mention exclusions.

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.

  1. 4 tool updatesv0.6.0
    • First observedfind_anchorages_near
    • First observedget_anchorage
    • First observedlist_sources
    • First observedrank_anchorages

TDQS

B3.3/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: finding anchorages near a position, retrieving details for a specific anchorage, listing data sources, and ranking anchorages by comfort. No overlap exists.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case: find_anchorages_near, get_anchorage, list_sources, rank_anchorages. No deviations or mixed conventions.

Tool Count4/5

Four tools is slightly below average but appropriate for a focused server covering anchorage lookup and ranking. Each tool earns its place without redundancy.

Completeness4/5

The set covers the core read operations for anchorages: find, get details, rank, and list sources. No obvious dead ends, though write operations are absent (likely by design).

Maintenance

ActivityMaintained
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

  • F
    license
    Not graded
    quality
    D
    maintenance
    Verified hyper-local data API for the Florida Keys. Raccoon data covering charters, marinas, restaurants, and local knowledge missing from Google Maps and TripAdvisor.
    -
  • A
    license
    A
    quality
    B
    maintenance
    Enables searching SAC huts, checking availability, and preparing booking or cancellation handoffs on hut-reservation.org with a safety model for writes.
    10
    9
    3
    MIT