MCP Server for Fider
A Model Context Protocol (MCP) server that provides tools to interact with Fider - an open-source customer feedback tool.
Features
This MCP server provides the following tools:
Posts:
- list_posts - List posts with filtering options (search, view, limit, tags)
- get_post - Retrieve a specific post by number
- create_post - Create new posts (requires authentication)
- edit_post - Edit existing posts (requires collaborator/admin role)
- delete_post - Delete posts (requires admin role)
- respond_to_post - Change post status (open, planned, started, completed, declined, duplicate)
Comments:
- list_comments - List comments for a specific post
- add_comment - Add a comment to a post (requires authentication)
- update_comment - Update a comment (requires authentication and ownership)
- delete_comment - Delete a comment (requires authentication and ownership/admin)
Tags:
- list_tags - List all available tags
- create_tag - Create a new tag (requires admin role)
- update_tag - Update an existing tag (requires admin role)
- delete_tag - Delete a tag (requires admin role)
- assign_tag - Assign a tag to a post (requires collaborator/admin role)
- unassign_tag - Unassign a tag from a post (requires collaborator/admin role)
Installation
Using uvx (recommended - no installation needed!)
# Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh
# Run directly from PyPI (once published)
uvx --from mcp-fider==2025.06.27.170000 --refresh-package mcp-fider mcp-fider
# Or run from GitHub directly
uvx --from git+https://github.com/ringostat/fider-mcp.git mcp-fider
Using pip (if you prefer traditional method)
# Clone the repository
git clone https://github.com/ringostat/fider-mcp.git
cd fider-mcp
# Create a virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install the package
pip install -e .
Configuration
The server requires the following environment variables:
FIDER_BASE_URL
orFIDER_URL
- Your Fider instance URL (e.g.,https://feedback.example.com
)FIDER_API_KEY
- Optional API key for authentication (required for creating, editing, and deleting posts)
Getting a Fider API Key
- Log in to your Fider instance as an administrator
- Go to Settings → API
- Generate a new API key
- Copy the key and set it as the
FIDER_API_KEY
environment variable
Usage
With Claude Desktop
Add the server to your Claude Desktop configuration file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
Windows:
%APPDATA%\Claude\claude_desktop_config.json
Add the following configuration:
{
"mcpServers": {
"fider": {
"command": "uvx",
"args": ["--from", "mcp-fider==2025.06.27.170000",
"--refresh-package", "mcp-fider", "mcp-fider"],
"env": {
"FIDER_BASE_URL": "https://your-fider-instance.com",
"FIDER_API_KEY": "your-api-key-here"
}
}
}
}
- Restart Claude Desktop
Running Directly
You can also run the server directly for testing:
# Set environment variables
export FIDER_BASE_URL="https://your-fider-instance.com"
export FIDER_API_KEY="your-api-key-here"
# Run from PyPI (once published)
uvx --from mcp-fider==2025.06.27.170000 --refresh-package mcp-fider mcp-fider
# Or run from GitHub directly
uvx --from git+https://github.com/ringostat/fider-mcp.git mcp-fider
Development
Running Tests
uv run pytest
Code Formatting
uv run black .
uv run ruff check .
Publishing to PyPI
# Build the package
uv build
# Publish to PyPI
uv publish
Tool Descriptions
list_posts
List posts from Fider with optional filtering.
Parameters:
query
(string) - Search keywordsview
(string) - Filter and order options: all, recent, my-votes, most-wanted, most-discussed, planned, started, completed, declined, trendinglimit
(integer) - Number of entries to return (1-100, default: 30)tags
(string) - Comma-separated list of tags to filter by
get_post
Get a specific post by its number.
Parameters:
number
(integer, required) - The post number to retrieve
create_post
Create a new post (requires authentication).
Parameters:
title
(string, required) - The title of the postdescription
(string) - The description of the post
edit_post
Edit an existing post (requires collaborator/admin role).
Parameters:
number
(integer, required) - The post number to edittitle
(string, required) - The new title of the postdescription
(string) - The new description of the post
delete_post
Delete a post (requires admin role).
Parameters:
number
(integer, required) - The post number to deletereason
(string) - Reason for deletion
respond_to_post
Respond to a post by changing its status (requires collaborator/admin role).
Parameters:
number
(integer, required) - The post number to respond tostatus
(string, required) - The new status: open, planned, started, completed, declined, duplicatetext
(string) - Optional description of the status changeoriginalNumber
(integer) - Required when status is 'duplicate' - the post number to merge into
Comment Tools
list_comments
List comments for a specific post.
Parameters:
number
(integer, required) - The post number to get comments for
add_comment
Add a comment to a post (requires authentication).
Parameters:
number
(integer, required) - The post number to comment oncontent
(string, required) - The comment content
update_comment
Update a comment (requires authentication and ownership).
Parameters:
post_number
(integer, required) - The post numbercomment_id
(integer, required) - The comment ID to updatecontent
(string, required) - The new comment content
delete_comment
Delete a comment (requires authentication and ownership/admin).
Parameters:
post_number
(integer, required) - The post numbercomment_id
(integer, required) - The comment ID to delete
Tag Tools
list_tags
List all available tags.
Parameters: None
create_tag
Create a new tag (requires admin role).
Parameters:
name
(string, required) - The tag namecolor
(string, required) - The tag color (hex format, e.g., #FF0000)isPublic
(boolean) - Whether the tag is public (default: true)
update_tag
Update an existing tag (requires admin role).
Parameters:
slug
(string, required) - The tag slug to updatename
(string, required) - The new tag namecolor
(string, required) - The new tag color (hex format, e.g., #FF0000)isPublic
(boolean) - Whether the tag is public
delete_tag
Delete a tag (requires admin role).
Parameters:
slug
(string, required) - The tag slug to delete
assign_tag
Assign a tag to a post (requires collaborator/admin role).
Parameters:
post_number
(integer, required) - The post numberslug
(string, required) - The tag slug to assign
unassign_tag
Unassign a tag from a post (requires collaborator/admin role).
Parameters:
post_number
(integer, required) - The post numberslug
(string, required) - The tag slug to unassign
Troubleshooting
Connection Issues
- Ensure your Fider instance is accessible from your network
- Check that the
FIDER_BASE_URL
is correct and doesn't have a trailing slash - Verify your API key is valid if you're getting authentication errors
Permission Errors
- Creating, editing, and deleting posts requires proper authentication
- Ensure your API key has the necessary permissions for the operations you're trying to perform
License
MIT License - see LICENSE file for details
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.