Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
US places then: county on a date, PLSS land, GNIS names, old topo maps, post offices.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
US_PLACES_OVERPASS_URL, US_PLACES_PLSS_URL, US_PLACES_GNIS_URL, US_PLACES_GNIS_ARCHIVE_URL, US_PLACES_TNM_URL, US_PLACES_DATAVERSE_URL, US_PLACES_CACHE_DIR, US_PLACES_TIMEOUT, US_PLACES_CONTACTต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"us-places": {
"command": "uvx",
"args": [
"us-places-mcp"
],
"env": {
"US_PLACES_OVERPASS_URL": "ใส่ค่าของคุณ",
"US_PLACES_PLSS_URL": "ใส่ค่าของคุณ",
"US_PLACES_GNIS_URL": "ใส่ค่าของคุณ",
"US_PLACES_GNIS_ARCHIVE_URL": "ใส่ค่าของคุณ",
"US_PLACES_TNM_URL": "ใส่ค่าของคุณ",
"US_PLACES_DATAVERSE_URL": "ใส่ค่าของคุณ",
"US_PLACES_CACHE_DIR": "ใส่ค่าของคุณ",
"US_PLACES_TIMEOUT": "ใส่ค่าของคุณ",
"US_PLACES_CONTACT": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add us-places --env US_PLACES_OVERPASS_URL='ใส่ค่าของคุณ' --env US_PLACES_PLSS_URL='ใส่ค่าของคุณ' --env US_PLACES_GNIS_URL='ใส่ค่าของคุณ' --env US_PLACES_GNIS_ARCHIVE_URL='ใส่ค่าของคุณ' --env US_PLACES_TNM_URL='ใส่ค่าของคุณ' --env US_PLACES_DATAVERSE_URL='ใส่ค่าของคุณ' --env US_PLACES_CACHE_DIR='ใส่ค่าของคุณ' --env US_PLACES_TIMEOUT='ใส่ค่าของคุณ' --env US_PLACES_CONTACT='ใส่ค่าของคุณ' -- uvx us-places-mcpเติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"us-places": {
"command": "uvx",
"args": [
"us-places-mcp"
],
"env": {
"US_PLACES_OVERPASS_URL": "ใส่ค่าของคุณ",
"US_PLACES_PLSS_URL": "ใส่ค่าของคุณ",
"US_PLACES_GNIS_URL": "ใส่ค่าของคุณ",
"US_PLACES_GNIS_ARCHIVE_URL": "ใส่ค่าของคุณ",
"US_PLACES_TNM_URL": "ใส่ค่าของคุณ",
"US_PLACES_DATAVERSE_URL": "ใส่ค่าของคุณ",
"US_PLACES_CACHE_DIR": "ใส่ค่าของคุณ",
"US_PLACES_TIMEOUT": "ใส่ค่าของคุณ",
"US_PLACES_CONTACT": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"us-places": {
"type": "stdio",
"command": "uvx",
"args": [
"us-places-mcp"
],
"env": {
"US_PLACES_OVERPASS_URL": "ใส่ค่าของคุณ",
"US_PLACES_PLSS_URL": "ใส่ค่าของคุณ",
"US_PLACES_GNIS_URL": "ใส่ค่าของคุณ",
"US_PLACES_GNIS_ARCHIVE_URL": "ใส่ค่าของคุณ",
"US_PLACES_TNM_URL": "ใส่ค่าของคุณ",
"US_PLACES_DATAVERSE_URL": "ใส่ค่าของคุณ",
"US_PLACES_CACHE_DIR": "ใส่ค่าของคุณ",
"US_PLACES_TIMEOUT": "ใส่ค่าของคุณ",
"US_PLACES_CONTACT": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
US_PLACES_OVERPASS_URL envUS_PLACES_PLSS_URL envUS_PLACES_GNIS_URL envUS_PLACES_GNIS_ARCHIVE_URL envUS_PLACES_TNM_URL envUS_PLACES_DATAVERSE_URL envUS_PLACES_CACHE_DIR envUS_PLACES_TIMEOUT envUS_PLACES_CONTACT envค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 7 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub ianderso ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.2.0) เข้า registry 32 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Python (uv) ในเครื่องด้วย
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, Kanal Varna — drains, leaks & plumbing (Varna, BG)
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.
Drain unblocking, leak detection & plumbing in Varna, Bulgaria: services, prices, areas, contact
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
An MCP server for where things were, then. Records follow the jurisdiction that held a place on the date of the event, not today's: a 1795 deed for a farm now in Greene County, Pennsylvania, is in Washington County's books, because Greene was carved out the next year. This server answers the questions that decide which office to write to:
Nothing here writes anywhere, and nothing here keeps a family tree. It sits well beside nara-catalog-mcp, which can run the archive searches this server builds, familysearch-mcp and snac-archives-mcp.
This is an independent project. It is not affiliated with, endorsed by, or supported by the Newberry Library, OpenHistoricalMap, the Bureau of Land Management, the US Geological Survey, Harvard Dataverse, the dataset's authors or the National Archives.
The server publishes twelve tools, all read-only and annotated so for the client. Five make no network call at all.
Jurisdiction at a date
| Tool | Purpose |
|---|---|
county_at | The county (or counties) that held a point on a date: a day, a month or a year. Returns the holder, its dates, the event and statute that made it, the whole chain of counties for that spot, changes within a year (check those by hand), and whether two governments contested it. |
county_history | Every version of one county: created when, from what, and each later change, with statutes. |
Federal land
| Tool | Purpose |
|---|---|
parse_legal_description | Read a land description, however it is written (E½NE, E2NE, E 1/2 NE 1/4, "the east half of the northeast quarter", GLO's padded 0840N, lots, several tracts), into its parts, with quarter-quarters and warnings for anything guessed. Offline. |
plss_locate | Place a description on the map: centroid, bounding box, acreage and BLM's ids, to the township, section, quarter-quarter or lot. |
plss_from_point | Name the survey tract at a point: township, range, section and quarter-quarter. |
public_land_state | Was this state federal land? If not, who granted first title and where those records are; if so, its meridians and special cases. Offline. |
Vanished places and old maps
| Tool | Purpose |
|---|---|
find_place_name | A named place in GNIS: its point, class, state and county. Searches the live GNIS and, given a state, the archive of August 2021 that keeps the cemeteries, churches, schools, post offices and buildings GNIS dropped that year; says which answered. |
post_offices | Which US post offices existed, 1639-2000: by name, by state and today's county, or around a point, and in a given year. Each with its years, whether it ran continuously, and its point if it was geocoded. |
historical_topo_maps | Every USGS topographic map covering a point, oldest first: date, scale and quadrangle, with GeoPDF, GeoTIFF and JPEG preview links, and a TopoView link for JPEG and KMZ. |
From patent to case file
| Tool | Purpose |
|---|---|
find_land_entry_file | From a patent's Authority: the kind of entry, what its file holds, which National Archives series has it, ready-made arguments for nara-catalog-mcp's search_records_advanced, and how to order the file if it is not online. Offline. |
glo_links | A link to a search, or to one record, on BLM's General Land Office Records site, for you to open. Offline. |
cache_status | This session's live calls and cache hits, and the datasets downloaded so far. Offline. |
You need Python 3.11 or later and uv. There is no key to request.
uvx us-places-mcp
or from a clone:
git clone https://github.com/ianderso/us-places-mcp
cd us-places-mcp uv sync uv run us-places-mcp # stdio server, usually launched by the client
{
"mcpServers": { "places": { "command": "uvx", "args": ["us-places-mcp"] } } }
If the server fails to start because uvx cannot be found, give the full path that which uvx prints as the command.
claude mcp add places -- uvx us-places-mcp
Nothing is required. A .env file in the directory the server starts in supplies anything the environment does not; only that directory is read.
| Variable | Meaning |
|---|---|
US_PLACES_OVERPASS_URL | OpenHistoricalMap's Overpass endpoint. Default https://overpass-api.openhistoricalmap.org/api/interpreter. |
US_PLACES_PLSS_URL | BLM's national PLSS map service. Default https://gis.blm.gov/arcgis/rest/services/Cadastral/BLM_Natl_PLSS_CadNSDI/MapServer. |
US_PLACES_GNIS_URL | USGS's GNIS map service. Default https://carto.nationalmap.gov/arcgis/rest/services/geonames/MapServer. |
US_PLACES_GNIS_ARCHIVE_URL | The folder of GNIS state files from August 2021. Default https://prd-tnm.s3.amazonaws.com/StagedProducts/GeographicNames/Archive/MainDomestic. |
US_PLACES_TNM_URL | The National Map's TNM Access products API. Default https://tnmaccess.nationalmap.gov/api/v1/products. |
US_PLACES_DATAVERSE_URL | Harvard Dataverse, which holds the post-office dataset. Default https://dataverse.harvard.edu. |
US_PLACES_CACHE_DIR | Response cache directory; downloaded datasets go in its data folder. Default ~/.cache/us-places-mcp. |
US_PLACES_TIMEOUT | HTTP timeout in seconds. Default 60. |
US_PLACES_CONTACT | An email address or URL added to the User-Agent, so the services can reach you. Optional, and courteous. |
Every URL must be https. Their hosts, and Dataverse's file store (dvn-cloud-iqss.s3.amazonaws.com, where it redirects downloads), are the only ones the server will contact.
OpenHistoricalMap's Overpass server runs on donated capacity and publishes no rate limit. The server sends one request at a time to each service, two seconds apart for OpenHistoricalMap, half a second for BLM and a second for USGS and Dataverse, joins identical calls in flight, and caches answers on disk: county answers for 90 days, GNIS and map answers for 30, survey answers until you pass refresh=true. A 429 or a 5xx is retried three times with back-off, then reported as rate_limited or upstream_error, which is never the same as "nothing here".
Two sources are files rather than services, so the server downloads them once and reads them locally. Nothing is downloaded until a tool needs it, and the result that triggered a download says so: what, how big, how it was checked and where it was saved.
| Data | When | Size | Checked against |
|---|---|---|---|
| US Post Offices (Blevins and Helbock, doi:10.7910/DVN/NUKCNA, CC0) | The first post_offices call | 31 MB download, 21 MB on disk | The MD5 Dataverse publishes for the file |
| GNIS state file of 25 August 2021 (USGS, public domain) | The first find_place_name search in that state | Up to 17 MB per state (Pennsylvania 9.8 MB); only the dropped classes are kept, about 6 MB for Pennsylvania | The ETag USGS's bucket reports (an MD5, or the MD5 of the upload's parts) |
Both are stored as SQLite files in data under the cache directory (~/.cache/us-places-mcp/data by default), never in the repository. A file that fails its check is deleted and the tool reports download_failed. cache_status lists what is there; delete the folder to start again.
boundary_change_within_a_year lists changes close to your date. Laws took effect on stated days, but offices took time to organise; records from those months can be in either county.county_at reads this from the atlas's event text."status": "contested" means look in both governments' records.parse_legal_description keeps the original text and says what it guessed: a section number with no "Sec.", a meridian taken from the state.ตัดมาแค่ช่วงต้น อ่านต่อใน repo