Furlow Mcp

io.github.virgilvox由 GitHub 帳號 virgilvox 發布v1.0.1更新於 Oct 24, 2026

Author FURLOW Discord bot YAML: validate specs, list actions/events/builtins, scaffold bots.

已驗證STDIO僅桌面開發者工具溝通與協作

概覽

AI 產生的概覽

讓助理撰寫並驗證用於宣告式 Discord 機器人的 FURLOW YAML 設定,並列出可用的動作、事件與內建模組。

可以做什麼
此伺服器圍繞 FURLOW(一套以 YAML 設定的宣告式 Discord 機器人框架)提供工具。它讓助理驗證機器人設定、列出可用的動作、事件與內建模組,並產生新的機器人專案骨架。框架本身包含 85 個動作、71 個表達式函式、50 個轉換與 59 個事件,並提供 init、start、dev、validate、add、build、export 等命令列指令。
適用情境
適合在建立或維護以 FURLOW 為基礎的 Discord 機器人時使用,讓助理檢查 YAML 設定、查詢有哪些動作或事件,或產生起始專案。若不使用 FURLOW 或 Discord 機器人,則幫助不大。
執行需求
以本機程序方式透過 stdio 執行,從 npm 套件 @furlow/mcp 安裝,因此需要 Node.js 與 npm。僅支援桌面端,沒有遠端端點。清單宣告不需要驗證、環境變數或標頭。單獨執行實際機器人還需要 Discord 憑證,例如 DISCORD_TOKEN 與 DISCORD_CLIENT_ID,以及選用的儲存與儀表板設定。
安裝前請注意
此伺服器本身不宣告任何憑證,但它協助撰寫的 FURLOW 機器人需要 DISCORD_TOKEN、DISCORD_CLIENT_ID、DISCORD_CLIENT_SECRET、DASHBOARD_SECRET、DATABASE_URL 等密鑰,應避免寫入共用檔案。產生的機器人可傳送訊息、管理成員並在資料庫中保存狀態;正式部署應在程序監督下執行並備份儲存的狀態。

安裝

在 SourceWeft 中

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

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

其他 MCP 客戶端

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

README

FURLOW

Declarative Discord Bot Framework

[Maintained by @virgilvox] [License: MIT]

Build powerful Discord bots with YAML. No code required.

yaml
commands:  - name: ping    description: Check bot latency    actions:      - reply:          content: "Pong! ${client.ws.ping}ms"

Features

  • 85 Actions: messages, moderation, voice, channels, and more
  • 71 Expression Functions: date, math, string, array manipulation
  • 50 Transforms: pipe-based data transformations
  • 59 Events across Discord gateway, voice transitions, component interactions, and high-level FURLOW events (automod, scheduler, pipes)
  • Scoped State: global, guild, channel, user, and member scopes
  • Flows: reusable action sequences with parameters
  • External Integrations: HTTP, WebSocket, MQTT, TCP/UDP, webhooks

Quick Start

bash
# Install the CLInpm install -g @furlow/cli
# Create a botfurlow init my-botcd my-bot
# Add your Discord credentials to .envecho "DISCORD_TOKEN=your_token_here" > .envecho "DISCORD_CLIENT_ID=your_client_id_here" >> .env
# Startfurlow start

Example

yaml
version: "0.1"
identity:  name: "My Bot"
presence:  status: online  activity:    type: playing    text: "with FURLOW"
commands:  - name: hello    description: Greet someone    options:      - name: user        type: user        description: Who to greet    actions:      - reply:          content: "Hello, ${options.user.display_name || options.user.username}!"
  - name: roll    description: Roll a dice    options:      - name: sides        type: integer        description: Number of sides        min_value: 2        max_value: 100    actions:      - reply:          content: "🎲 You rolled **${random(1, options.sides || 6)}**"
events:  - event: member_join    actions:      - send_message:          channel: "${env.WELCOME_CHANNEL}"          content: "Welcome ${member.displayName}!"

CLI Commands

CommandDescription
furlow init [name]Create a new bot project
furlow start [path]Run the bot
furlow dev [path]Development mode with hot reload
furlow validate <path>Validate YAML specification
furlow add <builtin>Add builtin module
furlow build [path]Bundle for deployment
furlow export <path>Export Discord command JSON

Documentation

GuideDescription
InstallationSetup and requirements
Quick StartYour first bot
ConfigurationYAML specification
Actions ReferenceAll 85 actions
Expressions ReferenceFunctions and transforms
Events ReferenceEvent types
CLI ReferenceCommand-line interface
Pipes ReferenceExternal integrations
ExamplesComplete bot examples

Packages

PackageDescription
furlowCLI tool
@furlow/coreRuntime engine
@furlow/discordDiscord.js adapter
@furlow/schemaTypeScript types
@furlow/storageDatabase adapters
@furlow/builtinsPre-built modules
@furlow/pipesHTTP, WebSocket, MQTT, TCP/UDP, webhooks, database, file
@furlow/testingTest utilities

Production deployment

A short checklist for shipping a bot to production. Each item lines up with a runtime guarantee — skipping one usually shows up later as silent data loss, an unscheduled feature, or a publicly forgeable session.

Required environment

bash
# DiscordDISCORD_TOKEN=...DISCORD_CLIENT_ID=...
# Storage (pick one)DATABASE_URL=postgres://user:pass@host:5432/furlow   # production# or for single-server bots:SQLITE_PATH=/var/lib/furlow/bot.db
# Dashboard (only if running the web UI)DASHBOARD_SECRET=$(openssl rand -hex 32)             # required in NODE_ENV=productionDISCORD_CLIENT_SECRET=...DISCORD_CALLBACK_URL=https://dashboard.example.com/auth/discord/callback

The dashboard refuses to start in NODE_ENV=production without DASHBOARD_SECRET — there is no fallback default. WebSocket connections also require an authenticated session; unauthenticated clients are rejected at upgrade time and cannot subscribe to guild streams.

Storage

  • Use Postgres for any deployment that runs more than one process or needs point-in-time recovery. The SQLite adapter is fine for single-server bots and tests, but write contention degrades quickly past a few thousand active users.
  • Run database migrations on deploy. The SQLite adapter creates tables on demand; Postgres deployments should pre-create the tables defined in your state.tables: block.
  • Back up the database. Builtins persist real state (warnings, levels, AFK status, ticket transcripts); none of this is reconstructible.

Scheduling and voice

  • The CLI starts a CronScheduler that emits scheduler_tick every 60s. Builtins that rely on it (giveaways, polls, reminders) need the scheduler running — there is no separate cron process.
  • Voice playback requires the @discordjs/voice peer plus ffmpeg on the PATH. The voice_track_start / voice_track_end events used by the music builtin only fire when the voice manager is initialized.

Process supervision

  • Run furlow start under a process supervisor (systemd, pm2, Kubernetes Deployment) that restarts on exit. The bot does not self-daemonize.
  • Forward SIGTERM so the gateway connection closes cleanly. The CLI flushes pending state on shutdown; killing with SIGKILL can lose the last batched writes.

Dashboard hardening

  • Terminate TLS in front of the dashboard (nginx, Caddy, a load balancer). The session cookie sets secure: true in production and will not be delivered over plain HTTP.
  • Restrict the OAuth callback URL in the Discord developer portal to the exact DISCORD_CALLBACK_URL you ship.
  • POST endpoints whitelist their accepted fields and reject unknown or wrong-typed keys with 400. If you extend a settings shape, update the whitelist in apps/dashboard/server/routes/api.ts.

Observability

  • /health returns process uptime; wire it to your liveness probe.
  • /metrics exposes Prometheus-format counters. Add a scrape job pointed at the dashboard process.
  • The CLI honors --verbose for structured per-event logging during incident triage.

License

MIT

來源:README.md,提交 1885623

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v1.0.1最新Sep 16, 2026

評分

已滿足適用檢查項的 40%

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

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

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

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

    請在儲存庫或註冊中心條目中宣告授權條款。