Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Lint MCP tool schemas for eight clients and score recovery.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"lint": {
"command": "npx",
"args": [
"-y",
"mcp-lint"
]
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add lint -- npx -y mcp-lintวางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"lint": {
"command": "npx",
"args": [
"-y",
"mcp-lint"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"lint": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"mcp-lint"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 9 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub robert19001-cmyk ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (1.0.4) เข้า registry เมื่อวานซืน
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js ในเครื่องด้วย
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, arr-mcp
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:↓ ดาวน์โหลดต่อสัปดาห์i★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
One server, 40 tools, the whole media stack: *arrs, Jellyfin, Plex, Seerr, Cleanuparr, downloaders
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
Lint MCP server tool schemas, then check whether an agent can recover when a tool fails.
Proof page, with a live bench: mcp-lint-alpha.vercel.app
MCP servers expose tool schemas consumed by Claude, Cursor, Gemini, VS Code Copilot, Windsurf, Cline, OpenAI Agents SDK, and Continue.dev. Each client has different JSON Schema support and quirks — a schema that works in Claude may silently break in Cursor or OpenAI. mcp-lint catches these issues before your users do.
This repository is 1.0.4. Install it with npx mcp-lint@1.0.4. npm 1.0.3 is the previous registry release. npm 1.0.1 and npm 1.0.2 were not published. Design notes: PRODUCT.md, ROADMAP.md, ARCHITECTURE.md, SECURITY.md, RELEASE.md. Those files describe the current code. They are not extra commands.
$ npx mcp-lint check tools.json
search-tool ✖ Schema node at "inputSchema.properties.query" has required: false which is not valid JSON Schema. inputSchema.properties.query [no-required-false] ⚠ Parameter "limit" in tool "search-tool" is missing a description. inputSchema.properties.limit [description-exists]
1 error, 1 warning Next: mcp-lint explain no-required-false mcp-lint fix tools.json --dry-run
# In a repo that already has tools.json
npx mcp-lint
npx mcp-lint check tools.json
npm install -g mcp-lint
npm install --save-dev mcp-lint
# Look in this directory, and one level down, for tools.json, tools.yaml,
npx mcp-lint
mcp-lint check tools.json
mcp-lint compat tools.json
mcp-lint explain openai/no-additional-properties
mcp-lint fix tools.json --in-place
mcp-lint init
mcp-lint-server
mcp-lint recover examples/recover/bad-credential.json
mcp-lint check --installed
mcp-lint snapshot -o tools.json --server stdio -- node server.js mcp-lint diff tools.json tools.next.json
mcp-lint compat — Compatibility MatrixSee exactly which tools work with which clients:
$ mcp-lint compat tools.json
claude cursor gemini vscode windsurf cline openai continue search-tool ✓ ✗ ✓ ✓ ✓ ✓ ✓ ✓ file-reader ✓ ✓ ✗ ✓ ✓ ✓ ✓ ✗ database-query ✓ ✓ ✓ ✓ ✓ ✓ ✗ ✓
2 tools have compatibility issues. Run mcp-lint check for details.
mcp-lint compat tools.json --format markdown # for PRs and GitHub Step Summary
mcp-lint compat tools.json --format json # machine-readable mcp-lint compat tools.json --client openai # single client column mcp-lint compat --server stdio -- node server.js
mcp-lint explain — Rule Documentation$ mcp-lint explain openai/no-additional-properties
Rule: openai/no-additional-properties Severity: error Clients: openai Fix: review mcp-lint fix lists this and does not write it.
Description OpenAI Agents SDK strict mode requires additionalProperties: false on the root inputSchema.
Why OpenAI's strict function calling mode rejects schemas that don't explicitly set additionalProperties: false at the root level.
Bad example { "type": "object", "properties": { "q": { "type": "string" } } }
Good example { "type": "object", "properties": { "q": { "type": "string" } }, "additionalProperties": false }
Change Add "additionalProperties": false to the root inputSchema.
mcp-lint check [input]mcp-lint check tools.json
mcp-lint check tools.json --format terminal # default, colored output mcp-lint check tools.json --format json # machine-readable (CI/CD) mcp-lint check tools.json --format markdown # for PRs and GitHub summaries
mcp-lint check tools.json --clients claude,cursor,openai # only these clients' rules mcp-lint check tools.json --severity error # errors only mcp-lint check tools.json --quiet # same as --severity error mcp-lint check tools.json --ignore "debug-tool,internal-tool"
mcp-lint check tools.json --config path/to/.mcplintrc.json mcp-lint check tools.json --no-color
mcp-lint check tools.json --score
mcp-lint check tools.json --watch
mcp-lint check --server stdio -- node my-server.js mcp-lint check --server stdio -- python my_server.py arg1 arg2 mcp-lint check --server sse --url http://localhost:3000/sse
Exit codes:
| Code | Meaning |
|---|---|
0 | No schema errors. Warnings do not fail the command. |
1 | One or more schema errors, or the command could not read its input. |
2 | --watch was used without a file. |
mcp-lint report Writes the versioned audit report for one tools file. check --format json still prints the diagnostic array. report --format json prints MCPAuditReport.
mcp-lint report tools.json
mcp-lint report tools.json --format sarif --output results.sarif mcp-lint report tools.json --format html --output report.html mcp-lint report tools.json --format markdown
Formats are terminal, json, markdown, sarif, and html. The HTML file has inline CSS and no script. Token totals are a local chars / 4 estimate. The compatibility section is filled from that same lint. A cell is measured or not_observed. An empty tool list leaves the section not run. Recovery, preflight, and live inspection stay marked as not run. When the run has no schema errors, the report says: "No schema errors in this run. Recovery, preflight, and live inspection were not measured."
mcp-lint report tools.json --baseline audit.baseline.json
mcp-lint report tools.json --update-baseline audit.baseline.json
--baseline exits 1 when the stable snapshot differs. The snapshot pins generatedAt and keeps tool.version. Pass either --baseline or --update-baseline, not both. Exit 1 when the report contains an error, or when the file cannot be read.
mcp-lint catalogLists resources and prompts from one live server, then lints that list. It does not read installed configs and it does not call a tool. An empty or repeated URI, an empty resource name, an empty or repeated prompt name, and an empty or repeated argument name are errors and exit 1. A repeated resource display name, and a missing description, are warnings and do not. explain prints the rule. The fix class is manual: the command does not rewrite the server.
mcp-lint catalog --server stdio -- node server.js
mcp-lint catalog --server http --url https://example.com/mcp --format json
--server is stdio, sse, or http. Remote transports need --url. --timeout, --max-items, and --max-bytes bound each list. A method the server does not implement is unsupported and exits 0. Any other list failure exits 1. A lint error also exits 1. Usage errors exit 2. --format is terminal or json. JSON adds a findings array to the list. The array is empty when the list is clean.
mcp-lint diff Compare lint results between two versions of your schema — useful in CI to catch regressions.
mcp-lint diff tools-v1.json tools-v2.json
mcp-lint diff tools-v1.json tools-v2.json --format markdown >> $GITHUB_STEP_SUMMARY mcp-lint diff tools-v1.json tools-v2.json --format json
Exit codes: 0 = no new errors introduced, 1 = new errors found, 2 = error
mcp-lint check --installedReads the MCP configs already on this machine and lints each local stdio server. Nothing is uploaded. Remote URLs are skipped unless you pass --remote.
mcp-lint check --installed
mcp-lint check --from .cursor/mcp.json mcp-lint check --from .mcp.json --timeout 10000 --strict
Looked-up files:
| Client | Path |
|---|---|
| Cursor | ~/.cursor/mcp.json and ./.cursor/mcp.json |
| Claude Desktop | ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) |
| Claude Code | ~/.claude.json, ~/.claude/settings.json, and ./.mcp.json. ~/.claude.json also contributes each projects. .mcpServers entry. |
| VS Code | ~/Library/Application Support/Code/User/mcp.json and ./.vscode/mcp.json |
--strict also exits 1 when a configured server fails to start. Without it, a start failure is printed and the exit code follows the schema errors. If two started servers expose the same tool name, both reports include tool-name/server-collision.
mcp-lint snapshotWrites the live tools/list as a stable JSON file. Commit that file and compare it with diff when the server changes. diff exits 1 when the new file introduces an error the old file did not have.
mcp-lint snapshot -o tools.json --server stdio -- node server.js
mcp-lint snapshot -o tools.json --server http --url http://127.0.0.1:3000/mcp mcp-lint diff tools.json tools.next.json
mcp-lint fix [input]Writes fixes marked safe. review and manual fixes are printed by --dry-run and left in the file. mcp-lint does not invent titles, descriptions, or hints.
mcp-lint fix tools.json # fixed output to stdout
mcp-lint fix tools.json --output fixed-tools.json # write to file mcp-lint fix tools.json --in-place # overwrite original mcp-lint fix tools.json --dry-run # show what would be fixed mcp-lint fix tools.json --rules no-required-false,no-empty-enum # specific rules only
mcp-lint initCreates a default .mcplintrc.json in the current directory.
mcp-lint init # fails if file already exists
mcp-lint init --force # overwrite existing
| Rule | Severity | Fixable | Description |
|---|---|---|---|
no-required-false | 🔴 error | ✅ | required: false on properties is not valid JSON Schema |
no-content-encoding | 🔴 error | ✅ | contentEncoding is not supported by MCP clients |
no-empty-enum | 🔴 error | ✅ | Empty enum: [] makes a parameter impossible to satisfy |
no-recursive-refs | 🔴 error | ❌ | Circular $ref causes crashes in most clients |
valid-json-schema-subset | 🔴 error | ❌ | Unsupported keywords: oneOf, anyOf, allOf, if/then/else, not, patternProperties… |
description-exists | 🟡 warning | ❌ | Tools and parameters should have descriptions |
| max-depth | 🟡 warning | ❌ | Schema nesting deeper than 5 levels
ตัดมาแค่ช่วงต้น อ่านต่อใน repo