Product Hunt MCP
Product Hunt MCP
A read-only MCP server wrapping the Product Hunt API v2 (GraphQL), served over Streamable HTTP so it runs on Vercel with no persistent process.
Built to be registered as a Composio custom toolkit, but it works with any MCP client (Claude, Cursor, OpenClaw, ChatGPT).
Tools
Tool | What it does |
| List launches. Filter by date range, topic, featured. Order by RANKING / NEWEST / VOTES / FEATURED_AT. |
| Full detail for one launch by slug or id, including makers. |
| Read a launch's comment thread. |
| Search topics/categories, returns slugs for filtering. |
| Profile, follower counts and recent launches for a maker. |
| Verify the token works and see whose account it is. |
| Escape hatch for arbitrary read queries. Mutations are blocked. |
Deploy
Hit the Deploy button above, or import the repo at vercel.com/new. No environment variables are required.
Your endpoint will be https://<your-project>.vercel.app/api/mcp. Adding a custom
domain (e.g. producthunt.yourdomain.com) gives you a stable URL that doesn't leak
the Vercel project name.
Authentication
Credentials are passed per request and never stored on the server:
Authorization: Bearer <your-product-hunt-developer-token>X-ProductHunt-Token: <token> also works. As a fallback for single-user setups,
set PRODUCTHUNT_TOKEN as a Vercel environment variable and clients can skip the
header entirely.
Get a token: producthunt.com/v2/oauth/applications → Add an application → copy the Developer Token (not the API Key / API Secret pair above it, those are for the full OAuth flow).
Register as a Composio custom toolkit
Dashboard form:
Display name:
Product HuntMCP server URL:
https://<your-domain>/api/mcpAuthentication:
API KeyHeader:
Authorizationwith formatBearer {{generic_api_key}}Advanced settings → Toolkit ID:
PRODUCTHUNT
Or via the API:
curl -X POST https://backend.composio.dev/api/v3.1/custom/toolkits/upsert \
-H "x-api-key: $COMPOSIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"slug": "PRODUCTHUNT",
"toolkit_config": {
"name": "Product Hunt",
"app_url": "https://<your-domain>/api/mcp",
"auth_schemes": [
{
"mode": "API_KEY",
"headers": { "Authorization": "Bearer {{generic_api_key}}" }
}
]
}
}'Then create the auth config with is_enabled_for_tool_router: true, connect an
account using your developer token as the API key, and
POST /api/v3.1/custom/toolkits/sync to pull the tool list in.
Note: Composio will not let you change app_url on an existing custom toolkit.
If you registered a placeholder URL first, delete and re-create it.
Smoke test
curl -sN -X POST https://<your-domain>/api/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Authorization: Bearer $PRODUCTHUNT_TOKEN" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'You should get seven tools back. Then try a real call:
curl -sN -X POST https://<your-domain>/api/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Authorization: Bearer $PRODUCTHUNT_TOKEN" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"ph_get_posts","arguments":{"first":5}}}'Local dev
npm install
npm run dev
# endpoint at http://localhost:3000/api/mcpLimits
Read-only by design.
ph_graphqlrejects mutations. Product Hunt also requires manual approval for write scopes.Rate limit: 6,250 complexity points per 15 minutes. The server surfaces a clear error on 429 and warns in logs when the budget drops below 500.
Runs on the Node runtime (needs
node:async_hooksfor per-request credential isolation), not Edge.
MIT.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/pmcostadev/producthunt-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server