A plug-and-play MCP server for Product Hunt.
A plug-and-play MCP server for Product Hunt
pip install product-hunt-mcp
# Run the MCP server (requires PRODUCT_HUNT_TOKEN environment variable)
export PRODUCT_HUNT_TOKEN=your_token_here
product-hunt-mcp
Product Hunt MCP Server connects Product Hunt's API to any LLM or agent that speaks the Model Context Protocol (MCP). Perfect for AI assistants, chatbots, or your own automations!
Developer Token
for the tokenNote: When creating a new application on Product Hunt, you will be asked for a
redirect_uri
. While the MCP server does not use the redirect URI, it is a required field. You can enter any valid URL, such ashttps://localhost:8424/callback
.
Preferred: uv (fast, modern Python installer)
# Install uv if you don't have it
pip install uv
uv pip install product-hunt-mcp
# or
pip install product-hunt-mcp
uv pip install 'git+https://github.com/jaipandya/producthunt-mcp-server.git'
# or
pip install 'git+https://github.com/jaipandya/producthunt-mcp-server.git'
uv pip install .
# or
pip install .
Once installed, the product-hunt-mcp
command will be available. Add it to your Claude Desktop or Cursor configuration:
{
"mcpServers": {
"product-hunt": {
"command": "product-hunt-mcp",
"env": {
"PRODUCT_HUNT_TOKEN": "your_token_here"
}
}
}
}
your_token_here
with your actual Product Hunt API token.Tip: On macOS, Claude Desktop may not always find the
product-hunt-mcp
command if it's not in the default PATH. If you encounter issues, you can provide the full path to the executable. After installing, run:which product-hunt-mcp
Use the output path in your Claude Desktop config, replacing
"command": "product-hunt-mcp"
with the full path (e.g.,"command": "/Users/youruser/.local/bin/product-hunt-mcp"
).
Claude Desktop:
%APPDATA%\claude-desktop\config.json
~/Library/Application Support/claude-desktop/config.json
~/.config/claude-desktop/config.json
Cursor:
%APPDATA%\Cursor\User\settings.json
~/Library/Application Support/Cursor/User/settings.json
~/.config/Cursor/User/settings.json
You can also run the server using Docker:
# Build the Docker image
docker build -t product-hunt-mcp .
# Run the Docker container (interactive for MCP)
docker run -i --rm -e PRODUCT_HUNT_TOKEN=your_token_here product-hunt-mcp
For Claude Desktop/Cursor integration with Docker, use this configuration:
{
"mcpServers": {
"product-hunt": {
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "PRODUCT_HUNT_TOKEN=your_token_here", "product-hunt-mcp"],
"env": {}
}
}
}
Security Note: Your
PRODUCT_HUNT_TOKEN
is sensitive. Do not share it or commit it to version control.
Tool | Description | Key Parameters |
---|---|---|
get_post_details | Get info about a specific post | id or slug , comments_count , comments_after |
get_posts | Get posts with filters | topic , order , count , featured , posted_before , posted_after |
get_comment | Get info about a specific comment | id (required) |
get_post_comments | Get comments for a post | post_id or slug , order , count , after |
get_collection | Get info about a collection | id or slug |
get_collections | Get collections with filters | featured , user_id , post_id , order , count |
get_topic | Get info about a topic | id or slug |
search_topics | Search topics | query , followed_by_user_id , order , count |
get_user | Get info about a user | id or username , posts_type , posts_count |
get_viewer | Get info about the authenticated user | None |
check_server_status | Check server/API status & authentication | None |
product-hunt-mcp/
├── src/
│ └── product_hunt_mcp/ # Main package directory
│ ├── __init__.py
│ ├── cli.py # Command-line entry point
│ ├── api/ # API clients & queries
│ ├── schemas/ # Data validation schemas
│ ├── tools/ # MCP tool definitions
│ └── utils/ # Utility functions
├── pyproject.toml # Project metadata, dependencies, build config
├── README.md
├── CONTRIBUTING.md
├── CHANGELOG.md
├── Dockerfile
└── ... (config files, etc.)
The Product Hunt API has rate limits that this client respects. If you encounter rate limit errors, the client will inform you when the rate limit resets. You can check your current rate limit status using the get_api_rate_limits
or check_server_status
tools.
PRODUCT_HUNT_TOKEN
is correctly set as an environment variable.pyproject.toml
for dev dependencies.MIT