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 分

    请在仓库或注册中心条目中声明许可证。