Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Every country in Arabic and English: names, nationalities, dial codes, phone validation.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"worldref": {
"command": "npx",
"args": [
"-y",
"worldref",
"mcp"
]
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add worldref -- npx -y worldref mcpวางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"worldref": {
"command": "npx",
"args": [
"-y",
"worldref",
"mcp"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"worldref": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"worldref",
"mcp"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 6 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub arj-89 ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (1.1.2) เข้า registry เมื่อวานซืน
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js ในเครื่องด้วย
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, Symantec Cloud DLP AIops
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว 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.
Governed Symantec Cloud DLP — 14 MCP tools, read-only with audit.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
Every country in Arabic, English, or both: names, nationalities, capitals, currencies, languages, time zones, dial codes, phone validation, address formats and subdivisions. One dataset, ready for JSON, CSV, SQL, TypeScript, Python, Swift, Kotlin, Dart, PHP, Go and C#, and for AI agents (MCP).
العربية · Website and search demo · Best practices · Field reference · Data sources
import { countries, search, parsePhone, byIso2 } from "worldref";
byIso2("SA").name_ar; // "السعودية" byIso2("SA").nationality.nationality_ar_f; // "سعودية" search(countries, "الامارات", "ar")[0].iso2; // "AE" (ignores «ال», hamza and tashkeel) parsePhone("٠٥٠١٢٣٤٥٦٧", byIso2("SA")); // { e164: "+966501234567", valid: true, mobile: true, ... }
name_ar, name_en), Arabic-only (name) and English-only (name).data/sources.json. A missing value is null, never a guess or a machine translation.Published on npm, PyPI, pub.dev, Packagist, NuGet and the MCP Registry. Swift, Kotlin and Go install straight from this repository.
| Stack | Install |
|---|---|
| JavaScript, TypeScript (web, Node 20.10+, React Native, Bun, Deno) | npm i worldref |
| CDN (no build step) | https://cdn.jsdelivr.net/npm/worldref@1.1.2/data/worldref.json |
| Swift (iOS, macOS) | Swift Package Manager: https://github.com/arj-89/worldref, from 1.1.2, product WorldRef |
| Kotlin, Android | JitPack: maven("https://jitpack.io"), then implementation("com.github.arj-89:worldref:v1.1.2") |
| Python | pip install worldref |
| Dart, Flutter | dart pub add worldref (Flutter: flutter pub add worldref) |
| PHP, Laravel | composer require arj-89/worldref |
| Go | go get github.com/arj-89/worldref/go@v1.1.2 |
| C#, .NET | dotnet add package WorldRef |
| Any language | JSON, CSV and SQL (Postgres, MySQL, SQLite) in data/ and on the releases page |
| AI agents | MCP server: npx -y worldref mcp (listed in the MCP Registry as io.github.arj-89/worldref) |
| No install | One country: https://arj-89.github.io/worldref/api/v1/sa.json |
Each language folder has its own README with a usage example: python, Swift, kotlin, dart, php, go, csharp.
iso2: core, nationality, phone, currency, geo, locale, address, travel, sports, plus subdivisions. Find them in data/modules/..json (Arabic and English), .ar.json (Arabic only), .en.json (English only). import phone from "worldref/data/modules/phone.json" with { type: "json" };
import { parsePhone } from "worldref/helpers";
- **Other languages:** load only the module files you need. [`data/worldref.json`](data/worldref.json) has everything.
https://arj-89.github.io/worldref/api/v1/{iso2}.json.null (or an empty list). Treat it as unknown; never fill it in.Country picker (user's country first, then alphabetical in the UI language):
import { countries, sortCountries, search } from "worldref";
const list = sortCountries(countries, "ar", "SA"); // السعودية first, then Arabic order const hits = search(countries, userQuery, "ar"); // names, aliases, ISO codes, +966 / 00966 / 966
Show: flag, name in the UI language, then the dial code. In Arabic, isolate the dial code left-to-right (`<bdi dir="ltr">+966</bdi>`).
Phone field (store the international form plus the country the user picked):
const p = parsePhone(input, byIso2(pickedIso2), countries);
if (p?.valid && p.mobile) save({ phone: p.e164, phone_country: p.iso2 });
Nationality field (only rows that have one: countries, plus Taiwan, Hong Kong and Macau):
const options = countries.filter((c) => c.nationality.nationality_en);
const label = (c, female) => (female ? c.nationality.nationality_ar_f : c.nationality.nationality_ar_m);
Database seed: run data/sql/postgres.sql (or mysql.sql, sqlite.sql). It creates countries and subdivisions.
Every rule below is built into the helpers of all eight packages and locked by the shared tests in tests/vectors.json. Use the helpers; if you write your own, follow these rules exactly.
Search (normalize(), search())
Sorting (sortCountries())
sort_ar or sort_en with plain string comparison. Do not use locale collation (Intl.Collator("ar"), localizedStandardCompare): neither ignores «ال», so every «ال» name bunches under ا.Display
+966 , or U+2066 ... U+2069). The data never contains bidi marks.flag_svg on the web: Windows does not draw flag emoji.symbol (the Saudi riyal sign is U+20C1) and fall back to symbol_fallback (ر.س) where the font lacks the new sign.Phone fields (parsePhone(), formatNational())
e164) together with the iso2 the user picked. Shared calling codes (+1, +7, +44, +599...) cannot be read back to one country from the number alone.mobile_pattern. Where mobile_distinguishable is false (US, Canada), do not reject a number for not looking like a mobile.formatNational() (5X XXX XXXX style).Nationality fields
nationality.nationality_en is not null (countries, plus Taiwan, Hong Kong and Macau).nationality_ar_m (سعودي) or nationality_ar_f (سعودية).Data
null (or an empty list) means unknown. Show it as unknown; never fill it from elsewhere.iso2.#v1.1.2, @1.1.2) so names and rules do not change under you.Single-language builds drop the _ar / _en suffix (name_ar becomes name in .ar.json).
| Field | Module | Example (SA) | Meaning |
|---|---|---|---|
iso2 | all | SA | ISO 3166-1 alpha-2 code (XK for Kosovo). The key that joins every module. |
iso3 | core | SAU | ISO 3166-1 alpha-3 code (XKK for Kosovo, as in CLDR). |
iso_numeric | core | 682 | ISO 3166-1 numeric code, as text to keep leading zeros. |
kind | core | country | country (sovereign state, including Palestine, Vatican and Kosovo) or territory. |
name_ar | core | السعودية | Short common name in Arabic. |
name_en | core | Saudi Arabia | Short common name in English. |
official_name_ar | core | المملكة العربية السعودية | Official long name in Arabic, when a source states one. |
official_name_en | core | Kingdom of Saudi Arabia | Official long name in English, when a source states one. |
aliases_ar | core | ["المملكة العربية السعودية","المملكة"... | Other Arabic names people search with. For search only, not display. |
aliases_en | core | ["KSA","Kingdom of Saudi Arabia","Sau... | Other English names people search with. For search only, not display. |
flag | core | 🇸🇦 | Flag emoji (regional indicator pair). Windows does not draw these; use flag_svg on the web. |
flag_svg | core | flags/sa.svg | Path of the 4:3 SVG flag in this package. |
| continent | core | asia | africa, americas, asia, europe or o
ตัดมาแค่ช่วงต้น อ่านต่อใน repo