Arcnautical

io.github.SaltyTaro由 GitHub 账号 SaltyTaro 发布v0.1.1更新于 Oct 27, 2026

Screen any vessel by IMO for sanctions, ownership opacity and vetting grade. Keyless check included.

发布方自己的服务:Arcnautical

概览

AI 生成的概览

按 IMO 编号筛查商船的制裁、所有权不透明度和审查评级,含两个免密钥工具以及需密钥的批量与航程风险工具。

可以做什么
  • 按 IMO 查询船舶的制裁匹配(OFAC SDN、EU、UN、UK OFSI、OpenSanctions)、所有权不透明度评分和 A–E 审查评级
  • 将港口名称或国家解析为 UN/LOCODE
  • 获取完整筛查记录(含各来源匹配、置信度分类与数据新鲜度),或按 id 取回已存记录
  • 批量筛查最多 50 个 IMO 并等待结果
  • 对两个 LOCODE 之间的航线做风险评分,含风险驱动因素、置信度和缺失来源
  • 查询所配置密钥的剩余额度与限额
适用场景
适合航运、贸易合规、租船或物流场景,让助手快速了解某艘船的制裁与审查情况,或查看两港之间的航线风险。偶尔查询单船时免密钥工具已够用;需要重复筛查和批量处理时再用需密钥的工具。
运行要求
以本地 stdio 进程通过 npx 运行,需要 Node 18+;也提供远程 Streamable HTTP 端点。需密钥的工具要求 API 密钥:本地通过 ARCNAUTICAL_API_KEY 环境变量提供,远程端点则用 Authorization Bearer 请求头。密钥免费自助申请。需要能访问 ArcNautical API 的网络。
安装前请注意
免密钥查询只匹配船舶当前名称和标识,改名后的船可能显示 GREEN,完整筛查记录可覆盖这种情况。GREEN 但覆盖不完整,或未评估的记录,都不应视为无问题。制裁名单每日变动,回答时应注明 checked 或 screened 时间。免密钥调用按调用方地址限流,需密钥调用按密钥额度计费。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Arcnautical,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

@arcnautical/mcp

An MCP server for the ArcNautical API: screen any commercial vessel by IMO number for sanctions, ownership opacity and a vetting grade — from Claude, ChatGPT, Cursor, VS Code, Windsurf or any MCP client.

Two tools need no API key at all. Add it, ask "is IMO 9274446 sanctioned?", get the answer.

[Smithery] [npm] [Wellknown: live]

Two ways to use it: a remote endpoint at https://mcp.arcnautical.com/mcp (nothing to install — claude.ai, ChatGPT, Claude Code, Cursor) or a local server over stdio with npx -y @arcnautical/mcp (Claude Desktop and every other stdio client).

IMO 9274446 HS STAR: sanctions RED — 4 confirmed matches on vessel identifier.Ownership opacity MEDIUM. Vetting grade E (unacceptable). Checked 2026-09-12T08:10:40Z.

Remote endpoint (no install)

https://mcp.arcnautical.com/mcp — MCP Streamable HTTP, stateless, JSON responses. No authentication is required for check_vessel and find_port; the keyed tools take your API key as an Authorization: Bearer header on the MCP request (an X-API-Key or arcnautical-api-key header is accepted too, for gateways that name the header themselves — never a query parameter).

claude.ai — Settings → Connectors → Add custom connector → URL https://mcp.arcnautical.com/mcp, no authentication. The two keyless tools are available at once.

ChatGPT — Settings → Connectors → Create (developer mode) → server URL https://mcp.arcnautical.com/mcp, no authentication.

Claude Code

claude mcp add --transport http arcnautical https://mcp.arcnautical.com/mcpclaude mcp add --transport http arcnautical https://mcp.arcnautical.com/mcp --header "Authorization: Bearer arc_live_…"

Cursor — .cursor/mcp.json:

json
{  "mcpServers": {    "arcnautical": {      "url": "https://mcp.arcnautical.com/mcp",      "headers": { "Authorization": "Bearer arc_live_…" }    }  }}

Anything with curl — the endpoint is plain JSON-RPC over POST:

curl -s https://mcp.arcnautical.com/mcp -H 'Content-Type: application/json' \  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"check_vessel","arguments":{"imo":"9274446"}}}'

The remote endpoint is a thin client of the same public API: a keyless call counts against your 100-per-hour allowance (the caller's address is forwarded), and a keyed call is metered on your key exactly as a direct API call would be. GET /mcp answers 405 — there is no server-to-client stream to hold — and GET https://mcp.arcnautical.com/health reports the endpoint's version.

Local server (stdio)

Requires Node 18+. No install step — every client below runs it with npx.

Claude Desktop — claude_desktop_config.json:

json
{  "mcpServers": {    "arcnautical": {      "command": "npx",      "args": ["-y", "@arcnautical/mcp"]    }  }}

Claude Code

claude mcp add arcnautical -- npx -y @arcnautical/mcp

Cursor / Windsurf / VS Code — same command / args shape in the client's MCP settings.

To unlock the full record, batches and voyage scoring, add an API key to the env block:

json
{  "mcpServers": {    "arcnautical": {      "command": "npx",      "args": ["-y", "@arcnautical/mcp"],      "env": { "ARCNAUTICAL_API_KEY": "arc_live_…" }    }  }}

Keys are free and self-serve at https://arcnautical.com/get-a-key?from=mcp — no card, no approval step. A new key includes a one-time free allowance of vessel screenings and a monthly allowance of voyage assessments; get_usage reports both, and the current numbers are on arcnautical.com/developers.

Tools

ToolKey?What it does
check_vesselnoSanctions status (OFAC SDN, EU, UN, UK OFSI, OpenSanctions), ownership-opacity score, A–E vetting grade for one IMO. 100/hour per IP.
find_portnoResolve a port name or country to UN/LOCODEs — call before score_voyage.
screen_vesselyesThe full screening record: every match with its source list, programme and confidence class, the graded vetting factors, per-source freshness, a retained record id. Same hull asked again today replays free.
screen_vesselsyesBatch up to 50 IMOs and wait for the results.
get_screeningyesRetrieve a stored record by id (retained ten years).
score_voyageyesRoute risk between two LOCODEs: score, level, drivers, confidence, missing sources.
get_usageyesRemaining allowance and limits for the configured key.

Reading a verdict

  • RED — confirmed match on the vessel identifier. AMBER — possible match, review it. GREEN — no match against the sources reached. INCOMPLETE — a core source could not be read; never present it as clear.
  • coverage_complete: false on a GREEN means one supplementary list was unavailable: re-screen before relying on it.
  • assessed: false means ownership and vetting are defaults, not findings.
  • The keyless check matches the vessel's current name and identifiers only. A hull renamed after a designation can read GREEN there; screen_vessel covers that case.
  • Designations change daily. Quote the checkedAt / screened_at time with any answer.

Idempotency

Every resource-creating call sends an Idempotency-Key derived from the question — the hull and the UTC day — not from the attempt. Asking about the same vessel twice in a day returns the stored record and spends nothing. The API's docs measured 42% of one integration's monthly screenings as same-day repeats billed only because their client generated a random key per call; this server does not do that.

Environment

VariableDefaultPurpose
ARCNAUTICAL_API_KEYunsetEnables the keyed tools (stdio; the remote endpoint reads the Authorization header instead).
ARCNAUTICAL_BASE_URLhttps://arcnautical.comOverride for testing.
PORT / HOST3005 / all interfaces--http only.
MCP_TRUST_PROXYunset--http only: 1 reads the caller's address from X-Real-IP / CF-Connecting-IP set by a reverse proxy. Only when nothing but the proxy can reach the port.

Self-hosting the HTTP endpoint

npx -y @arcnautical/mcp --http serves POST /mcp on port 3005 — useful when your assistants run in a network that cannot spawn local processes but can reach one internal URL. The Dockerfile in this repository builds the same thing; it is what mcp.arcnautical.com runs.

Links

Development

npm installnpm test        # builds, then drives dist/cli.js over stdio AND createHttpServer() over Streamable HTTP                # (a local stub API asserts the forwarded caller address and Bearer key; one call hits prod keyless)npm run start:http   # the remote endpoint on http://localhost:3005/mcp

MIT © ArcNautical

来源:README.md,提交 eb254fc

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.1.1最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

其他 Arcnautical 集成