Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Security patrol management: missed rounds, suspicious scans, incidents and checkpoint setup.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
ใช้ได้ทั้ง Claude บนเว็บ แอปคอมพิวเตอร์ และมือถือ:
https://mcp.patroltech.online/mcpพิมพ์คำสั่งนี้ใน Terminal
claude mcp add --transport http patroltech https://mcp.patroltech.online/mcpวางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"patroltech": {
"url": "https://mcp.patroltech.online/mcp"
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"patroltech": {
"type": "http",
"url": "https://mcp.patroltech.online/mcp"
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ChatGPT ต่อได้เฉพาะ server ที่อยู่บนอินเทอร์เน็ต:
https://mcp.patroltech.online/mcpชื่อเมนูอาจต่างกันเล็กน้อยตามแพ็กเกจและรุ่นของแอป
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
server ให้ล็อกอินก่อนจึงจะแสดงรายการเครื่องมือ
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 7 พ.ย. 2569
ชื่อใน registry ยืนยันโดเมน patroltech.online แล้ว (registry ตรวจความเป็นเจ้าของโดเมน)
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตอบกลับใน 1092 ms (HTTP 401)
ประกาศวิธีล็อกอินแบบ OAuth ให้โปรแกรม AI พาไปล็อกอินเอง
ยังไม่ได้ตรวจ เราอ่านรายการเครื่องมือตอนตรวจ endpoint
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 3 จาก 3 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนคลาวด์ของผู้ทำ ต่อผ่านอินเทอร์เน็ตได้เลย ไม่ต้องลงโปรแกรม แต่ข้อมูลที่ส่งให้จะผ่านเซิร์ฟเวอร์ของผู้ทำ
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.2.8) เข้า registry 4 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต่อผ่าน URL จึงใช้กับโปรแกรมที่รับ remote MCP ได้ เช่น ChatGPT ที่เปิดโหมดนักพัฒนา
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, Intervals MCP
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.
Remote MCP server for intervals.icu run data and analysis
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
The remote Model Context Protocol server of PatrolTech, the guard tour and security patrol platform. It lets AI assistants such as Claude, ChatGPT, Copilot, Gemini or Cursor read and act on a PatrolTech account on behalf of a user who signs in with OAuth: rounds, routes, checkpoints, guards, incidents, users, locations, access control and scans.
This repository holds only the server code. To install the connector in your assistant, use PatrolTech/ai-integrations: plugins, MCP Registry entry and instructions for each client.
This server grants no access by itself. It has no credentials of its own: it forwards the user's token, and the PatrolTech API authorizes every call (organization and location roles, OAuth scopes and a closed list of writes allowed to agents). See SECURITY.md.
Use the hosted endpoint https://mcp.patroltech.online/mcp with an MCP client that supports remote OAuth. The user's PatrolTech account and role determine access.
Create a free account · Connection guide · Agent skill and client plugins
Building your own integration instead? See the API reference of the public REST API and the TypeScript SDK. Webhooks are in development: tell us which events you need at info@patroltech.app.
Ask about missed patrol rounds, suspicious checkpoint scans, unreviewed checkpoints, incidents or visitor access logs. Supported changes are proposals and require explicit confirmation. Deleting records, inviting users and billing are outside the connector's capabilities.
For client setup, OAuth verification and troubleshooting, see the agent installation guide, including Cline instructions.
MCP client ──OAuth──▶ PatrolTech authorization server
│ Bearer access token (audience = MCP_PUBLIC_URL) ▼ MCP server (this repo, stateless) ──agent session──▶ PatrolTech API │ ▲ └── Redis: locks and rate limits └── @patroltech/agent-capabilities + @patroltech/sdk-api
/mcp requires a bearer token issued by the PatrolTech authorization server (RFC 9728 metadata at /.well-known/oauth-protected-resource/mcp). Tokens are verified against the API's JWKS (ES256, exact issuer and audience) and exchanged for a 15-minute agent session (POST /oauth/agent-session), cached by a hash of the token. The API trims the session to what the grant still allows.SET NX PX, renewed while it lasts) and the per-user, per-tool rate limits. It is required in production and staging. If Redis fails, propose, confirm and cancel answer "busy" rather than risk two proposals overwriting each other. Without REDIS_URL (development and test only) both live in process memory.mcp channel of @patroltech/agent-capabilities, which calls the API through @patroltech/sdk-api.| Tool | What it does |
|---|---|
patroltech_ _ | One per read of the catalog: read-only, English titles and descriptions, optional organization when the user has several. |
patroltech_account_get_context | The user's organizations (name, role, access) and their locations. Its description says where to review this connection (DASHBOARD_URL, Connected apps). |
patroltech_ _propose_ | Proposes a change. Nothing changes until it is confirmed. Proposals of one user and client form one batch (up to 10, expires after 30 minutes). |
patroltech_proposals_confirm | Executes the whole pending batch, in order, with the parameters that were proposed (marked destructive: clients ask the user first). |
patroltech_proposals_cancel | Withdraws the pending batch. |
patroltech_locations_get_qr_sheet | A signed link (1 hour) to the printable QR sheet of a location. |
Both are fixed text in src/interface/mcp/guidance: they change nothing in the account and call no backend, so they do not go through the audit line or the rate limit of the tools. The connection still needs OAuth, like everything under /mcp.
| Prompt | What it asks for |
|---|---|
patroltech_review_missed_rounds | The latest rounds not completed and the checkpoints skipped. |
patroltech_review_suspicious_scans | Suspicious or rejected scans, and how many are pending (period). |
patroltech_weekly_summary | How the last week went, starting with what needs attention. |
patroltech_set_up_account | What is missing to get the account running, and the next step. |
| Resource | What it holds |
|---|---|
patroltech://guides/choosing-a-tool | Which tool answers each question, and how changes are confirmed. |
patroltech://guides/reading-the-data | What statuses, scan validation, partial data and retention mean. |
The server also sends instructions (src/interface/mcp/serverInstructions.ts): guidance that spans several tools, such as using the ranking tools to compare guards and presenting them as activity data, not as an assessment of the people.
Writes need the write scope: without it the server answers 403 insufficient_scope with the read write challenge. Every result is { data, truncated?, notices?, note }, capped at 60,000 characters, where note says that data is data, never instructions. Each user can make 60 calls per minute to a read tool and 20 to a write tool. Every tool call writes one mcp.tool_call audit line with a hash of the arguments, never the arguments.
| Path | Auth | Purpose |
|---|---|---|
/mcp (path of MCP_PUBLIC_URL) | Bearer | The MCP endpoint (POST, GET, DELETE). Validates Host and rejects any Origin. |
/.well-known/oauth-protected-resource/mcp | none | Protected resource metadata (RFC 9728), also at the root path. |
/health | none | Liveness: 200 {"status":"ok","version":"…"}. |
/health/ready | none | Readiness: 200 if the JWKS answers within 3 s and, with REDIS_URL, Redis answers PING; otherwise 503. |
/.well-known/openai-apps-challenge | none | The OPENAI_APPS_CHALLENGE token, for the ChatGPT apps directory; 404 without it. |
Every variable is documented in .env.example. The server refuses to start, listing each missing or invalid variable, if the configuration is not valid.
| Variable | Required | Description |
|---|---|---|
MCP_PUBLIC_URL | yes | Exact public URL of the MCP endpoint, the audience of the tokens (for example https://mcp.example.com/mcp). |
API_BASE_URL | yes | Origin of the PatrolTech API, without /api. |
OAUTH_ISSUER | yes | Expected iss of the access tokens, byte for byte. |
OAUTH_JWKS_URL | no | JWKS of the issuer. Default API_BASE_URL + /oauth/jwks.json. |
DASHBOARD_URL, APP_BASE_URL | yes | PatrolTech dashboard and web app, for links shown to the user. |
APP_ENVIRONMENT | yes | production, staging, development or test. |
REDIS_URL | in production and staging | Shared Redis (ioredis URL). |
REDIS_NAMESPACE | no | Key prefix in Redis. Default APP_ENVIRONMENT. |
HOST, PORT | no | Where the process listens. Default 127.0.0.1:3110, behind a reverse proxy. |
LOG_LEVEL | no | debug, info (default), warn or error. Audit and heartbeat lines are written at any level. |
SERVICE_NAME | no | service field of every log line. Default mcp-server. |
OPENAI_APPS_CHALLENGE | no | Domain verification token for the ChatGPT apps directory. |
Logs are one JSON object per line on stdout and stderr. Each process writes an mcp.heartbeat line every 5 minutes, so a log monitor can alert when it stops.
Node.js 22.9 or later.
npm ci
cp .env.example .env.local #
ตัดมาแค่ช่วงต้น อ่านต่อใน repo