npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@bellwetherlabs/featurebase-mcp

v1.3.0

Published

MCP server for Featurebase API - manage posts, comments, and help center

Downloads

181

Readme

Featurebase MCP Server

A Model Context Protocol (MCP) server that provides access to the Featurebase API for managing posts, comments, and help center content. Published by Bellwether Labs.

Features

  • Posts Management

    • List posts with filtering options
    • Create new posts
    • Update existing posts
    • Delete posts
    • Get post upvoters
    • Add upvoters to posts
  • Comments Management

    • Get comments for posts/changelogs
    • Create new comments or replies
    • Update comments
    • Delete comments
  • Help Center

    • List, create, get, update, delete collections
    • List, create, get, update, delete articles (supports HTML with images via URLs or base64)
    • Requires API key with manage_help_center permission
  • Changelogs

    • List, create, get, update, delete changelogs
    • Publish changelogs (with optional email notification or scheduled date)
    • Supports HTML/markdown content with images

Installation

npx (Recommended – auto-downloads on first run)

No install needed. Cursor/MCP will fetch the package on first use:

npx -y @bellwetherlabs/featurebase-mcp

npm install

Add as a project dependency:

npm install @bellwetherlabs/featurebase-mcp

Or install globally:

npm install -g @bellwetherlabs/featurebase-mcp

From Source

git clone https://github.com/james-see/featurebase-mcp.git
cd featurebase-mcp
npm install
npm run build

Configuration

Cursor IDE

Add to .cursor/mcp.json (project-level) or ~/.cursor/mcp.json (global). Restart Cursor after changes.

{
  "mcpServers": {
    "featurebase": {
      "command": "npx",
      "args": ["-y", "@bellwetherlabs/featurebase-mcp"],
      "env": {
        "FEATUREBASE_API_KEY": "your-api-key-here",
        "FEATUREBASE_ORG_URL": "https://your-org.featurebase.app"
      }
    }
  }
}

The -y flag runs npx non-interactively and auto-downloads the package if not cached.

Claude Desktop

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "featurebase": {
      "command": "npx",
      "args": ["-y", "@bellwetherlabs/featurebase-mcp"],
      "env": {
        "FEATUREBASE_API_KEY": "your-api-key-here",
        "FEATUREBASE_ORG_URL": "https://your-org.featurebase.app"
      }
    }
  }
}

Using global install

If installed globally (npm install -g @bellwetherlabs/featurebase-mcp):

{
  "mcpServers": {
    "featurebase": {
      "command": "featurebase-mcp",
      "env": {
        "FEATUREBASE_API_KEY": "your-api-key-here",
        "FEATUREBASE_ORG_URL": "https://your-org.featurebase.app"
      }
    }
  }
}

Getting Your API Key

  1. Log in to your Featurebase account
  2. Navigate to your account settings
  3. Generate an API key
  4. Keep it secure - never commit it to version control

Environment Variables

The server requires these environment variables:

Required

  • FEATUREBASE_API_KEY: Your FeatureBase API key

Optional

  • FEATUREBASE_ORG_URL: Your organization's FeatureBase URL (e.g., "https://feedback.spacelift.io"). Required only if using resolve_post_slug tool.
  • FEATUREBASE_BASE_URL: Custom API base URL (defaults to "https://do.featurebase.app/v2")

You can set them:

  1. In your Claude Desktop configuration (recommended)
  2. Export in your shell: export FEATUREBASE_API_KEY="your-api-key-here"
  3. When running the server: FEATUREBASE_API_KEY="your-api-key-here" npx -y @bellwetherlabs/featurebase-mcp

Available Tools

Posts

list_posts

List posts with optional filtering.

Parameters:

  • id: Find specific post by ID
  • q: Search posts by title or content
  • category: Filter by board names (array)
  • status: Filter by status IDs (array)
  • sortBy: Sort order (e.g., "date:desc", "upvotes:desc")
  • startDate: Posts created after this date
  • endDate: Posts created before this date
  • limit: Results per page
  • page: Page number

create_post

Create a new post.

Parameters:

  • title (required): Post title (min 2 characters)
  • category (required): Board/category name
  • content: Post content
  • email: Submitter's email
  • authorName: Name for new users
  • tags: Array of tag names
  • commentsAllowed: Enable/disable comments
  • status: Post status
  • date: Creation date
  • customInputValues: Custom field values

update_post

Update an existing post.

Parameters:

  • id (required): Post ID to update
  • title: New title
  • content: New content
  • status: New status
  • commentsAllowed: Enable/disable comments
  • category: New category
  • sendStatusUpdateEmail: Email upvoters about status change
  • tags: New tags
  • inReview: Put post in review
  • date: Creation date
  • customInputValues: Custom field values

delete_post

Permanently delete a post.

Parameters:

  • id (required): Post ID to delete

get_post_upvoters

Get list of users who upvoted a post.

Parameters:

  • submissionId (required): Post ID
  • page: Page number (default: 1)
  • limit: Results per page (default: 10, max: 100)

add_upvoter

Add an upvoter to a post.

Parameters:

  • id (required): Post ID
  • email (required): Upvoter's email
  • name (required): Upvoter's name

resolve_post_slug

Convert a post slug to post ID and get complete post details.

Parameters:

  • slug (required): Post slug from URL (e.g., "spacectl-stack-local-preview-target")

Returns the complete post data including ID, title, content, and metadata.

get_similar_submissions

Find posts similar to the given query text.

Parameters:

  • query (required): Search query text to find similar submissions
  • locale: Locale for search (default: "en")

Returns a list of similar posts based on content similarity.

Comments

get_comments

Get comments for a post or changelog.

Parameters:

  • submissionId: Post ID or slug (required if no changelogId)
  • changelogId: Changelog ID or slug (required if no submissionId)
  • privacy: Filter by privacy ("public", "private", "all")
  • inReview: Filter for comments in review
  • commentThreadId: Get all comments in a thread
  • limit: Results per page (default: 10)
  • page: Page number (default: 1)
  • sortBy: Sort order ("best", "top", "new", "old")

create_comment

Create a new comment or reply.

Parameters:

  • content (required): Comment content
  • submissionId: Post ID or slug (required if no changelogId)
  • changelogId: Changelog ID or slug (required if no submissionId)
  • parentCommentId: Parent comment ID for replies
  • isPrivate: Make comment private (admins only)
  • sendNotification: Notify voters (default: true)
  • createdAt: Set creation date
  • author: Post as specific user (object with name, email, profilePicture)

update_comment

Update an existing comment.

Parameters:

  • id (required): Comment ID
  • content: New content
  • isPrivate: Make private (admins only)
  • pinned: Pin comment to top
  • inReview: Put comment in review
  • createdAt: Update creation date

delete_comment

Delete a comment (soft delete if it has replies).

Parameters:

  • id (required): Comment ID to delete

Help Center - Collections

list_collections

List help center collections with cursor-based pagination.

Parameters:

  • cursor: Cursor from previous response for pagination
  • limit: Items per page (1-100, default: 10)

create_collection

Create a new help center collection.

Parameters:

  • name (required): Collection name
  • description: Collection description
  • parentId: Parent collection ID for nested collections
  • icon: Object with type ("emoji" or "predefined") and value
  • translations: Object keyed by locale (e.g. { en: { name, description } })

get_collection

Get a collection by ID.

Parameters:

  • id (required): Collection ID

update_collection

Update an existing collection.

Parameters:

  • id (required): Collection ID
  • name, description, parentId, icon, translations: Fields to update

delete_collection

Delete a collection.

Parameters:

  • id (required): Collection ID

Help Center - Articles

list_articles

List help center articles with optional filtering.

Parameters:

  • cursor: Cursor for pagination
  • limit: Items per page (1-100, default: 10)
  • parentId: Filter by parent collection ID
  • state: Filter by "live", "draft", or "all" (default: live)

create_article

Create a new help center article. Body supports HTML with external image URLs or base64 data URIs.

Parameters:

  • title (required): Article title
  • body: HTML content (images via URLs or base64)
  • description: Brief description
  • parentId: Parent collection ID
  • state: "live" (publish) or "draft" (default)
  • icon: Object with type and value
  • formatter: "default" or "ai" (AI converts markdown/html)
  • translations: Object keyed by locale

get_article

Get an article by ID.

Parameters:

  • id (required): Article ID
  • state: "live" or "draft" (default: live)

update_article

Update an existing article.

Parameters:

  • id (required): Article ID
  • title, body, description, parentId, state, authorId, icon, formatter, translations: Fields to update

delete_article

Delete an article.

Parameters:

  • id (required): Article ID

Changelogs

list_changelogs

List changelogs with optional filtering.

Parameters:

  • cursor, limit: Pagination
  • id, q: Find by ID/slug or search
  • categories: Filter by category names (array)
  • locale, state (draft/live/all)
  • startDate, endDate: Date range
  • sortBy, sortOrder: Sort (e.g. date desc)

create_changelog

Create a changelog. Provide htmlContent or markdownContent (or both).

Parameters:

  • title (required): Changelog title
  • htmlContent, markdownContent: Content (at least one)
  • categories: e.g. ["New", "Fixed", "Improved"]
  • featuredImage: Featured image URL
  • allowedSegmentIds: Segment IDs for access
  • locale, date, state (draft/live)

get_changelog

Get a changelog by ID or slug.

Parameters:

  • id (required): Changelog ID or slug

update_changelog

Update an existing changelog.

Parameters:

  • id (required): Changelog ID
  • title, htmlContent, markdownContent, categories, featuredImage, allowedSegmentIds, date

delete_changelog

Delete a changelog.

Parameters:

  • id (required): Changelog ID

publish_changelog

Publish a changelog.

Parameters:

  • id (required): Changelog ID
  • sendEmail: Notify subscribers (default: false)
  • locales: Locales to publish (empty = all)
  • scheduledDate: ISO date for scheduled publish

Development

# Install dependencies
npm install

# Build TypeScript
npm run build

# Run in development mode
npm run dev

Security

  • Never hardcode your API key
  • Always use environment variables for API keys
  • Keep your API key secure and rotate it regularly
  • The server will not start without a valid FEATUREBASE_API_KEY environment variable

Publishing

To publish to npm under the Bellwether Labs org:

  1. Log in to npm (if not already):

    npm login

    Use credentials for an account that has publish access to @bellwetherlabs.

  2. Build and publish:

    npm run build
    npm publish --access public

    Scoped packages (@org/name) are private by default; --access public makes it installable by anyone.

  3. Verify:

    npm view @bellwetherlabs/featurebase-mcp

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

MIT