Competiflow

io.github.nyku由 GitHub 帳號 nyku 發布v0.2.0更新於 Nov 3, 2026

Competitor monitoring for AI agents: track rival pricing, docs and changelog changes with evidence.

概覽

AI 產生的概覽

Competiflow MCP 伺服器讓助理追蹤競爭對手網站,讀取經過解讀的定價、文件與更新日誌變動,進行分流並取得工作區摘要。

可以做什麼
  • 建立、重新命名、暫停或刪除工作區,並設定產品網址以提供競爭脈絡
  • 依首頁網址新增競爭對手,輪詢非同步探索結果,並管理其監控項目、頻率與狀態
  • 為單一監控項目或整個工作區排入即時檢查
  • 列出並讀取偵測到的變動,含嚴重程度、why_it_matters 以及可選的頁面快照或原始差異證據
  • 將變動標記為已確認或已忽略,並取得某段期間的摘要,含活動分布與主要機會
適用情境
適合讓助理盯住競爭對手的定價、文件、部落格與更新日誌頁面,並彙整或分流變動,例如在 Cursor、Claude Desktop 或 Windsurf 中產生每週競爭情報簡報。
執行需求
透過 npx 從 npm 套件 @competiflow/mcp-server 以 stdio 在本機執行,需要 Node.js。需要 Competiflow 帳號,並透過 COMPETIFLOW_API_KEY 環境變數提供 API 金鑰。僅支援桌面版 MCP 用戶端,且需能連線至 Competiflow API。
安裝前請注意
API 金鑰(COMPETIFLOW_API_KEY)是存放在用戶端設定中的正式金鑰。檢查會消耗每月配額,refresh_workspace 或 check_monitor 可能一次用掉多次。delete_workspace、delete_competitor 與 delete_monitor 會永久刪除歷史紀錄,建議改用暫停。工作區與競爭對手資料會傳送到 Competiflow 服務。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Competiflow,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Competiflow MCP Server

MCP (Model Context Protocol) server for Competiflow. Use competitor monitoring as tools in Cursor, Claude Desktop, Windsurf, and any MCP-compatible client.

Track competitors, run discovery, read the interpreted change feed, triage items, and pull workspace digests without leaving your AI client.

Setup

Create an API key in the Competiflow dashboard under API keys, then add the server to your client config. COMPETIFLOW_API_KEY is the only variable you need.

Cursor

Add to ~/.cursor/mcp.json:

json
{  "mcpServers": {    "competiflow": {      "command": "npx",      "args": ["-y", "@competiflow/mcp-server"],      "env": {        "COMPETIFLOW_API_KEY": "sk_live_your_key_here"      }    }  }}

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

json
{  "mcpServers": {    "competiflow": {      "command": "npx",      "args": ["-y", "@competiflow/mcp-server"],      "env": {        "COMPETIFLOW_API_KEY": "sk_live_your_key_here"      }    }  }}

Windsurf

Add to ~/.codeium/windsurf/mcp_config.json:

json
{  "mcpServers": {    "competiflow": {      "command": "npx",      "args": ["-y", "@competiflow/mcp-server"],      "env": {        "COMPETIFLOW_API_KEY": "sk_live_your_key_here"      }    }  }}

Available Tools

ToolAPIDescription
list_workspacesGET /v1/workspacesList workspaces with review counts
create_workspacePOST /v1/workspacesCreate a workspace (optional product_url)
update_workspacePATCH /v1/workspaces/:idRename, set or clear product_url, or pause/resume every monitor
delete_workspaceDELETE /v1/workspaces/:idRemove a workspace and all its history
add_competitorPOST /v1/workspaces/:id/competitorsAdd a competitor by homepage URL. Async discovery, idempotent on duplicate URL
list_competitorsGET /v1/workspaces/:id/competitorsList competitors with monitors and last_run
get_competitorGET /v1/competitors/:idRead one competitor
update_competitorPATCH /v1/competitors/:idSet cadence or status on all its monitors
delete_competitorDELETE /v1/competitors/:idRemove a competitor and all its history
list_monitorsGET /v1/monitorsList monitors with status, cadence, and last_run
get_monitorGET /v1/monitors/:idRead one monitor. Pass include for capture evidence
create_monitorPOST /v1/monitorsAdd a manual monitor on a specific URL
update_monitorPATCH /v1/monitors/:idUpdate URL, cadence, status, or min_severity
delete_monitorDELETE /v1/monitors/:idRemove a monitor and all its history
check_monitorPOST /v1/monitors/:id/checkQueue an on-demand check
refresh_workspacePOST /v1/workspaces/:id/refreshQueue checks for active monitors
list_changesGET /v1/changesChange feed with since, filters, and meta counts
get_changeGET /v1/changes/:idFull change. Pass include for capture or raw diff
update_changePATCH /v1/changes/:idSet review_status
get_digestGET /v1/workspaces/:id/digestWeekly workspace summary

Every tool declares MCP annotations (readOnlyHint, destructiveHint, idempotentHint, openWorldHint), so clients can ask before running the delete_* tools.

Prompts

PromptArgumentsWhat it does
weekly_briefingworkspace_id?, period?Summarizes competitor activity for a period, most important first
triage_changesworkspace_id?, min_severity?Walks the unreviewed inbox and proposes acknowledge or dismiss, then asks before updating
track_competitorurl, workspace_id?Adds a competitor, waits for discovery, and reports what is monitored

Without workspace_id, each prompt starts with list_workspaces.

Resources

URITypeContents
competiflow://guidetext/markdownAgent guide: the typical flow, discovery, evidence, and delete versus pause
competiflow://workspaces/{workspace_id}/digestapplication/json7-day digest of one workspace. Clients that list resources show one per workspace.

Typical flow

  1. list_workspaces or create_workspace (optional product_url improves competitive context on changes).
  2. add_competitor with a homepage URL.
  3. get_competitor until discovery_status is completed.
  4. refresh_workspace or check_monitor to pull fresh data.
  5. list_changes with since=7d and min_severity, or get_digest for a summary.
  6. get_change with include when you need evidence.
  7. update_change to acknowledge or dismiss items.

Discovery and idempotency

add_competitor starts discovery in the background and returns an acknowledgement, not the finished result. Poll get_competitor until discovery_status is completed.

A workspace runs one discovery at a time. Posting the same homepage URL again returns the existing competitor without starting a second run. If a different competitor is still discovering, the call returns 409 discovery_in_progress with active_competitor_id so you know which one to poll.

Evidence with include

get_change and get_monitor accept an include array to attach the underlying capture in one call:

TokenAvailable onReturns
captureget_change, get_monitorExtracted fields from the snapshot
capture_markdownget_change, get_monitorPage markdown from the snapshot
raw_diffget_changeBefore and after diff for the change

For a change the capture is the post-change page. For a monitor it is the latest successful check, which is the current baseline.

Delete versus pause

delete_monitor, delete_competitor, and delete_workspace are permanent. They remove the record along with its check runs, snapshots, and changes. To stop checks while keeping intel history, call update_monitor, update_competitor, or update_workspace with status: paused instead.

delete_workspace returns 409 discovery_in_progress while a competitor in the workspace is still being discovered.

Agent guidelines (for AI clients)

  • Poll discovery, do not assume: after add_competitor, poll get_competitor until discovery_status is completed before reading changes. On 409, poll the active_competitor_id from the error.
  • Filter the feed: pass since (1d, 7d, 30d, or ISO8601), min_severity, monitor_type (homepage, blog, docs, changelog, pricing), and review_status to list_changes instead of pulling everything. Use meta.counts for inbox totals and next_cursor to page.
  • Interpretation fields: changes and digest items expose why_it_matters for competitive context. recommended_action was removed from the API.
  • Fetch evidence on demand: only add include to get_change or get_monitor when you need the underlying capture. It adds payload.
  • Prefer pause over delete: default to status: paused when a user wants to stop a monitor. Reserve delete_* for permanent removal, since it drops history.

How it works

The server translates each tool call into a Competiflow v1 API request and returns structured JSON. Your agent sees interpreted changes, severity, and why it matters instead of raw page scrapes.

AI Agent → MCP Tool Call → Competiflow API → Interpreted Change Feed → Structured Response → AI Agent

Environment variables

VariableRequiredDescription
COMPETIFLOW_API_KEYYesYour Competiflow API key (sk_live_...)

Get an API key

Sign up at competiflow.com and create a key under API keys.

Development

bash
npm installnpm run buildCOMPETIFLOW_API_KEY=sk_live_... node dist/index.js

npm test builds and runs a smoke test that starts the server without a key, the way directory scanners do, and checks the tools, annotations, prompts, and resources.

License

MIT

來源:README.md,提交 bbd520a

工具

20

list_workspaces

List workspaces

List all your workspaces with competitor and monitor counts, needs_review_count, and the highest unreviewed severity. Start here to find a workspace_id. For one workspace's recent activity, use get_digest.

無需輸入參數。

create_workspace

Create workspace

Create a workspace for one product or market. Set product_url to your own product so why_it_matters explains each change relative to it. Returns 422 when your plan's workspace limit is reached. To rename or change an existing workspace, use update_workspace.

輸入參數name必填product_url

update_workspace

Update workspace

Rename a workspace, set or clear its product_url, or pause/resume every monitor in it. Send only the fields to change; nothing is written if any field is invalid. Pausing keeps all history, so prefer it over delete_workspace. To pause one competitor, use update_competitor.

輸入參數namestatusproduct_urlworkspace_id必填

delete_workspace

Delete workspace

Permanently delete a workspace with all its competitors, monitors, snapshots, and changes. Cannot be undone. Returns 409 discovery_in_progress while a competitor is still being discovered. To stop checks and keep history, use update_workspace with status paused.

輸入參數workspace_id必填

add_competitor

Add competitor

Add a competitor to a workspace by homepage URL and start discovering its pricing, docs, blog, and changelog pages. Discovery is async: poll get_competitor until discovery_status is completed. Re-adding the same URL returns the existing competitor. Returns 409 with active_competitor_id while another discovery runs in the workspace. To watch one specific page, use create_monitor.

輸入參數url必填workspace_id必填monitor_types

list_competitors

List competitors

List the competitors in a workspace with discovery_status and their monitors, each with last_run. Use it for an overview of what is tracked. To list monitors alone or filter them by competitor, use list_monitors.

輸入參數workspace_id必填

get_competitor

Get competitor

Get one competitor with its monitors and discovery fields. Use it to poll discovery after add_competitor until discovery_status is completed or failed.

輸入參數competitor_id必填

update_competitor

Update competitor

Set the check cadence or pause/resume every monitor of one competitor. History is kept. To change a single monitor, use update_monitor; for a whole workspace, use update_workspace.

輸入參數statuscadencecompetitor_id必填

delete_competitor

Delete competitor

Permanently delete a competitor with its monitors, snapshots, and changes. Cannot be undone. To stop checks and keep history, use update_competitor with status paused.

輸入參數competitor_id必填

list_monitors

List monitors

List the monitors in a workspace, optionally for one competitor, with URL, type, cadence, status, health, and last_run. Use it to find a monitor_id or spot failing monitors. For competitors with their monitors nested, use list_competitors.

輸入參數workspace_id必填competitor_id

get_monitor

Get monitor

Get one monitor's settings, health, and last run. Set include to also return the latest successful capture as structured data or markdown.

輸入參數includemonitor_id必填

create_monitor

Create monitor

Watch one specific page of an existing competitor, such as a pricing or docs URL that discovery missed. To add a new competitor and discover its pages automatically, use add_competitor.

輸入參數url必填cadencemonitor_type必填competitor_id必填

update_monitor

Update monitor

Change one monitor's URL, type, cadence, status, or min_severity. Use status paused to stop checks and keep history. To change every monitor of a competitor at once, use update_competitor.

輸入參數urlstatuscadencemonitor_id必填min_severitymonitor_type

delete_monitor

Delete monitor

Permanently delete one monitor with its snapshots and changes. Cannot be undone. To stop checks and keep history, use update_monitor with status paused.

輸入參數monitor_id必填

check_monitor

Check monitor now

Queue an immediate check of one monitor. Uses one of your monthly checks and returns 429 refresh_throttled if the monitor was checked too recently. Results arrive asynchronously: read them later with list_changes or get_monitor. To check every monitor in a workspace, use refresh_workspace.

輸入參數monitor_id必填

refresh_workspace

Refresh workspace

Queue immediate checks for every active monitor in a workspace, or for one competitor when competitor_id is set. Each monitor checked uses one monthly check; recently checked monitors are skipped and listed in skipped_ids. Returns 409 while discovery is running. For a single monitor, use check_monitor.

輸入參數workspace_id必填competitor_id

list_changes

List changes

List detected competitor changes in a workspace, newest first, with summary, severity, why_it_matters, monitor_type, and review_status. meta.counts gives inbox totals; page with after set to next_cursor. For a summarized period, use get_digest; for evidence on one change, use get_change.

輸入參數afterlimitsincemin_severitymonitor_typeworkspace_id必填competitor_idreview_status

get_change

Get change

Get one change with why_it_matters, field-level diffs, and related clusters. Set include to add the captured page or the raw diff as evidence.

輸入參數includechange_id必填

update_change

Triage change

Triage a change by setting its review_status: acknowledged when it is relevant, dismissed when it is noise, or unreviewed to put it back in the inbox.

輸入參數change_id必填review_status必填

get_digest

Get workspace digest

Get a workspace summary for a period: changes needing review with why_it_matters, an activity map by competitor, and top opportunities. Use it for briefings; to page through individual changes, use list_changes.

輸入參數periodworkspace_id必填

版本歷史

2
  1. v0.2.0最新Oct 29, 2026
  2. v0.1.2Oct 23, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分