
PatrolTech
online.patroltech由 patroltech.online 發布官方發布者v0.2.8更新於 Nov 3, 2026
安保巡邏管理:漏巡、可疑掃描、事件和檢查點設定。
AI 翻譯由 AI 模型根據下方的原文描述翻譯,可能有誤。
原文描述
Security patrol management: missed rounds, suspicious scans, incidents and checkpoint setup.
概覽
PatrolTech 的託管 MCP 服務(mcp.patroltech.online),由 patroltech.online 發布;需要 OAuth 登入;Streamable HTTP。
暫無 AI 概覽:以下資訊來自註冊中心條目和服務本身。
- 發布者
- patroltech.online
- 端點
- mcp.patroltech.online
- 最近檢查
安裝
在 SourceWeft 中
- 開啟 儀表板中的 PatrolTech,將其新增到工作區。
- 連接 所需的 憑證。它們會被私密儲存,絕不會在公開頁面上展示。
- 為需要使用其工具的對話啟用該服務。
Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。
交給代理程式安裝
把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。
閱讀 https://sourceweft.com/mcp/online.patroltech%2Fpatroltech/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。其他 MCP 客戶端
把它新增到你客戶端的 mcpServers 設定中。 客戶端會在首次連接時完成 OAuth 登入。
{
"mcpServers": {
"patroltech": {
"type": "http",
"url": "https://mcp.patroltech.online/mcp"
}
}
}README
PatrolTech MCP server
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.
Connect without hosting a server
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 [email protected].
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.
How it works
- OAuth resource server.
/mcprequires 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. - Stateless. Each request gets a fresh MCP server instance and serves both protocol eras (2025 and 2026-07-28). Nothing about a conversation is kept in memory: proposals live in the PatrolTech API, so any number of workers can serve the same user.
- Redis holds what must be shared between workers: the per-user lock around proposals (
SET NX PX, renewed while it lasts) and the per-user, per-tool rate limits. It is required inproductionandstaging. If Redis fails, propose, confirm and cancel answer "busy" rather than risk two proposals overwriting each other. WithoutREDIS_URL(development and test only) both live in process memory. - Tools come from the
mcpchannel of@patroltech/agent-capabilities, which calls the API through@patroltech/sdk-api.
Tools
Prompts and resources
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.
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.
Endpoints
Configuration
Every variable is documented in .env.example. The server refuses to start, listing each missing or invalid variable, if the configuration is not valid.
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.
Development
Node.js 22.9 or later.
Code layout follows the hexagonal style: src/domain (pure rules), src/application (use cases and their ports), src/interface/mcp (the MCP adapter) and src/infrastructure (HTTP, OAuth, SDK adapters, Redis, logging).
Self-hosting
You can run this server on your own infrastructure, for example to audit it or to put it in front of your own network policies.
OAuth audience. Access tokens are bound to the resource they were issued for. The PatrolTech authorization server only issues tokens for resources it knows, so a deployment under your own MCP_PUBLIC_URL needs to be registered with PatrolTech before PatrolTech users can connect to it. Ask through the channels in SECURITY.md.
What you need:
- Node.js 22.9 or later and Redis.
- A reverse proxy with TLS in front of
HOST:PORTthat forwards/mcp,/.well-known/oauth-protected-resource(and its subpaths) and, if you use them,/health,/health/readyand/.well-known/openai-apps-challenge. Keep theHostheader: the server only accepts the host ofMCP_PUBLIC_URLor loopback.
Steps:
- Build the artifact:
npm ci && npm run bundle && npm run smoke. - Copy
dist/bundle/server.mjs,dist/bundle/server.mjs.mapandpackage.json(the version comes from it) to a directory on the server. Nonpm installis needed there. - Create
.env.localin that directory from.env.example, withAPP_ENVIRONMENT=productionandREDIS_URL. - Start it:
node --enable-source-maps --env-file-if-exists=.env.local server.mjs, or with PM2 (below). The process stops gracefully onSIGTERM, waiting up to 55 s for calls in progress, so give it about 60 s before a forced kill.
With PM2
deploy/ecosystem.config.cjs runs the bundle in cluster mode. It holds no server data: it reads MCP_PM2_NAME, MCP_PORT and MCP_APP_ENVIRONMENT (required) and MCP_INSTANCES, MCP_SERVICE_NAME and PM2_APP_DIR (optional) from the environment, and loads the rest from .env.local.
In cluster mode the workers run with the Node.js of the PM2 daemon, which must be 22.9 or later for --env-file-if-exists. Never run pm2 update on a shared daemon: it restarts every app it manages.
With GitHub Actions
.github/workflows/deploy.yml deploys a fork of this repository by SSH: automatically to production after each Release that creates a new version on main (a merged version bump), and by hand (workflow_dispatch, staging by default). It builds, tests and smoke-tests the bundle without secrets, uploads the bundle, package.json and the ecosystem with rsync, and runs deploy/remote-deploy.sh on the server: checks .env.local, reloads PM2 without downtime, probes the readiness URL and waits until every instance is online with the new version. production only deploys from main or a v* tag.
The workflow and the scripts contain no server data, and the logs print nothing from the server. Create the GitHub environments staging and production (with a required reviewer and a deployment branch rule for main and v* tags on production) and set, in each one:
Server data goes in secrets, not variables: Actions masks secrets in the logs, and the workflow also masks the values derived from them.
Versioning and releases
The version lives only in package.json. When a change to it reaches main, the release workflow creates the v<version> tag and a GitHub release with the bundle and its checksums.
Related packages
@patroltech/agent-capabilities: the catalog of reads and proposed actions this server exposes.@patroltech/sdk-api: the TypeScript SDK of the PatrolTech public API (API reference).- PatrolTech/ai-integrations: the connector for each AI assistant.
License
MIT © Ingenieros Web SL
來源:README.md,提交 d89a5a9
工具
0版本歷史
5- v0.2.8最新Nov 3, 2026
- v0.2.7Nov 1, 2026
- v0.2.6Oct 31, 2026
- v0.2.4Oct 30, 2026
- v0.2.2Oct 30, 2026
評分
已滿足適用檢查項的 85%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通必需25 分
- 已宣告認證方式必需10 分
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分