World Monitor
Real-time global intelligence on conflict, markets, energy, trade, shipping and cyber. 102 tools.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Inspect, operate, and author Microsoft Power Automate cloud flows from an agent context.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
AZURE_CLIENT_ID, AZURE_TENANT_ID, FLOW_SCOPES, AZURE_AUTH_MODE, AZURE_CLIENT_SECRET, ENABLE_WRITE_OPS, DEFAULT_ENVIRONMENTค่าที่ติดป้ายความลับคือกุญแจของบัญชีคุณ อย่าส่งให้ใคร และอย่าวางในแชต
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"power-automate": {
"command": "npx",
"args": [
"-y",
"power-automate-mcp-server"
],
"env": {
"AZURE_CLIENT_ID": "ใส่ค่าของคุณ",
"AZURE_TENANT_ID": "ใส่ค่าของคุณ",
"FLOW_SCOPES": "ใส่ค่าของคุณ",
"AZURE_AUTH_MODE": "ใส่ค่าของคุณ",
"AZURE_CLIENT_SECRET": "ใส่ค่าของคุณ",
"ENABLE_WRITE_OPS": "ใส่ค่าของคุณ",
"DEFAULT_ENVIRONMENT": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add power-automate --env AZURE_CLIENT_ID='ใส่ค่าของคุณ' --env AZURE_TENANT_ID='ใส่ค่าของคุณ' --env FLOW_SCOPES='ใส่ค่าของคุณ' --env AZURE_AUTH_MODE='ใส่ค่าของคุณ' --env AZURE_CLIENT_SECRET='ใส่ค่าของคุณ' --env ENABLE_WRITE_OPS='ใส่ค่าของคุณ' --env DEFAULT_ENVIRONMENT='ใส่ค่าของคุณ' -- npx -y power-automate-mcp-serverเติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"power-automate": {
"command": "npx",
"args": [
"-y",
"power-automate-mcp-server"
],
"env": {
"AZURE_CLIENT_ID": "ใส่ค่าของคุณ",
"AZURE_TENANT_ID": "ใส่ค่าของคุณ",
"FLOW_SCOPES": "ใส่ค่าของคุณ",
"AZURE_AUTH_MODE": "ใส่ค่าของคุณ",
"AZURE_CLIENT_SECRET": "ใส่ค่าของคุณ",
"ENABLE_WRITE_OPS": "ใส่ค่าของคุณ",
"DEFAULT_ENVIRONMENT": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"power-automate": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"power-automate-mcp-server"
],
"env": {
"AZURE_CLIENT_ID": "ใส่ค่าของคุณ",
"AZURE_TENANT_ID": "ใส่ค่าของคุณ",
"FLOW_SCOPES": "ใส่ค่าของคุณ",
"AZURE_AUTH_MODE": "ใส่ค่าของคุณ",
"AZURE_CLIENT_SECRET": "ใส่ค่าของคุณ",
"ENABLE_WRITE_OPS": "ใส่ค่าของคุณ",
"DEFAULT_ENVIRONMENT": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
FLOW_SCOPES envAZURE_AUTH_MODE envENABLE_WRITE_OPS envDEFAULT_ENVIRONMENT envค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 10 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub sapientsai ซึ่งเป็นเจ้าของ repo
มีการแก้โค้ดล่าสุด 2 เดือนที่ผ่านมา
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 2 จาก 2 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
ต้องใส่ค่าเหล่านี้: AZURE_CLIENT_ID, AZURE_TENANT_ID, AZURE_CLIENT_SECRET
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด 2 เดือนที่ผ่านมา และส่งรุ่นล่าสุด (0.2.4) เข้า registry 5 เดือนที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js ในเครื่องด้วย
ในหมวดเดียวกันมี World Monitor, Claude Flow, Tldraw
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:↓ ดาวน์โหลดต่อสัปดาห์i★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
Real-time global intelligence on conflict, markets, energy, trade, shipping and cyber. 102 tools.
AI orchestration with hive-mind swarms, neural networks, and 87 MCP tools for enterprise dev.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
An MCP server that lets agents inspect, operate, and author Microsoft Power Automate cloud flows from a CLI/agent context — list and inspect flows, debug runs, check connections and owners, and (when explicitly enabled) enable/disable flows, cancel/resubmit runs, manage owners, and create/update/delete flows.
Primarily a management surface — the Power Automate portal's visual designer remains the better place to author complex flow logic — but create_flow/update_flow/delete_flow are also available (write-gated) for programmatic authoring. Built on SomaMCP (telemetry, health/info/ dashboard, error classification) over FastMCP.
⚠️ Unofficial API. v1 targets
api.flow.microsoft.com— the surface the Power Automate
portal itself uses. Microsoft labels it _"isn't supported. Customers should instead use the
Dataverse Web APIs."_ It is stable in practice and, unlike Dataverse, sees all flows
(including personal "My Flows") and works on M365‑seeded entitlements (no Premium license).
Every tool's description carries this disclaimer. A supported Dataverse backend is stubbed
for the future (see
src/backend/dataverse/README.md).
pnpm install
cp .env.example .env # set AZURE_CLIENT_ID (see "App registration" below) pnpm build pnpm dev:stdio # local agent over stdio (device-code sign-in to stderr)
On first use the server prints a device-code prompt to stderr; open https://microsoft.com/devicelogin, enter the code, and sign in. The token is cached (TOKEN_CACHE_PATH, mode 0600) and silently refreshed thereafter.
{
"mcpServers": { "power-automate": { "command": "npx", "args": ["-y", "power-automate-mcp-server", "--stdio"], "env": { "AZURE_CLIENT_ID": " " }, }, }, }
Developing on this repo? It ships a project-scoped .mcp.json (stdio, local dist/bin.js). After pnpm build, export AZURE_CLIENT_ID and open the repo in Claude Code — the power-automate server loads automatically (complete the device-code sign-in once; the cached token is then reused).
This server ships no default client id — you register your own (one‑time):
power-automate-mcp). Supported account types: multitenant (or single‑tenant if you'll only ever use one org).http://localhost (unused by device code, but required to register the platform). Set "Allow public client flows" = Yes.AZURE_CLIENT_ID.For unattended clientCredentials mode instead: add a client secret, grant application permissions with admin consent, and set AZURE_AUTH_MODE=clientCredentials, AZURE_TENANT_ID= , AZURE_CLIENT_SECRET=.... Note app‑only has limited Flow reach (it generally cannot see personal "My Flows").
Confirmed against a real tenant. Interactive Flow auth needs all four of these — each one, if missing, fails with a different cryptic AADSTS… (details in docs/api-notes.md):
AZURE_TENANT_ID= , not `common`. common + a resource scope → AADSTS50059 (and MSAL hides it as an empty device-code response).7df0a125-d3be-4c96-aa54-591f83ff541c). Missing → AADSTS650057..default validates the whole app and can fail with AADSTS650051. A _dedicated_ app may use .default. Pin via FLOW_SCOPES.isFallbackPublicClient=true). Off → token redemption fails with invalid_client.Verified FLOW_SCOPES: https://service.flow.microsoft.com/Flows.Read.All,https://service.flow.microsoft.com/Flows.Manage.All
azAPP=<your-app-client-id>; FLOW=7df0a125-d3be-4c96-aa54-591f83ff541c
az ad app permission add --id "$APP" --api "$FLOW" --api-permissions \ e45c5562-459d-4d1b-8148-83eb1b6dcf83=Scope 30b2d850-00c3-4802-b7ae-ece9af9de5c6=Scope az ad app permission admin-consent --id "$APP"
az ad app update --id "$APP" --set isFallbackPublicClient=true
Recommended: a dedicated public-client app with only the Flow delegated permissions
avoids the
.default/shared-app pitfalls (#3) entirely — cleaner than reusing a Graph app.
All tools are read‑only by default. Write tools are registered but refuse unless ENABLE_WRITE_OPS=true.
| Tool | Parameters | Returns |
|---|---|---|
list_environments | — | { id, name, displayName, location, isDefault }[] |
list_flows | environment?, owner? | { name, displayName, state, createdTime, lastModifiedTime, owner }[] |
get_flow | environment?, flow | full flow incl. definition, connectionReferences, trigger/action names |
list_flow_runs | environment?, flow, top? (≤100), status? | { name, status, startTime, endTime, durationMs, triggerName, error }[] |
get_flow_run | environment?, flow, run | run detail + first‑failure + raw properties (debugging) |
list_connections | environment? | { name, apiName, displayName, status, accountName, expiresAt }[] |
list_flow_owners | environment?, flow | { principalId, principalType, roleName, principalDisplayName }[] |
ENABLE_WRITE_OPS=true)| Tool | Parameters | |
|---|---|---|
create_flow | environment?, displayName, definition, connectionReferences?, state? | |
update_flow | environment?, flow, any of displayName / definition / state / connectionReferences | |
delete_flow | environment?, flow, confirm (must be true) | |
enable_flow / disable_flow | environment?, flow | |
cancel_flow_run | environment?, flow, run | |
resubmit_flow_run | environment?, flow, run, trigger | |
add_flow_owner | environment?, flow, principalId, roleName (CanEdit\ | CanView) |
remove_flow_owner | environment?, flow, principalId |
Authoring (`create_flow`/`update_flow`):
definitionis the raw Logic Apps-style
workflow JSON (see
get_flowoutput as a template). The visual designer is better for
complex logic; for edits,
get_flow→ modify thedefinition→ pass it back toupdate_flow.
When environment is omitted, tools use DEFAULT_ENVIRONMENT if set, else the discovered default environment (isDefault: true).
info MCP tool — server name, version, git SHA, capability counts.report_feedback — file API‑drift/bug reports as GitHub issues (FEEDBACK_GITHUB_REPO, GITHUB_TOKEN)./health, /health/detail, /info, /dashboard (the detailed ones are protected by MCP_API_KEY when set).See .env.example for the full list. Highlights: AZURE_CLIENT_ID (required), AZURE_TENANT_ID (common), AZURE_AUTH_MODE, TRANSPORT (stdio\|http), PORT, ENABLE_WRITE_OPS, DEFAULT_ENVIRONMENT, MCP_API_KEY, TELEMETRY, TOKEN_CACHE_PATH.
| Scenario | Transport | Auth | Notes |
|---|---|---|---|
| Local agent | stdio | device-code | Primary. Full reach. pnpm dev:stdio. |
| Docker, single operator | http | device-code + mounted token volume | Auth once via docker logs; persists. Full reach. docker compose up. |
| Docker, unattended | http | clientCredentials | No human, but no personal flows; verify it can mint a Flow token at all. |
[!WARNING]
The HTTP transport is single-operator. Every caller shares one Power Automate
identity: the server holds a single process-wide token (one device-code sign-in, or one
app identity), and
MCP_API_KEYis a shared static bearer that gates _access_, not
_identity_. Do not expose the HTTP endpoint to multiple users expecting per-user
separation — they would all see and mutate the same person's flows. For per-user
isolation, run stdio (one process per user, how Claude Desktop already runs it) or
wait for the v2 per-user OAuth path
(#9).
v2: per‑user browser OAuth over HTTP via FastMCP's
AzureProvider+ disk token cache
(the upstream token surfaces on the session). Reachable through SomaMCP's
backendOptions
passthrough without a fork — not wired in v1.
# Docker (single-operator device-code with a persisted token volume)
AZURE_CLIENT_ID=... docker compose up --build docker compose logs -f # grab the device code on first run curl -s http://localhost:3333/health
pnpm validate # format + lint + typecheck + test + build
pnpm test # vitest (unit) pnpm dev # http transport, watch pnpm dev:stdio # stdio transport, watch pnpm build # tsdown -> dist/
Integration tests that hit a r