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

@eoinfitz/featurebase-mcp

v1.1.1

Published

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

Downloads

36

Readme

Featurebase MCP Server

smithery badge

A Model Context Protocol (MCP) server that provides access to the Featurebase API for managing posts and comments.

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 Management

    • List and retrieve help centers
    • Full CRUD for collections (nested groupings of articles)
    • Full CRUD for articles (with draft/live state management)
    • Full CRUD for redirect rules (map legacy URLs to new content)

Installation

From Smithery (Recommended)

Once published to Smithery, users can install the server easily:

npx featurebase-mcp

Or install globally:

npm install -g featurebase-mcp

From Source

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

Usage

Claude Desktop Configuration

Add this server to your Claude Desktop configuration file:

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

Using npx (Recommended)

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

Using Global Installation

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

Using Local Installation

{
  "mcpServers": {
    "featurebase": {
      "command": "node",
      "args": ["/path/to/featurebase-mcp/build/index.js"],
      "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 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 Centers

list_help_centers

List all help centers in the organization.

Parameters:

  • limit: Number of items to return (1-100, default 10)
  • cursor: Cursor for pagination

get_help_center

Get a help center by ID.

Parameters:

  • id (required): Help center ID

Collections

list_collections

List collections in the help center.

Parameters:

  • limit: Number of items to return (1-100, default 10)
  • cursor: Cursor for pagination
  • helpCenterId: Filter by help center ID

create_collection

Create a new collection in the help center.

Parameters:

  • name (required): Collection name
  • description: Collection description
  • icon: Icon object with type ("emoji" or "predefined") and value
  • parentId: Parent collection ID (null for root)
  • translations: Translations keyed by locale code (e.g. { "fr": { "name": "...", "description": "..." } })

get_collection

Get a collection by ID.

Parameters:

  • id (required): Collection ID

update_collection

Update an existing collection. Only include fields you wish to update.

Parameters:

  • id (required): Collection ID to update
  • name: New name
  • description: New description
  • icon: Updated icon object
  • parentId: New parent collection ID (null for root)
  • translations: Updated translations keyed by locale code

delete_collection

Delete a collection permanently.

Parameters:

  • id (required): Collection ID to delete

Articles

list_articles

List articles in the help center.

Parameters:

  • limit: Number of items to return (1-100, default 10)
  • cursor: Cursor for pagination
  • state: Filter by state: "live", "draft", or "all" (default: "live")
  • parentId: Filter by parent collection ID
  • helpCenterId: Filter by help center ID

create_article

Create a new article in the help center.

Parameters:

  • title (required): Article title
  • description: Brief description
  • body: HTML content of the article
  • formatter: Content formatter — "default" or "ai" (AI converts markdown/HTML to Featurebase format)
  • parentId: Parent collection ID
  • icon: Icon object with type and value
  • state: "live" or "draft" (default: "draft")
  • translations: Translations keyed by locale code (e.g. { "fr": { "title": "...", "body": "..." } })

get_article

Get an article by ID.

Parameters:

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

update_article

Update an existing article. Only include fields you wish to update.

Parameters:

  • id (required): Article ID to update
  • title: New title
  • description: New description
  • body: New HTML content
  • formatter: Content formatter ("default" or "ai")
  • icon: Updated icon object
  • parentId: New parent collection ID (null for root)
  • authorId: ID of new author (must be an organization member)
  • state: New state — "live" publishes immediately
  • translations: Updated translations keyed by locale code

delete_article

Delete an article permanently.

Parameters:

  • id (required): Article ID to delete

Redirect Rules

Redirect rules map old Help Center URLs to new article or collection destinations. Only available for help centers with a custom domain configured.

list_redirect_rules

List redirect rules in the help center.

Parameters:

  • limit: Number of items to return (1-100, default 10)
  • cursor: Cursor for pagination
  • helpCenterId: Filter by help center ID
  • locale: Filter by locale code
  • targetType: Filter by target type: "article" or "collection"

create_redirect_rule

Create a redirect rule mapping an old URL to a new article or collection.

Parameters:

  • helpCenterId (required): Help center ID
  • locale (required): Locale code used to resolve target translation
  • fromUrl (required): Full absolute source URL — must match the help center's custom domain
  • targetType (required): "article" or "collection"
  • targetId (required): Target article or collection ID

get_redirect_rule_by_url

Get a redirect rule by its source URL.

Parameters:

  • url (required): Full absolute source URL to look up

get_redirect_rule

Get a redirect rule by ID.

Parameters:

  • id (required): Redirect rule ID

update_redirect_rule

Update an existing redirect rule. Only include fields you wish to update.

Parameters:

  • id (required): Redirect rule ID to update
  • helpCenterId: New help center ID
  • locale: New locale code
  • fromUrl: Updated source URL (will be re-normalized)
  • targetType: New target type ("article" or "collection")
  • targetId: New target article or collection ID

delete_redirect_rule

Delete a redirect rule permanently.

Parameters:

  • id (required): Redirect rule ID to delete

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

This server is available on:

  • Smithery - MCP server registry
  • npm - Node package manager

For publishing instructions, see PUBLISHING.md.

Contributing

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

License

MIT