Queueboard

io.github.CloudCorpRecordsPublished by GitHub account CloudCorpRecordsv0.1.0Updated Nov 7, 2026

Feedback boards for product teams: posts, votes, comments, agent work queue, changelog.

Overview

AI-generated overview

Local bridge to FeatureJet's hosted feedback-board service, letting an assistant manage boards, posts, comments and an agent work queue.

What you can do
  • List, create, publish and unpublish feedback boards
  • List, read, create, update and hide posts; list votes and comments, and comment as the board team
  • Work the build queue: read ranked unclaimed posts, claim and release posts, attach implementation evidence, propose status changes for a human to confirm
  • Read shipped posts in the changelog and read-only board analytics
  • Check the API key and reachability with whoami and ping
When to use it
Useful when a product team runs its feedback boards on FeatureJet and wants an assistant to triage posts, draft replies, or pick the next item from the ranked queue and record its work. Also handy for scripted CLI calls against the same API.
Requirements
Runs locally via npx or Docker over stdio; needs network access to the upstream FeatureJet MCP endpoint. An API key is passed in the optional FEATUREJET_API_KEY environment variable and sent as a Bearer header; FEATUREJET_MCP_URL can override the endpoint. Without a key, no auth header is sent.
Before you install
Most tools write to the caller's workspace: boards, posts and comments are created, edited or hidden, and claims are taken. Publishing a board puts it on the public internet, though it is off by default and otherwise done from the dashboard. Evidence attached to a post is shown publicly. The API key is forwarded to the upstream service, and the README notes the key handling and error rendering are reconstructions rather than captured behaviour.

Installation

In SourceWeft

  1. Open Queueboard in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

queueboard

queueboard is a small local bridge to FeatureJet's hosted MCP server, which runs feedback boards for product teams: people post ideas and requests to a board, vote and comment on them, and the team works the ranked queue, publishes a changelog and watches board analytics.

The bridge holds no feedback data of its own. It serves the upstream server's tool list locally, exactly as captured from the live endpoint, and forwards each tool call upstream, returning the result untouched. Most of the surface writes to the caller's own workspace - boards, posts and comments are created and edited, an agent can claim a post from the work queue, attach evidence and propose a status change for the owner to confirm.

Tools

Boards:

  • list_boards - every board the caller's key can reach. No arguments.
  • get_board - one board by slug. Required: slug.
  • create_board - a new board, created as a draft. Required: name, slug. Optional: description.
  • publish_board - make a board live at its public URL. Required: slug. Off by default upstream; where it is not enabled the owner publishes from the dashboard.
  • unpublish_board - return a board to draft so its public URL stops serving it. Required: slug.

Posts, votes and comments:

  • list_posts - posts on a board, optionally filtered by status, search text q or tag, with limit and offset paging. Required: slug.
  • get_post - one post in full. Required: slug, post_id.
  • create_post - a new post on a board. Required: slug, title. Optional: body, status, tags.
  • update_post - change mutable post fields such as title, body, status, tags, pinned and queue_rank (a null rank un-ranks the post). Required: slug, post_id.
  • delete_post - hide a post through the developer API. Required: slug, post_id.
  • list_votes - vote metadata for a post. Required: slug, post_id.
  • list_comments - comments on a post. Required: slug, post_id.
  • create_comment - comment as the board team, optionally replying via parent_comment_id. Required: slug, post_id, body.

Agent work queue:

  • get_queue - the top unclaimed posts in the owner's curated build order: ranked posts first, then unranked planned posts by votes. Required: slug. Optional: limit.
  • claim_post - atomically claim a post before working on it, so two agents never build the same thing. Required: slug, post_id. Optional: ttl_seconds (default 3600, max 86400) and agent_label.
  • release_post - give a claim back so other agents can pick the post up. Required: slug, post_id.
  • add_evidence - attach implementation evidence that voters see on the post page. Required: slug, post_id, kind (branch, commit, pr, transcript or url) and ref. Optional: label, action_key.
  • propose_status - propose a status change (open, planned, in_progress, shipped or declined) for the board owner to confirm; nothing changes publicly until a human confirms. Required: slug, post_id, status. Optional: note, action_key.

Reads:

  • get_changelog - shipped posts for a board. Required: slug.
  • get_analytics - read-only analytics for a board, optionally for a period. Required: slug.
  • whoami - confirm the caller's key by listing its accessible boards. No arguments.
  • ping - check MCP and FeatureJet API reachability for the caller's key. No arguments.

Configuration

  • FEATUREJET_MCP_URL (optional) - override the upstream endpoint. Defaults to https://mcp.featurejet.com/mcp. (The override hook is this rebuild's own labelled reconstruction.)
  • FEATUREJET_API_KEY (optional) - when set, every upstream request carries an Authorization: Bearer <key> header. When it is not set, no auth header is sent. (This forwarding is also a labelled reconstruction; the original surface was captured keyless, and the registry record declares the Authorization header as the key carrier.)

Forwarding mechanics

On the first tool call the client opens a streamable HTTP session with the upstream: a JSON-RPC initialize request (protocolVersion 2025-03-26, clientInfo name queueboard), then a notifications/initialized notification, then the tools/call request carrying the caller's arguments unchanged. When the upstream answers initialize with an Mcp-Session-Id header, that value rides on every later request of the session, which is reused for the life of the process. Replies may arrive as plain JSON or as server-sent events; both are read.

Successful upstream results pass through verbatim, including any isError flag the upstream sets. Failures - a JSON-RPC error, a non-2xx status, an unreadable response, or a request that cannot be completed - come back as an isError result whose text starts with queueboard error: (this rendering is this rebuild's own labelled reconstruction).

CLI

Each tool is also a subcommand taking one JSON argument string (omit it for tools that take none):

bash
npx @reneturcios/queueboard list_boardsnpx @reneturcios/queueboard get_board '{"slug":"ideas"}'npx @reneturcios/queueboard create_post '{"slug":"ideas","title":"Dark mode"}'npx @reneturcios/queueboard get_queue '{"slug":"ideas"}'npx @reneturcios/queueboard claim_post '{"slug":"ideas","post_id":42}'npx @reneturcios/queueboard --version

Exit codes: 0 on success, 1 on an isError result, 2 on a usage error.

MCP server

bash
npx -y @reneturcios/queueboard mcp

MCP client config:

json
{  "mcpServers": {    "queueboard": {      "command": "npx",      "args": ["-y", "@reneturcios/queueboard", "mcp"]    }  }}

Docker

bash
docker run -i ghcr.io/cloudcorprecords/queueboarddocker run --rm ghcr.io/cloudcorprecords/queueboard --version

The container's default command is mcp, so the first form is a stdio MCP server; any other arguments reach the CLI normally.

Development

bash
npm installnpm run buildnpm testnpm run dev

The test suite runs entirely against a stubbed JSON-RPC upstream - no live network calls.

License

MIT - see LICENSE.

Source: README.md at commit 43c141e

Tools

22

list_boards

List boards available to the caller's FeatureJet API key.

Takes no parameters.

get_board

Get one board by slug.

Parametersslugrequired

create_board

Create a new feedback board, as a DRAFT. `slug` is the board's URL path segment (lowercase, hyphenated, unique); `name` is the display name. The new board's public URL 404s until a human publishes it from the dashboard -- `publish_board` is off by default (403 `publish_disabled`).

Parametersnamerequiredslugrequireddescription

publish_board

Publish a board so it is live at its public URL. OFF BY DEFAULT. Putting a board on the public internet is a human decision: unless the FeatureJet deployment has opted in, this returns 403 `publish_disabled` and the owner publishes from the dashboard. Where it is enabled it needs a `write` (or `admin`) scoped key and an active subscription -- an org without one gets 403 `subscription_required`.

Parametersslugrequired

unpublish_board

Return a board to draft so its public URL stops serving it. Nothing is deleted; publish it again to bring it back.

Parametersslugrequired

list_posts

List posts for a board, optionally filtered by status, search, or tag.

Parametersqtagslugrequiredlimitoffsetstatus

get_post

Get one post by board slug and post id.

Parametersslugrequiredpost_idrequired

create_post

Create a post on a board.

Parametersbodyslugrequiredtagstitlerequiredstatus

update_post

Update mutable post fields; null queue_rank explicitly un-ranks.

Parametersbodyslugrequiredtagstitlepinnedstatuspost_idrequiredqueue_rank

delete_post

Delete a post by hiding it through the developer API.

Parametersslugrequiredpost_idrequired

list_votes

List vote metadata for a post.

Parametersslugrequiredpost_idrequired

list_comments

List comments for a post.

Parametersslugrequiredpost_idrequired

create_comment

Comment on a post as the board team, optionally replying to a comment.

Parametersbodyrequiredslugrequiredpost_idrequiredparent_comment_id

get_queue

Top UNCLAIMED posts in the owner's curated build order. Owner-ranked posts (queue_rank, lower = sooner) come first, then unranked planned posts by votes. Call this to find the next thing to build, then claim_post before starting work.

Parametersslugrequiredlimit

claim_post

Atomically claim a post before working on it (double-work guard). ttl_seconds defaults to 3600 (max 86400); re-claiming with the same key extends the lease. Returns 409 if another key holds a live claim.

Parametersslugrequiredpost_idrequiredagent_labelttl_seconds

release_post

Release a post's claim so other agents can pick it up.

Parametersslugrequiredpost_idrequired

add_evidence

Attach implementation evidence to a post (shown publicly). kind is one of branch|commit|pr|transcript|url; ref is the branch name, commit sha, or URL. Voters see these in the post page's "Implementation" section.

Parametersrefrequiredkindrequiredslugrequiredlabelpost_idrequiredaction_key

propose_status

Propose a status change for the board owner to confirm. The agent-honest way to mark work done: nothing changes on the public board and no voter is notified until a human confirms the proposal from the dashboard. status is one of open|planned|in_progress|shipped|declined; a new proposal replaces any pending one. Prefer this over update_post's direct status flip.

Parametersnoteslugrequiredstatusrequiredpost_idrequiredaction_key

get_changelog

List shipped posts for a board.

Parametersslugrequired

get_analytics

Get read-only analytics for a board.

Parametersslugrequiredperiod

whoami

Confirm the caller's API key by listing accessible boards.

Takes no parameters.

ping

Check MCP and FeatureJet API reachability for the caller's key.

Takes no parameters.

Version history

1
  1. v0.1.0LatestNov 5, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts