Lintsure
Compliance readiness checks for code: EU AI Act, GDPR, SOC 2, ISO 27001. Local. Not legal advice.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Charlotte and Mecklenburg County open data: addresses, crime, 311, zoning, budget, and services
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
ใช้ได้ทั้ง Claude บนเว็บ แอปคอมพิวเตอร์ และมือถือ:
https://queensestate.adamwanninger.com/mcpเปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"queensestate": {
"command": "uvx",
"args": [
"queensestate"
]
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add --transport http queensestate https://queensestate.adamwanninger.com/mcpclaude mcp add queensestate -- uvx queensestateวางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"queensestate": {
"url": "https://queensestate.adamwanninger.com/mcp"
}
}
}วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"queensestate": {
"command": "uvx",
"args": [
"queensestate"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"queensestate": {
"type": "http",
"url": "https://queensestate.adamwanninger.com/mcp"
}
}
}วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"queensestate": {
"type": "stdio",
"command": "uvx",
"args": [
"queensestate"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ChatGPT ต่อได้เฉพาะ server ที่อยู่บนอินเทอร์เน็ต:
https://queensestate.adamwanninger.com/mcpชื่อเมนูอาจต่างกันเล็กน้อยตามแพ็กเกจและรุ่นของแอป
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
ยังไม่ได้อ่านรายการเครื่องมือของตัวนี้ เราตรวจ endpoint ทีละชุดวนไป
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 8 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub ajwann ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้ตรวจ เราตรวจ endpoint ทีละชุดวนไป
ยังไม่ได้ตรวจ เราตรวจ endpoint ทีละชุดวนไป
ยังไม่ได้ตรวจ เราอ่านรายการเครื่องมือตอนตรวจ endpoint
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
ได้ทั้งสองแบบ จะลงในเครื่องหรือต่อผ่านคลาวด์ก็ได้
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (1.0.1) เข้า registry 2 เดือนที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต่อผ่าน URL จึงใช้กับโปรแกรมที่รับ remote MCP ได้ เช่น ChatGPT ที่เปิดโหมดนักพัฒนา
ในหมวดเดียวกันมี Lintsure, INDEC Argentina (no oficial), EcuDataMCP
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
Compliance readiness checks for code: EU AI Act, GDPR, SOC 2, ISO 27001. Local. Not legal advice.
Argentina's official statistics (INDEC): inflation, wages, poverty, trade, population. No signup.
Ecuador's open government data for AI assistants: CKAN, SRI, BCE, INEC, Supercias, SERCOP and more.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
An MCP server that lets an LLM answer Charlotte residents' everyday questions with official public data from the City of Charlotte Open Data Portal — https://data.charlottenc.gov.
The portal lives at
data.charlottenc.gov.
It is an ArcGIS Hub site; its ~380 datasets are ArcGIS REST layers run by the City of
Charlotte and Mecklenburg County. No API key is required.
A survey of the catalog (/api/feed/dcat-us/1.1.json) shows these main themes:
| Theme | Examples |
|---|---|
| Public safety | CMPD incidents (870k+ since 2017, updated daily), homicides, traffic stops, fire incident reports, crashes |
| City services | 311 service requests (3.4M), solid-waste collection routes, code enforcement cases, street closures |
| Planning & zoning | Zoning, rezoning petitions, historic districts, 2040 policy map, floodplains, parcels |
| Transportation | CATS bus routes and stops, LYNX light rail, park-and-ride, bike lanes, sidewalks, greenways |
| Places | Libraries, schools, parks, fire/police stations, pharmacies, grocery stores, EV chargers, day care |
| Government | Capital projects, budget, employee salaries, council and commissioner districts |
| Demographics | Census block groups/tracts, Quality of Life neighborhood profiles |
The tools are chosen for the questions residents actually ask. Every tool is read-only, and every location parameter accepts either an address ("600 E 4th St, Charlotte") or "latitude,longitude".
| Tool | Answers questions like |
|---|---|
get_address_profile | "Who is my council member?" "What police division and fire station serve me?" "What's my zoning? Am I in a flood zone or historic district?" |
get_trash_and_recycling_schedule | "What day is trash pickup? Is this a recycling week (GREEN/ORANGE)?" |
lookup_address | "Is this a valid address? What's its parcel ID and municipality?" |
| Tool | Answers questions like |
|---|---|
get_crime_near | "Any car break-ins near my apartment this month?" |
summarize_crime | "How have robberies in Charlotte changed since 2019?" "Which division has the most burglaries?" |
get_traffic_crashes_near | "Is the intersection by my kid's school dangerous?" |
| Tool | Answers questions like |
|---|---|
get_311_requests_near | "Has anyone already reported this pothole or streetlight?" |
get_code_enforcement_cases | "Does the house I'm renting have open housing-code violations?" |
get_street_closures | "Are any roads closed on my commute?" |
get_capital_projects_near | "What's being built near me, when is it done, and who do I contact?" |
get_pending_rezonings | "Is anyone trying to rezone land near my neighborhood?" |
| Tool | Answers questions like |
|---|---|
find_nearby_places | Nearest library, school, park, greenway, pharmacy, grocery store, EV charger, light rail station, bus stop, public Wi-Fi… (18 categories) |
get_bus_route | "How often does the 9 run on Sunday evenings?" |
| Tool | Answers questions like |
|---|---|
get_city_budget | "How much does the city budget for Police?" |
get_city_salary_stats | "What do Charlotte firefighters earn on average?" (aggregates only, no names) |
| Tool | Purpose |
|---|---|
search_datasets | Keyword search over the whole portal |
describe_dataset | Fields, types, and record count for a layer |
query_dataset | SQL-filtered records from any layer, optionally near a location |
summarize_dataset | Server-side counts/sums grouped by fields |
Requires Python 3.14 (developed on 3.14.7).
~/.pyenv/versions/3.14.7/bin/python -m venv .venv
.venv/bin/python -m pip install -e . --group dev
claude mcp add queensestate -- /absolute/path/to/queensestate/.venv/bin/queensestate
Add to claude_desktop_config.json:
{
"mcpServers": { "queensestate": { "command": "/absolute/path/to/queensestate/.venv/bin/queensestate" } } }
.venv/bin/queensestate --transport http --port 8000 # http://127.0.0.1:8000/mcp
npx @modelcontextprotocol/inspector .venv/bin/queensestate # interactive inspector
The http transport authenticates its callers with Google OAuth and refuses to start without a public URL, a Google client, and an allow list — see Hosting. To try it locally:
QUEENSESTATE_PUBLIC_URL=http://localhost:8000 \
QUEENSESTATE_GOOGLE_CLIENT_ID=... QUEENSESTATE_GOOGLE_CLIENT_SECRET=... \ QUEENSESTATE_ALLOWED_EMAILS=you@gmail.com \ .venv/bin/queensestate --transport http --port 8000
The hosted server runs on Google Cloud Run at https://queensestate.adamwanninger.com/mcp, and is its own OAuth 2.1 authorization server: it delegates the sign-in to Google purely to learn which account is calling, then checks that address against an allow list and mints its own tokens. Google's tokens are never passed through to the MCP client.
claude mcp add --transport http queensestate https://queensestate.adamwanninger.com/mcp
scripts/deploy-gcp.sh provisions and deploys the whole thing, and re-running it is also how you update. See deploy/GCP.md.
Hosting is only for the HTTP transport. Running the server locally over stdio needs no Google account, no allow list, and none of the cloud dependencies.
.venv/bin/pytest # unit + in-memory MCP tests; no network access
.venv/bin/ruff format --check . && .venv/bin/ruff check . .venv/bin/mypy
Layout:
src/queensestate/arcgis.py: async ArcGIS REST / Hub client (timeouts, bounded retries, host allowlist)src/queensestate/address.py: address matching against the county Master Address layersrc/queensestate/catalog.py: the curated layers behind the purpose-built toolssrc/queensestate/server.py: the MCP tools2026-09-06T00:00:00-04:00). The underlying services store UTC.get_city_budget reports both the net total and the sum of positive lines.resultRecordCount on aggregate queries, so the client enforces row limits itself.find_nearby_places match CATS stop IDs.gis.charlottenc.gov, meckgis.mecklenburgcountync.gov, services.arcgis.com, gis.ci.charlotte.nc.us).MIT - see LICENSE.