Fider

Interact with Fider, an open-source customer feedback tool, to manage user suggestions and feedback.

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 or FIDER_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

  1. Log in to your Fider instance as an administrator
  2. Go to Settings → API
  3. Generate a new API key
  4. Copy the key and set it as the FIDER_API_KEY environment variable

Usage

With Claude Desktop

  1. 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

  2. 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"
      }
    }
  }
}
  1. 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 keywords
  • view (string) - Filter and order options: all, recent, my-votes, most-wanted, most-discussed, planned, started, completed, declined, trending
  • limit (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 post
  • description (string) - The description of the post

edit_post

Edit an existing post (requires collaborator/admin role).

Parameters:

  • number (integer, required) - The post number to edit
  • title (string, required) - The new title of the post
  • description (string) - The new description of the post

delete_post

Delete a post (requires admin role).

Parameters:

  • number (integer, required) - The post number to delete
  • reason (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 to
  • status (string, required) - The new status: open, planned, started, completed, declined, duplicate
  • text (string) - Optional description of the status change
  • originalNumber (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 on
  • content (string, required) - The comment content

update_comment

Update a comment (requires authentication and ownership).

Parameters:

  • post_number (integer, required) - The post number
  • comment_id (integer, required) - The comment ID to update
  • content (string, required) - The new comment content

delete_comment

Delete a comment (requires authentication and ownership/admin).

Parameters:

  • post_number (integer, required) - The post number
  • comment_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 name
  • color (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 update
  • name (string, required) - The new tag name
  • color (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 number
  • slug (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 number
  • slug (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.

Related Servers