Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
Read Google reviews and stats, draft AI replies, publish the ones you approve, request reviews.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
REPUTEMAP_API_KEY, AuthorizationValues marked secret are keys to your account. Never share them or paste them into a chat.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
This address needs a key in a request header, which the add-connector menu cannot set. Use Claude Code, Cursor or VS Code instead.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"reputemap": {
"command": "npx",
"args": [
"-y",
"@reputemap/mcp"
],
"env": {
"REPUTEMAP_API_KEY": "your-value"
}
}
}
}Run this in your terminal
claude mcp add --transport http reputemap https://api.reputemap.com/mcp --header 'Authorization: your-value'claude mcp add reputemap --env REPUTEMAP_API_KEY=your-value -- npx -y @reputemap/mcpFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"reputemap": {
"url": "https://api.reputemap.com/mcp",
"headers": {
"Authorization": "your-value"
}
}
}
}Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"reputemap": {
"command": "npx",
"args": [
"-y",
"@reputemap/mcp"
],
"env": {
"REPUTEMAP_API_KEY": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"reputemap": {
"type": "http",
"url": "https://api.reputemap.com/mcp",
"headers": {
"Authorization": "your-value"
}
}
}
}Paste into .vscode/mcp.json in your project
{
"servers": {
"reputemap": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@reputemap/mcp"
],
"env": {
"REPUTEMAP_API_KEY": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This address needs a key in a request header, which the add-connector menu cannot set. Use Claude Code, Cursor or VS Code instead.
Your choice stays on this device in a cookie; no account needed.
Authorization secret required HTTP headerThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
We have not read this server’s tool list yet; we check endpoints in rotation.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 6, 2026
The registry name was verified against the domain reputemap.com (the registry checks domain ownership)
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
Not checked yet; we check endpoints in rotation
Not checked yet; we check endpoints in rotation
Not checked yet; we read the tool list when we check the endpoint
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
You need to fill in: REPUTEMAP_API_KEY, Authorization
Either way works: install it on your computer or connect to the cloud version.
The GitHub repo last changed –, and the latest version (1.1.1) reached the registry 25 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.
In the same category: Spec Driven Development, Remote Desktop Commander, Apify MCP Server
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Extract data from any website with thousands of scrapers, crawlers, and automations on Apify Store ⚡
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
The Model Context Protocol server of ReputeMap. It gives Claude, Cursor, Cline, VS Code, Codex, Gemini CLI and any other MCP client your Google Business Profile reviews: a filterable review inbox with owner replies inlined, per-location stats, AI reply drafts, publishing a reply you approved, and honest review-request emails.
*"Show me every unanswered review under 3 stars from the last week, worst first."*
*"Draft replies to the three newest negative reviews in a calm tone."*
*"Publish the second draft for the Riverside review, exactly as written."*
*"We just finished the Hendersons' job. Send them a review request."*
You probably don't need to run anything. The server is hosted:
https://api.reputemap.com/mcp Streamable HTTP · JSON-RPC 2.0
Authorization: Bearer rmk_YOUR_KEY app.reputemap.com → Settings → API keys
Registry: com.reputemap/reputemap · included in every paid plan, from Solo ($19/month), and in the 14-day trial.
Seven tools: four read, three act.
| Tool | What it does | Type | Credits |
|---|---|---|---|
list_locations | Every location the org manages, with the ids the other tools take | read-only | 1 |
list_reviews | Google reviews, newest first, with the published owner reply inlined. Filter by location, star range, unanswered only, or the last N days; up to 50 per page with offset paging. Each review carries Google's moderation state of the reply (reply_state, reply_policy_violation) | read-only | 1 |
get_review_stats | Per location and org-wide: review count, average rating, 1–5★ breakdown, unanswered count, and activity in a trailing window (default 30 days) | read-only | 1 |
draft_reply | 2–3 reply drafts for one review from ReputeMap's own generator, in the business's saved voice and sign-off. Optional one-off instructions (e.g. "keep it under 40 words"). Saves the draft to the app's editor and never publishes | saves a draft | 1 |
publish_reply | Publishes the exact reply text the user approved to the review on Google | posts to Google | 1 |
send_review_request | Sends one real review-request email to a customer through ReputeMap's campaign engine | sends email | 1 |
get_usage | This month's credit usage, limit and rate limit | read-only | free |
Tools carry MCP annotations: the four read tools have readOnlyHint; the other three don't, and publish_reply is also marked destructiveHint. Those are the signals that make a client ask you before it runs a tool.
draft_reply stores drafts in ReputeMap. Nothing reaches Google until publish_reply is called or someone clicks Publish in the app.publish_reply takes the exact text you approved and nothing else. It replaces any existing owner reply on that review, which is why it is flagged destructive, and every publish is audit-logged. If Google refuses the request, the text stays in ReputeMap with a manual fallback (status: "manual_required"), so your words are never lost.publish_reply answers with google_state: pending means Google is checking the reply before showing it. status: "rejected_by_google" means Google won't show it; policy_violation and detail say why, so write a different reply. list_reviews carries the same state on every review, and a rejected reply counts as no reply for unanswered_only.send_review_request runs through the same opt-out and suppression checks as in-app campaigns. If this location already asked this address, you get status: "already_requested": no second email goes out and the credit is given back. It is still a real email to a real person, so it is annotated non-idempotent and clients confirm first.rmk_ and is shown once.Then pick your client below. Each client has two ways in:
https://api.reputemap.com/mcp directly and sends the key as an Authorization: Bearer header.npx -y @reputemap/mcp (Node 18+) with REPUTEMAP_API_KEY set, and the bridge forwards everything to the hosted endpoint.Remote, one command, no restart:
claude mcp add --transport http reputemap https://api.reputemap.com/mcp \
--header "Authorization: Bearer rmk_YOUR_KEY"
Writing .mcp.json by hand? Include "type": "http" in the entry. Without it, Claude Code reads the entry as a local program and fails.
Stdio bridge instead:
claude mcp add reputemap -e REPUTEMAP_API_KEY=rmk_YOUR_KEY -- npx -y @reputemap/mcp
Use the stdio bridge in claude_desktop_config.json (Settings → Developer → Edit Config), then fully quit and reopen the app. Needs Node.js 18+.
{
"mcpServers": { "reputemap": { "command": "npx", "args": ["-y", "@reputemap/mcp"], "env": { "REPUTEMAP_API_KEY": "rmk_YOUR_KEY" } } } }
The generic mcp-remote bridge works too: "args": ["-y", "mcp-remote", "https://api.reputemap.com/mcp", "--header", "Authorization: Bearer rmk_YOUR_KEY"].
Remote, in ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project):
{
"mcpServers": { "reputemap": { "url": "https://api.reputemap.com/mcp", "headers": { "Authorization": "Bearer rmk_YOUR_KEY" } } } }
Stdio bridge instead:
{
"mcpServers": { "reputemap": { "command": "npx", "args": ["-y", "@reputemap/mcp"], "env": { "REPUTEMAP_API_KEY": "rmk_YOUR_KEY" } } } }
Open Cline → MCP Servers → Configure MCP Servers, which opens cline_mcp_settings.json, and add the server. Remote:
{
"mcpServers": { "reputemap": { "type": "streamableHttp", "url": "https://api.reputemap.com/mcp", "headers": { "Authorization": "Bearer rmk_YOUR_KEY" }, "disabled": false } } }
Stdio bridge instead:
{
"mcpServers": { "reputemap": { "command": "npx", "args": ["-y", "@reputemap/mcp"], "env": { "REPUTEMAP_API_KEY": "rmk_YOUR_KEY" }, "disabled": false } } }
.vscode/mcp.json in the workspace. The top-level key is servers, not mcpServers. VS Code asks for the key once and stores it, so it stays out of the file:
{
"inputs": [ { "type": "promptString", "id": "reputemap-key", "description": "ReputeMap API key (rmk_...)", "password": true } ], "servers": { "reputemap": { "type": "http", "url": "https://api.reputemap.com/mcp", "headers": { "Authorization": "Bearer ${input:reputemap-key}" } } } }
Stdio bridge instead: replace the reputemap entry with { "type": "stdio", "command": "npx", "args": ["-y", "@reputemap/mcp"], "env": { "REPUTEMAP_API_KEY": "${input:reputemap-key}" } }.
~/.codeium/windsurf/mcp_config.json. Note the field is serverUrl:
{
"mcpServers": { "reputemap": { "serverUrl": "https://api.reputemap.com/mcp", "headers": { "Authorization": "Bearer rmk_YOUR_KEY" } } } }
~/.codex/config.toml, then export REPUTEMAP_API_KEY in your shell:
[mcp_servers.reputemap]
url = "https://api.reputemap.com/mcp" bearer_token_env_var = "REPUTEMAP_API_KEY"
gemini mcp add --transport http reputemap https://api.reputemap.com/mcp \
--header "Authorization: Bearer rmk_YOUR_KEY"
Or in ~/.gemini/settings.json, where the field is httpUrl:
{
"mcpServers": { "reputemap": { "httpUrl": "https://api.reputemap.com/mcp", "headers": { "Authorization": "Bearer rmk_YOUR_KEY" } } } }
URL: https://api.reputemap.com/mcp
Transport: Streamable HTTP (JSON-RPC 2.0 over POST) Header: Authorization: Bearer rmk_YOUR_KEY (X-API-Key: rmk_YOUR_KEY also works)
ChatGPT isn't supported yet: its connectors accept only OAuth, and this server uses an API key.
Check the connection: ask *"list my ReputeMap locations"*. If the ids come back, you're connected.
get_usage, which is free. A call with malformed arguments is rejected before a credit is charged, and a send_review_request that comes back already_requested is refunded.get_usage tells you where you stand.| Symptom | Cause and fix |
|---|---|
401 invalid or missing API key | Typo, or the key was revoked. Create a new one in Settings → API keys |
403 … requires an active paid plan | The workspace has no subscription. Pick a plan; the 14-day trial counts |
| "Monthly API credit limit reached" | Credits reset on the 1st; check get_usage |
| Claude Desktop shows no tools | npx needs Node.js 18+; fully quit and reopen the app after editing the config |
A zero-dependency stdio bridge for clients that speak MCP over stdio and can't send HTTP headers, in two flavours: bin/cli.mjs (Node 18+, published as @reputemap/mcp) and server.py (Python 3.9+, standard library only). Both forward every JSON-RPC message to the hosted endpoint over TLS and stream the responses back. The bridge holds no tool list of its own, so new tools reach you as soon as the hosted server ships them.
# Node: one-liner, no install
REPUTEMAP_API_KEY="rmk_..." npx -y @reputemap/mcp
REPUTEMAP_API_KEY="rmk_..." python3 server.py
server.json is the manifest published to the official MCP registry as com.reputemap/reputemap. .plugin/plugin.json and .mcp.json describe the same server for plugin-aware clients.
The bridge is about 120 readable lines, so it also documents what travels over the wire: your API key goes only into the Authorization header of TLS requests to api.reputemap.com.
initialize → notifications/initialized → tools/list / tools/call, plus ping. Supported revisions: 2024-11-05, 2025-03-26, 2025-06-18, 2025-11-25.initialize, ping, tools/list) answers without a key, so clients and directories can show the tool catalogue before you authenticate. tools/call always needs the key.isError: true, so your agent can read them and tell you.Only the beginning is shown; read the rest in the repo