ต้นแบบ · รุ่นทดลอง: มีทุก server ในทะเบียนทางการ อัปเดตทุก 30 นาที รีวิวและบัญชีผู้ใช้จะมาในขั้นถัดไป
PopNx MCPที่รวม MCP สำหรับคนใช้ AI · อธิบายเป็นภาษาคน

FIDE Laws of Chess

โดย arxohqรุ่น 0.1.1i★ –iบนเครื่องหรือคลาวด์
ชื่อใน registryio.arxo/fide-chess

ติดตั้ง

ภาพรวม

คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)

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

สามเสาของ PopNx MCP

สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน

ใช้ทำอะไรได้

ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry

  • การเชื่อมต่อ: บนเครื่องหรือคลาวด์
  • ช่องทาง (transport): stdio, Streamable HTTP
  • หมวด: อื่น ๆ

ติดตั้ง

เลือกโปรแกรม 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": "ใส่ค่าของคุณ"
      }
    }
  }
}

พิมพ์คำสั่งนี้ใน Terminal

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='ใส่ค่าของคุณ' -- 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": "ใส่ค่าของคุณ"
      }
    }
  }
}

เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง

เปิดใน 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": "ใส่ค่าของคุณ"
      }
    }
  }
}

เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง

ChatGPT ต่อได้เฉพาะ server ที่อยู่บนอินเทอร์เน็ต:

  1. เปิด ChatGPT บนเว็บ → Settings → Connectors (Apps)
  2. กด Create หรือ Add (บางแพ็กเกจต้องเปิด Developer mode ใน Advanced ก่อน)
  3. วางที่อยู่ด้านล่าง ตั้งชื่อ แล้วบันทึก
  4. ถ้าให้ล็อกอิน ให้ล็อกอินกับผู้ทำ
SettingsConnectors1+ Create2https://…3
https://mcp.arxo.io/mcp/fide-chess

ชื่อเมนูอาจต่างกันเล็กน้อยตามแพ็กเกจและรุ่นของแอป

ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี

ค่าที่ต้องใส่เอง

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

ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README

ทำอะไรได้บ้าง

ยังไม่ได้อ่านรายการเครื่องมือของตัวนี้ เราตรวจ endpoint ทีละชุดวนไป

ผลตรวจเบื้องต้นi

เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 7 พ.ย. 2569

  • ✓ ผ่าน

    ตัวตนผู้ทำตรงกับ repo

    ชื่อใน registry ยืนยันโดเมน arxo.io แล้ว (registry ตรวจความเป็นเจ้าของโดเมน)

  • … ยังไม่ตรวจ

    ยังมีคนดูแล

    ยังไม่ได้อ่านข้อมูล repo จาก GitHub

  • … ยังไม่ตรวจ

    มีสัญญาอนุญาต (license)

    ยังไม่ได้อ่านข้อมูล repo จาก GitHub

  • … ยังไม่ตรวจ

    endpoint ตอบ

    ยังไม่ได้ตรวจ เราตรวจ endpoint ทีละชุดวนไป

  • … ยังไม่ตรวจ

    ล็อกอินแบบ OAuth

    ยังไม่ได้ตรวจ เราตรวจ endpoint ทีละชุดวนไป

  • … ยังไม่ตรวจ

    คำอธิบายเครื่องมือไม่มีคำสั่งแอบแฝง

    ยังไม่ได้ตรวจ เราอ่านรายการเครื่องมือตอนตรวจ endpoint

เทียบกับตัวอื่นในหมวด อื่น ๆi

  • ดาวมากกว่า 0% ของอีก 32727 ตัวในหมวดนี้
  • ส่งรุ่นใหม่เข้า registry ล่าสุดกว่า 62% ของอีก 32727 ตัวในหมวดนี้
  • ผลตรวจเบื้องต้นดีกว่าหรือเท่ากับ 100% ของอีก 32727 ตัวในหมวดนี้

เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo

คำถามที่พบบ่อย

FIDE Laws of Chess ปลอดภัยไหม?

จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น

ต้องใช้กุญแจหรือรหัสอะไรบ้าง?

registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก

ตัวนี้รันบนเครื่องหรือบนคลาวด์?

ได้ทั้งสองแบบ จะลงในเครื่องหรือต่อผ่านคลาวด์ก็ได้

ยังมีคนดูแลอยู่ไหม?

repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.1.1) เข้า registry 23 วันที่ผ่านมา

ใช้กับโปรแกรมไหนได้บ้าง?

โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต่อผ่าน URL จึงใช้กับโปรแกรมที่รับ remote MCP ได้ เช่น ChatGPT ที่เปิดโหมดนักพัฒนา

มีตัวไหนใช้แทนได้บ้าง?

ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, Foliosio

ตัวที่ใช้แทนได้

server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว

อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi

Spec Driven Development

โดย formulahendry

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

รันบนเครื่อง★ 440MITอัปเดต 14 เดือนที่ผ่านมา
ติดตั้ง

Remote Desktop Commander

โดย desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

รันบนคลาวด์★ 211อัปเดต เมื่อวานซืน
ติดตั้ง

Foliosio

โดย foliosio.com

Read your support inbox, tag conversations and save draft replies from your AI agent. Never sends.

รันบนคลาวด์อัปเดต วันนี้
ติดตั้ง

README จากผู้ทำ

เปิดอ่าน README

ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ 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

ตัดมาแค่ช่วงต้น อ่านต่อใน repo

ถาม PopNx