原型 · 预览版:收录官方注册中心里的全部服务器,每 30 分钟同步一次。评价和账户功能将在后续阶段推出。
PopNx MCP为使用 AI 的人准备的 MCP 服务器 · 用大白话讲清楚

FIDE Laws of Chess

作者:arxohq版本 0.1.1i★ –i电脑或云端
注册名称io.arxo/fide-chess

安装

概览

作者提供的说明(英文原文)

FIDE Laws of Chess (2023) as an executable model: arbiter cases, answers with rules and judgments

PopNx MCP 的三大支柱

这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。

它能帮你做什么

我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。

安装

选择你使用的 AI 应用,然后复制设置。

安装之前

你需要

  • 在云端运行无需安装任何东西,通过互联网连接
  • npm已安装 Node.js(用于 npx 命令)

你用的是哪个应用?

在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。

适用于网页版、桌面版和手机版 Claude:

  1. 打开 Settings → Connectors
  2. 点击 Add custom connector
  3. 粘贴下面的地址,然后点击 Add
  4. 如果要求登录,请登录作者的服务
SettingsConnectors1+ Add2https://…3
https://mcp.arxo.io/mcp/fide-chess

或者在你的电脑上运行

打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json

{
  "mcpServers": {
    "fide-chess": {
      "command": "npx",
      "args": [
        "-y",
        "@arxo/mcp-fide-chess"
      ],
      "env": {
        "FIDE_CHESS_MCP_CALL_TIMEOUT": "your-value"
      }
    }
  }
}

在终端中运行这条命令

claude mcp add --transport http fide-chess https://mcp.arxo.io/mcp/fide-chess

或者在你的电脑上运行

claude mcp add fide-chess --env FIDE_CHESS_MCP_CALL_TIMEOUT=your-value -- npx -y @arxo/mcp-fide-chess

运行前请先填写空着的值。

在 Cursor 中打开

或者自己复制设置

粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json

{
  "mcpServers": {
    "fide-chess": {
      "url": "https://mcp.arxo.io/mcp/fide-chess"
    }
  }
}

或者在你的电脑上运行

在 Cursor 中打开

或者自己复制设置

粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json

{
  "mcpServers": {
    "fide-chess": {
      "command": "npx",
      "args": [
        "-y",
        "@arxo/mcp-fide-chess"
      ],
      "env": {
        "FIDE_CHESS_MCP_CALL_TIMEOUT": "your-value"
      }
    }
  }
}

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

在 VS Code 中打开

或者自己复制设置

粘贴到项目中的 .vscode/mcp.json

{
  "servers": {
    "fide-chess": {
      "type": "http",
      "url": "https://mcp.arxo.io/mcp/fide-chess"
    }
  }
}

或者在你的电脑上运行

在 VS Code 中打开

或者自己复制设置

粘贴到项目中的 .vscode/mcp.json

{
  "servers": {
    "fide-chess": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@arxo/mcp-fide-chess"
      ],
      "env": {
        "FIDE_CHESS_MCP_CALL_TIMEOUT": "your-value"
      }
    }
  }
}

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

ChatGPT 只能连接互联网上的服务器:

  1. 打开网页版 ChatGPT → Settings → Connectors (Apps)
  2. 点击 Create 或 Add(部分套餐需要先在 Advanced 中开启 Developer mode)
  3. 粘贴下面的地址,起个名字,然后保存
  4. 如果要求登录,请登录作者的服务
SettingsConnectors1+ Create2https://…3
https://mcp.arxo.io/mcp/fide-chess

菜单名称可能因套餐和版本不同而略有差异。

你的选择通过 Cookie 保存在这台设备上,无需账户。

需要你填写的值

  • FIDE_CHESS_MCP_CALL_TIMEOUT env
    Per-call timeout in seconds for the local host (optional)

这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。

它能做什么

工具名称和描述与服务器在 2026年11月8日 报告的完全一致。这些内容由作者撰写,不是我们写的;我们以纯文本形式显示。

  • law_search

    A semantic SEARCH over formalised law: a question or a notion in your own words → candidates with addresses — predicates with signatures, rules, article fragments. This is the layer of DISCOVERY, not of the answer: the result says WHAT to ask next (law_ask by signature, law_rules

  • law_passport

    Passport of an exact release: purpose, interface, boundaries, checks and performance. The reports section holds the history of measurements, failures included. Entries are paged by JSON Pointer; next continues the answer.

  • law_answer_capabilities

    A machine-readable matrix of the Lens producers that are actually installed, of replay/projection checks, profiles, limits and the contract tests that confirm them. declared_only means a schema with no executable witness.

  • law_capture_answer

    Run a registered producer and obtain producerControl/0.2 for a later verifiable preparation of a Lens. The producer is chosen only from the shipped registry.

  • law_prepare_answer

    At the explicit request of the user, repeat between 1 and 12 earlier law_ask or law_process_run calls, compare their replayControl strictly, and prepare a non-public frozen document for 24 hours. The client never supplies the machine answer: the server obtains it only by executin

  • law_publish_answer

    Publish a prepared document. Repeating it with the same preparationId idempotently returns the same URL and the same separate revocation secret.

  • law_revoke_answer

    Revoke a published document using its separate secret. The public id alone grants no control; revocation closes the HTML page, the API and the download.

  • law_packages

    The catalogue of formalised law: instruments, predicates with signatures, the boundaries of coverage. This is where the NAMES of predicates come from — they must never be guessed. But do NOT start from the catalogue when looking for the right instrument: the overview is large, an

  • law_ask

    Put a question to formalised law. When the answer is "not established" it carries whyNot — the engine's why_not report: the candidate rules and the state of every conjunct (satisfied / not satisfied / undetermined); the missing facts are visible there and need not be guessed. BEF

  • law_screen

    Build a necessary condition — a superset — for the preliminary selection of rows from an external source. This is NOT a legal answer and NOT SQL: the result is a typed tree and a manifest of the extensions up to TRUE. Every row that passes must then be computed in full by the eng

  • law_rules

    The rules of formalised law put into words: exactly how a predicate is derived (premises, source articles). Call this BEFORE supplying facts to law_ask — the rules say which facts are needed instead of leaving them to be guessed. For large instruments package=… returns a table of

  • law_explain

    Unfold the proof of a law_ask answer into a chain "rule ← premises → conclusion". The compact input: question (the original law_ask arguments, truth/collect), resultHash and codeHash from the provenance of the answer. The server repeats the computation and compares the hashes; if

  • law_inspect

    Evaluation inspector over a SAVED evaluation document: summary — the origin card, resultHash and snapshot verification, listings of results, positions and issues; slice — the closure of proof nodes for a query, rule, position or node with addresses, both sides of BOTH, defeats, v

  • law_case_ask

    The ask operation: run a registered case of a case package over its pinned dependencies and return the answer: by default a projection of the evaluation document without the proof graph, on responseMode full or proof: true the canonical document with a proof and a manifest. The q

  • law_sources

    Sources: by default short excerpts (view=summary), 5 texts per page, with the address of the full text in fragments[].full. Either package or fragment is required (a StableId from law_search/law_rules). view=full returns exact parts of the text: textRange sets a range of Unicode

  • law_query

    A deterministic LawQL query over the CLIR of a formalization: a question about the model of the act itself, not about a case. Relations (14): anchors, edges, fields, imports, interpretations, labels, links, literals, nodes, norms, positions, rules, variables, windows. Full field

基础检查i

我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月8日

  • ✓ 通过

    作者与仓库一致

    注册名称已通过域名 arxo.io 验证(注册中心会核实域名所有权)

  • … 尚未检查

    仍在维护

    我们还没有从 GitHub 读取这个仓库

  • … 尚未检查

    有许可证

    我们还没有从 GitHub 读取这个仓库

  • ✓ 通过

    端点有响应

    在 539 毫秒内响应(HTTP 200)

  • – 不适用

    使用 OAuth 登录

    无需登录

  • ✓ 通过

    工具描述中没有隐藏指令

    已读取 16 个工具描述,未发现针对 AI 的隐藏指令

与“法律与政府数据”中的其他服务器比较i

  • 星标数多于此分类中其他 1748 个服务器的 0%
  • 发布到注册中心的时间比此分类中其他 1748 个服务器的 56% 更新
  • 基础检查结果等于或优于此分类中其他 1748 个服务器的 100%

与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。

常见问题

FIDE Laws of Chess 安全吗?

它在 3 项适用的基础检查中通过了 3 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。

它需要哪些密钥或代码?

注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。

它在我的电脑上运行还是在云端?

两种方式都可以:安装在你的电脑上,或者连接云端版本。

它还在维护吗?

GitHub 仓库最后更新于–,最新版本(0.1.1)于24天前进入注册中心。

哪些应用可以使用它?

支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。它通过 URL 连接,所以接受远程 MCP 服务器的应用也可以使用,例如开启开发者模式的 ChatGPT。

有什么可以替代它?

同一分类中有:Korean Government Documents (HWPX), Censible, Private Law Wiki

替代选择

同一分类中其他作者的服务器,按星标数排序。

如何看卡片:↓ 每周下载量i★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i

Korean Government Documents (HWPX)

Turns a draft into a Korean government report or press release as HWPX in each ministry's format

作者:UpstageAI非常新↓ 103/周今天更新

在你的电脑上运行

Censible

The Australian Census (2011, 2016, 2021) for any suburb, postcode or council, with projections.

作者:Censible-AU起步阶段今天更新

在云端运行✓ censible.com.au

Private Law Wiki

Sourced answers, search and bank-case assessment for wiki.private.law by the Mothership runtime.

作者:privatelawattorneys非常新今天更新

在云端运行

作者的 README

打开 README

按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。

FIDE Laws of Chess on Arxo

Explore a chess arbiter's decision through a pinned model, explicit facts and an inspectable answer. Ten retained fictional cases cover illegal moves, flag fall, rapid/blitz exceptions, recording and arbiter judgment.

Node.js 20+ · ESM · canon package 0.1.0 · model 0.1.1 · FIDE edition effective 1 January 2023

Start in Node.js · Cases · Evidence · Depth · Submit a case · Source repository

This is an independent open-source teaching and research demonstration. For an actual chess ruling, use the authentic FIDE Laws and the competent arbiter. Source text and model scope are pinned; the package does not claim general chess-engine capability or complete formalization.

Start in Node.js

Requirements: Node.js 20+. The example uses ES modules; keep the .mjs extension. This recipe was checked on macOS arm64 with Node.js 20.20.2 on 14 October 2026. No global CLI, Git clone or MCP client is needed for this route.

Create a fresh directory, open a terminal there, then run:

npm init -y

npm install --ignore-scripts @arxo/canon-fide-chess@0.1.0 @arxo/law@0.4.3

Save this as example.mjs, then run node example.mjs:

import { open } from '@arxo/law';

import { loadModel } from '@arxo/canon-fide-chess/chess'; import { game, white, getCaseInput } from '@arxo/canon-fide-chess/examples/arbiter';

const model = await loadModel(); const chess = await open(model.spec, { offline: true, local: { packages: { [model.spec]: model.package } }, });

const input = getCaseInput('SecondIllegal'); const loss = await chess.truth('game_lost_by', [game, white], input); const draw = await chess.truth('game_drawn', [game], input); console.log(loss.evaluationStatus, loss.truthStatus); // COMPUTED, TRUE_ONLY console.log(draw.evaluationStatus, draw.truthStatus); // COMPUTED, NEITHER

The two output lines are loss, then draw:

COMPUTED TRUE_ONLY

COMPUTED NEITHER

COMPUTED means the query was evaluated. TRUE_ONLY means it has positive support and no negative support. NEITHER means neither polarity is supported; it does not establish that the proposition is false.

Now replace only getCaseInput('SecondIllegal') with getCaseInput('SecondIllegalNoMate') and run node example.mjs again:

REQUIRES_JUDGMENT NEITHER

COMPUTED TRUE_ONLY

The second line now establishes a draw. This case supplies the fact that the opponent cannot checkmate by any legal series. The separate loss query still requests an arbiter's assessment because other reachable loss grounds remain unresolved. Read both status fields; REQUIRES_JUDGMENT identifies an assessment the model does not decide on its own.

To try another retained episode, choose a name from the case table. To propose your own episode, open an issue with the case facts, legal date, query, package/runtime versions, output and the FIDE clause or model rule you think should give a different answer. Use a fictional or anonymized case.

The SDK executes the rules through @arxo/law-engine@0.5.3. Installation alone does not register this distribution in the SDK's automatic canon resolver: keep the explicit local.packages handoff above. The loader implements no chess decisions or formulas.

Use as an MCP server

The separate native MCP wrapper runs the same pinned model over stdio:

npx -y @arxo/mcp-fide-chess@0.1.0

Node.js 20+, Linux x64 or macOS arm64. Client configuration, HTTP endpoint, inputs and limitations · OCI recipe · npm recipe · Accepted delivery. This MCP delivery is separate from the Node.js route above.

Choose a case

getCaseInput(name)EpisodeChecked question and result
TouchIntentUnknownA movable own piece; intentional touch not adjudicatedmust_move_first_touched_piece: REQUIRES_JUDGMENT / NEITHER
FirstIllegalOne completed illegal moveLoss: REQUIRES_JUDGMENT / NEITHER; draw: COMPUTED / NEITHER
SecondIllegalTwo illegal moves under the model's specified closureLoss: COMPUTED / TRUE_ONLY
SecondIllegalNoMateTwo illegal moves; inability to checkmate establishedDraw: COMPUTED / TRUE_ONLY
FlagFallFlag observed, time control not completed, mate possibleLoss: COMPUTED / TRUE_ONLY
FlagFallNoMateThe same flag; inability to checkmate establishedDraw: COMPUTED / TRUE_ONLY
RapidFirstIllegalRapid 15+10; first illegal moveOpponent receives 60 seconds; 120-second query is NEITHER
BlitzFirstIllegalCompetitiveBlitz 3+2 under competitive rules B.2Opponent receives 120 seconds; 60-second query is NEITHER
ShortOfTimeRecordingStandard chess, no increment, 240 seconds leftmust_record_moves: COMPUTED / FALSE_ONLY
DeviceWarningElectronic device evident; arbiter gave a warningLoss and differing-penalty queries: COMPUTED / TRUE_ONLY

All 18 original case/query expectations are retained and checked. The fixture export provides caseNames, game, white, black, king, CaseName and getCaseInput(name). Each call returns an independent copy; an unknown name throws RangeError.

Facts and arbiter judgments

getCaseInput preserves the CLI's canonical assertions, constants, context and options. The loader supplies neither absent facts nor adjudications. The model's explicitly declared closures are part of its rules; they are not a general assumption that a missing fact is false.

For touch-move, use the two declared arguments — player and piece:

import { open } from '@arxo/law';

import { loadModel } from '@arxo/canon-fide-chess/chess'; import { white, king, getCaseInput } from '@arxo/canon-fide-chess/examples/arbiter';

const model = await loadModel(); const chess = await open(model.spec, { offline: true, local: { packages: { [model.spec]: model.package } }, }); const answer = await chess.truth( 'must_move_first_touched_piece', [white, king], getCaseInput('TouchIntentUnknown'), ); const document = JSON.parse(new TextDecoder().decode(answer.document)); console.log(answer.evaluationStatus, answer.truthStatus); // REQUIRES_JUDGMENT, NEITHER console.log(document.results[0].judgmentRequests);

A positive, explicitly adjudicated intentional-touch assertion establishes this model's obligation; that path is checked separately. The original missing-judgment fixture stays unchanged.

Missing empirical facts, negative facts and contradictory support retain NEITHER, FALSE_ONLY and BOTH. For the checked empirical conflict, SDK 0.4.3 returns COMPUTED / BOTH: the query was computed and both polarities are supported. Read both fields; do not collapse them to a Boolean. Exact Decimal inputs, such as recorded points, are strings ('0.75').

Complete canonical input for SecondIllegal

{

"legalTime": "2023-06-01", "assertions": [ { "contentHash": "sha256:696ba690ec316ad1654c94c94886b3d6e9764573460a0ed89f76280496c904fa", "evidence": [], "id": "urn:law:examples:chess:arbiter#player", "kind": "assertion", "literal": { "args": [ { "id": "urn:example:chess:game", "kind": "entity_ref" }, { "id": "urn:example:chess:white", "kind": "entity_ref" } ], "kind": "literal", "polarity": "positive", "predicate": "urn:fide:laws:clir:chess#player_of" }, "origin": "case_input", "package": "urn:law:examples:chess:arbiter" }, { "contentHash": "sha256:9f7706ed8482cd04f869afdd849b90eea3c2e42ca246bf932c8a20f77a1fcc15", "evidence": [], "id": "urn:law:examples:chess:arbiter#complete-mate-facts", "kind": "assertion", "literal": { "args": [ { "id": "urn:example:chess:white", "kind": "entity_ref" } ], "kind": "literal", "polarity": "positive", "predicate": "urn:fide:laws:clir:chess#checked_player" }, "origin": "case_input", "package": "urn:law:examples:chess:arbiter" }, { "contentHash": "sha256:cd688c83624c70688f10ead443e5c46c32ad7d3310696caf6dad9b80be7c1cb0", "evidence": [], "id": "urn:law:examples:chess:arbiter#illegal-count", "kind": "assertion", "literal": { "args": [ { "id": "urn:example:chess:white", "kind": "entity_ref" }, { "kind": "value", "type": { "name": "urn:law:std#Integer" }, "value": 2 } ], "kind": "literal", "polarity": "positive", "predicate": "urn:fide:laws:clir:chess#completed_illegal_move_count" }, "origin": "case_input", "package": "urn:law:examples:chess:arbiter" } ], "context": { "decisionTime": "2026-09-08T12:00:00Z", "knowledgeTime": "2026-09-08T12:00:00Z", "legalTime": "2023-06-01", "timezone": "UTC" }, "options": {} }

This input was captured by released CLI 0.2.3 from the retained .lawcase; the fixture generator does not reproduce chess semantics. Fixture bytes · Capture provenance.

Inspect the evidence

Preserve answer.document as the canonical bytes returned by Arxo. With the same runtime version, pinned model and dependencies, repeated executions of identical complete inputs (query, facts, judgments, temporal context and options) reproduce those bytes and their hashes. answer.proof.nodes identifies the applied rules and their premises.

The current SDK's answer.sources and proof-node source-anchor arrays are empty for these queries. Source links below are an explicit static join of executed producer IDs with anchors in the hash-checked model; they are not additional citations emitted by the evaluator. The pinned publication is the FIDE Handbook, Laws 2023.

This complete example saves the loss answer and prints its model anchor links:

import { writeFile } from 'node:fs/promises';

import { open } from '@arxo/law'; import { loadModel } from '@arxo/canon-fide-chess/chess'; import { game, white, getCaseInput } from '@arxo/canon-fide-chess/examples/arbiter';

const model = await loadModel(); const chess = await open(model.spec, { offline: true, local: { packages: { [model.spec]: model.package } }, }); const answer = await chess.truth('game_lost_by', [game, white], getCaseInput('SecondIllegal')); await writeFile('answer.json', answer.document); const nodes = new Map(model.package.ir.nodes.map(node => [node.id, node])); const sourceLinks = answer.proof.nodes.filter(node => node.rule).map(node => ({ rule: node.rule, anchors: (nodes.get(node.rule)?.anchors ?? []).map(id => ({ id, locator: nodes.get(id)?.locator, })), })); console.log(answer.hashes, sourceLinks); // includes SecondIllegalMoveLoses → article/7

What the model knows: native touch-move producer tree

![Native touch-move producer tre

只显示了开头部分;其余内容请在仓库中阅读

问 PopNx