Lintsure
Compliance readiness checks for code: EU AI Act, GDPR, SOC 2, ISO 27001. Local. Not legal advice.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Find air-quality stations and read pollutant observations from government monitors via OpenAQ v3.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
OPENAQ_API_KEY, OPENAQ_API_BASE_URL, CANVAS_PROVIDER_TYPE, OPENAQ_ENABLE_CANVAS_DROP, MCP_LOG_LEVELค่าที่ติดป้ายความลับคือกุญแจของบัญชีคุณ อย่าส่งให้ใคร และอย่าวางในแชต
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
ใช้ได้ทั้ง Claude บนเว็บ แอปคอมพิวเตอร์ และมือถือ:
https://openaq.caseyjhand.com/mcpเปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"openaq": {
"command": "npx",
"args": [
"-y",
"@cyanheads/openaq-mcp-server",
"run",
"start:stdio"
],
"env": {
"OPENAQ_API_KEY": "ใส่ค่าของคุณ",
"OPENAQ_API_BASE_URL": "ใส่ค่าของคุณ",
"CANVAS_PROVIDER_TYPE": "ใส่ค่าของคุณ",
"OPENAQ_ENABLE_CANVAS_DROP": "ใส่ค่าของคุณ",
"MCP_LOG_LEVEL": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add --transport http openaq https://openaq.caseyjhand.com/mcpclaude mcp add openaq --env OPENAQ_API_KEY='ใส่ค่าของคุณ' --env OPENAQ_API_BASE_URL='ใส่ค่าของคุณ' --env CANVAS_PROVIDER_TYPE='ใส่ค่าของคุณ' --env OPENAQ_ENABLE_CANVAS_DROP='ใส่ค่าของคุณ' --env MCP_LOG_LEVEL='ใส่ค่าของคุณ' -- npx -y @cyanheads/openaq-mcp-server run start:stdioเติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"openaq": {
"url": "https://openaq.caseyjhand.com/mcp"
}
}
}วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"openaq": {
"command": "npx",
"args": [
"-y",
"@cyanheads/openaq-mcp-server",
"run",
"start:stdio"
],
"env": {
"OPENAQ_API_KEY": "ใส่ค่าของคุณ",
"OPENAQ_API_BASE_URL": "ใส่ค่าของคุณ",
"CANVAS_PROVIDER_TYPE": "ใส่ค่าของคุณ",
"OPENAQ_ENABLE_CANVAS_DROP": "ใส่ค่าของคุณ",
"MCP_LOG_LEVEL": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"openaq": {
"type": "http",
"url": "https://openaq.caseyjhand.com/mcp"
}
}
}วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"openaq": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@cyanheads/openaq-mcp-server",
"run",
"start:stdio"
],
"env": {
"OPENAQ_API_KEY": "ใส่ค่าของคุณ",
"OPENAQ_API_BASE_URL": "ใส่ค่าของคุณ",
"CANVAS_PROVIDER_TYPE": "ใส่ค่าของคุณ",
"OPENAQ_ENABLE_CANVAS_DROP": "ใส่ค่าของคุณ",
"MCP_LOG_LEVEL": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ChatGPT ต่อได้เฉพาะ server ที่อยู่บนอินเทอร์เน็ต:
https://openaq.caseyjhand.com/mcpชื่อเมนูอาจต่างกันเล็กน้อยตามแพ็กเกจและรุ่นของแอป
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
OPENAQ_API_BASE_URL envCANVAS_PROVIDER_TYPE envOPENAQ_ENABLE_CANVAS_DROP envMCP_LOG_LEVEL envค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
ยังไม่ได้อ่านรายการเครื่องมือของตัวนี้ เราตรวจ endpoint ทีละชุดวนไป
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 8 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub cyanheads ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้ตรวจ เราตรวจ endpoint ทีละชุดวนไป
ยังไม่ได้ตรวจ เราตรวจ endpoint ทีละชุดวนไป
ยังไม่ได้ตรวจ เราอ่านรายการเครื่องมือตอนตรวจ endpoint
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
ต้องใส่ค่าเหล่านี้: OPENAQ_API_KEY
ได้ทั้งสองแบบ จะลงในเครื่องหรือต่อผ่านคลาวด์ก็ได้
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.4.1) เข้า registry 42 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต่อผ่าน URL จึงใช้กับโปรแกรมที่รับ remote MCP ได้ เช่น ChatGPT ที่เปิดโหมดนักพัฒนา
ในหมวดเดียวกันมี Lintsure, DutyKit, Licto
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:↓ ดาวน์โหลดต่อสัปดาห์i★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
Compliance readiness checks for code: EU AI Act, GDPR, SOC 2, ISO 27001. Local. Not legal advice.
EU business duties for AI agents: legal obligations with sources and pre-checks (DE, LU, EU)
Spanish public procurement: open tenders, contracting bodies and award winners, from official data.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
@cyanheads/openaq-mcp-server Find air-quality monitoring stations, read latest sensor values, and pull historical pollutant series via MCP. STDIO or Streamable HTTP. 8 Tools (7 enabled by default) • 2 Resources
Public Hosted Server: https://openaq.caseyjhand.com/mcp
Measured air quality from the OpenAQ v3 API: physical-sensor observations from government reference monitors and research-grade sensors worldwide. Find monitoring stations, read current values, and pull historical pollutant series from any MCP client. Runs as a stdio process, a local Streamable HTTP server, or the public hosted endpoint above.
| Tool | Description |
|---|---|
openaq_find_locations | Find monitoring stations near a point, in a bounding box, or by country; the location ids the other tools take |
openaq_get_readings | Latest value for every sensor at a station, labeled with its pollutant and unit |
openaq_get_measurements | Historical series for one pollutant at one station, raw or rolled up hourly/daily |
openaq_list_parameters | Pollutant catalog with canonical units; maps a pollutant and unit to its parameter id |
openaq_list_countries | Country coverage: data span and the parameters measured in each |
openaq_dataframe_describe | List the tables and columns staged on a DataCanvas |
openaq_dataframe_query | Run a read-only SQL SELECT over staged measurement series |
openaq_dataframe_drop | Delete a complete staged canvas; opt-in with OPENAQ_ENABLE_CANVAS_DROP=true |
| Resource | Description |
|---|---|
openaq://location/{locationId} | Metadata for one station: coordinates, provider, sensors with units, data span |
openaq://parameters | Full pollutant and unit catalog |
Both resources mirror tool output, so tool-only clients lose nothing.
openaq_find_locations toolcoordinates with radius (metres, 1–25000, default 12000), bbox, and/or iso (a code from openaq_list_countries); at least one is required, and coordinates and bbox exclude each other. parametersId, monitor, mobile, and providersId narrow further; up to 100 stations per page (limit, default 20), 1-based pageid, distanceMeters (coordinate search only), provider/providerId, isMonitor/isMobile, its parameters with units, and the datetimeFirst/datetimeLast span; coordinates, country, and provider are null when OpenAQ lists nonetotalCount counts stations through the current page and is a floor when totalCountIsLowerBound is set; no match fails as no_locations_found, a page past the end as page_exhaustedopenaq_get_readings toollocationId, or coordinates plus parametersId to resolve the nearest station within 25 km that measures it (compared across up to 1,000 matching stations; a full 1,000 adds a notice); with locationId, parametersId optionally filters to one parametervalue, unit, sensorId, and datetimeUtc/datetimeLocal, plus the station's provider, providerId, timezone, and datetimeLastlocation_not_found, parameter_not_at_location (with the station's available ids), no_station_near_coordinates, no_recent_valuesopenaq_get_measurements toollocationId and parametersId; datetimeFrom/datetimeTo accept UTC timestamps or station-local YYYY-MM-DD dates (UTC days when the station has no timezone). aggregation is raw (default), hourly, or daily; up to 5,000 rows per callseries, sensorId, pulledCount, pullComplete, effectiveRange, and station provider, providerId, and timezone. totalCount is a floor when totalCountIsLowerBound is set; rollups add summary statistics, gapCount, the first 20 missing intervals as gaps, and a notice when edge buckets are clippedseries is a preview (truncated) and the pulled rows stage on a DataCanvas as measurements_ (canvasId, tableName) when CANVAS_PROVIDER_TYPE=duckdb; a supplied canvas_id stages onto that canvas at any size. One table per sensor: a second sensor adds a table to join against, and re-staging the same sensor overwrites its earlier seriesopenaq_list_parameters toolquery over code, display name, and description; pollutantsOnly drops meteorological and particle-count channelsid, name, displayName, unit, and description; one pollutant can appear under several ids by unit (CO is 4 in µg/m³, 8 in ppm, 102 in ppb)openaq_list_countries toolquery (a two-letter value matches an ISO 3166-1 alpha-2 code first; otherwise code or name substrings match) and parametersId; up to 100 per page (limit, default 20), 1-based pagecode (the iso value for openaq_find_locations), name, the datetimeFirst/datetimeLast span, and the parameters measured anywhere in the country; totalCount is the full filtered countopenaq_dataframe_describe toolcanvas_id from openaq_get_measurements and returns each staged table's name, rowCount, and columns. Call it before openaq_dataframe_query: the staged table is flat (min, sd) while the inline series nests those under summarycanvas_unavailable unless CANVAS_PROVIDER_TYPE=duckdb, or canvas_not_found for an unknown or expired idopenaq_dataframe_query toolcanvas_id and one read-only SELECT; writes, DDL, and file/network table functions are rejectedtruncated set when the cap cut the result; page with ORDER BY plus LIMIT/OFFSETcanvas_unavailable, canvas_not_found, or missing_tableopenaq_dataframe_drop toolOPENAQ_ENABLE_CANVAS_DROP=true; calls fail as canvas_unavailable unless CANVAS_PROVIDER_TYPE=duckdb. When disabled, the HTTP landing page shows the enable hint and tools/list omits the toolcanvas_id and deletes that whole canvas, including all staged tables. Other agents sharing the id lose access; OpenAQ's source data is unaffectedcanvasId and dropped: true when deleted, false when no reachable canvas exists. With authentication off, callers share a tenant: anyone holding an id can delete its canvas when enabledopenaq://location/{locationId} resourceapplication/json: name, locality, timezone, country, provider, isMonitor/isMobile, coordinates, sensors (each with parameterId and unit), and the datetimeFirst/datetimeLast spanlocationId comes from openaq_find_locations; cached 5 minutesopenaq://parameters resourceapplication/json catalog, the same rows as an unfiltered openaq_list_parametersBuilt on @cyanheads/mcp-ts-core: stdio and Streamable HTTP transports, pluggable auth (none / jwt / oauth), swappable storage (in-memory, filesystem, Supabase, Cloudflare KV/R2/D1), structured logging with optional OpenTelemetry tracing.
OpenAQ-specific:
X-API-Key auth, retry with backoff, and typed upstream failures (invalid_api_key, rate_limited, upstream_timeout, upstream_error) on every OpenAQ callcanvas_id can be joinedAgent-friendly output:
no_locations_found or no_station_near_coordinates, stated as no coverage rather than clean airparametersId selects pollutant and unit togetherdatetimeLast, and totalCount / truncated / notice on capped resultsA public instance is available at https://openaq.caseyjhand.com/mcp — no installation required. Point any MCP client at it via Streamable HTTP:
{
"mcpServers": { "openaq-mcp-server": { "type": "streamable-http", "url": "https://openaq.caseyjhand.com/mcp" } } }
Add the following to your MCP client configuration file.
{
"mcpServers": { "openaq-mcp-server": { "type": "stdio", "command": "bunx", "args": ["@cyanheads/openaq-mcp-server@latest"], "env": { "MCP_TRANSPORT_TYPE": "stdio", "OPENAQ_API_KEY": "your-api-key" } } } }
Or with npx (no Bun required):
{
"mcpServers": { "openaq-mcp-server": { "type": "stdio", "command": "npx", "args": ["-y", "@cyanheads/openaq-mcp-server@latest"], "env": { "MCP_TRANSPORT_TYPE": "stdio", "OPENAQ_API_KEY": "your-api-key" } } } }
Or with Docker:
{
"mcpServers": { "openaq-mcp-server": { "type": "stdio", "command": "docker", "args": [ "run", "-i", "--rm", "-e", "MCP_TRANSPORT_TYPE=stdio", "-e", "OPENAQ_API_KEY=your-api-key", "ghcr.io/cyanheads/openaq-mcp-server:latest" ] } } }
Add `"CANVAS_PROVIDER_TYPE": "du
ตัดมาแค่ช่วงต้น อ่านต่อใน repo