@eoinfitz/featurebase-mcp
v1.1.1
Published
MCP server for Featurebase API - manage posts, comments, and help center content
Downloads
36
Maintainers
Readme
Featurebase MCP Server
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-mcpOr install globally:
npm install -g featurebase-mcpFrom Source
git clone https://github.com/marcinwyszynski/featurebase-mcp.git
cd featurebase-mcp
npm install
npm run buildUsage
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
- Log in to your Featurebase account
- Navigate to your account settings
- Generate an API key
- 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 usingresolve_post_slugtool.FEATUREBASE_BASE_URL: Custom API base URL (defaults to "https://do.featurebase.app/v2")
You can set them:
- In your Claude Desktop configuration (recommended)
- Export in your shell:
export FEATUREBASE_API_KEY="your-api-key-here" - 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 IDq: Search posts by title or contentcategory: 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 dateendDate: Posts created before this datelimit: Results per pagepage: Page number
create_post
Create a new post.
Parameters:
title(required): Post title (min 2 characters)category(required): Board/category namecontent: Post contentemail: Submitter's emailauthorName: Name for new userstags: Array of tag namescommentsAllowed: Enable/disable commentsstatus: Post statusdate: Creation datecustomInputValues: Custom field values
update_post
Update an existing post.
Parameters:
id(required): Post ID to updatetitle: New titlecontent: New contentstatus: New statuscommentsAllowed: Enable/disable commentscategory: New categorysendStatusUpdateEmail: Email upvoters about status changetags: New tagsinReview: Put post in reviewdate: Creation datecustomInputValues: 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 IDpage: Page number (default: 1)limit: Results per page (default: 10, max: 100)
add_upvoter
Add an upvoter to a post.
Parameters:
id(required): Post IDemail(required): Upvoter's emailname(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 submissionslocale: 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 reviewcommentThreadId: Get all comments in a threadlimit: 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 contentsubmissionId: Post ID or slug (required if no changelogId)changelogId: Changelog ID or slug (required if no submissionId)parentCommentId: Parent comment ID for repliesisPrivate: Make comment private (admins only)sendNotification: Notify voters (default: true)createdAt: Set creation dateauthor: Post as specific user (object with name, email, profilePicture)
update_comment
Update an existing comment.
Parameters:
id(required): Comment IDcontent: New contentisPrivate: Make private (admins only)pinned: Pin comment to topinReview: Put comment in reviewcreatedAt: 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 paginationhelpCenterId: Filter by help center ID
create_collection
Create a new collection in the help center.
Parameters:
name(required): Collection namedescription: Collection descriptionicon: Icon object withtype("emoji" or "predefined") andvalueparentId: 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 updatename: New namedescription: New descriptionicon: Updated icon objectparentId: 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 paginationstate: Filter by state: "live", "draft", or "all" (default: "live")parentId: Filter by parent collection IDhelpCenterId: Filter by help center ID
create_article
Create a new article in the help center.
Parameters:
title(required): Article titledescription: Brief descriptionbody: HTML content of the articleformatter: Content formatter — "default" or "ai" (AI converts markdown/HTML to Featurebase format)parentId: Parent collection IDicon: Icon object withtypeandvaluestate: "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 IDstate: 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 updatetitle: New titledescription: New descriptionbody: New HTML contentformatter: Content formatter ("default" or "ai")icon: Updated icon objectparentId: New parent collection ID (null for root)authorId: ID of new author (must be an organization member)state: New state — "live" publishes immediatelytranslations: 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 paginationhelpCenterId: Filter by help center IDlocale: Filter by locale codetargetType: 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 IDlocale(required): Locale code used to resolve target translationfromUrl(required): Full absolute source URL — must match the help center's custom domaintargetType(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 updatehelpCenterId: New help center IDlocale: New locale codefromUrl: 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 devSecurity
- 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_KEYenvironment variable
Publishing
This server is available on:
For publishing instructions, see PUBLISHING.md.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
MIT
