Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
Generate, audit, and maintain legal policies that match what your code actually does.
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.
POLICYFORGE_API_KEYValues 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 …”.
Works in Claude on the web, desktop and mobile:
https://policyforge.co/api/mcpOpen Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"policyforge": {
"command": "npx",
"args": [
"-y",
"@policyforge/mcp"
],
"env": {
"POLICYFORGE_API_KEY": "your-value"
}
}
}
}Run this in your terminal
claude mcp add --transport http policyforge https://policyforge.co/api/mcpclaude mcp add policyforge --env POLICYFORGE_API_KEY=your-value -- npx -y @policyforge/mcpFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"policyforge": {
"url": "https://policyforge.co/api/mcp"
}
}
}Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"policyforge": {
"command": "npx",
"args": [
"-y",
"@policyforge/mcp"
],
"env": {
"POLICYFORGE_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": {
"policyforge": {
"type": "http",
"url": "https://policyforge.co/api/mcp"
}
}
}Paste into .vscode/mcp.json in your project
{
"servers": {
"policyforge": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@policyforge/mcp"
],
"env": {
"POLICYFORGE_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.
ChatGPT connects only to servers on the internet:
https://policyforge.co/api/mcpMenu names can differ slightly by plan and over time.
Your choice stays on this device in a cookie; no account needed.
These 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 policyforge.co (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: POLICYFORGE_API_KEY
Either way works: install it on your computer or connect to the cloud version.
The GitHub repo last changed –, and the latest version (0.9.0) reached the registry 6 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, yontu
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.
Türkçe yazı denetimi: TDK kuralları, yapay zekâ izleri, metin türüne göre üslup.
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.
Generate legal policies — privacy policies, terms of service, cookie policies, refund policies, EULAs, disclaimers, and HIPAA Business Associate Agreements — directly from your AI coding tools (Claude Code, Cursor, Windsurf, Claude Desktop) via the Model Context Protocol.
Ask your agent *"generate a GDPR + CCPA privacy policy for this app"* and it fills the details from your codebase, calls PolicyForge, and drops the policy straight into your project.
Try it free: compliance audits (audit_compliance), drift checks (check_policy_freshness), and the scan rubric (get_disclosure_checklist) are unlimited and never touch your quota — start with *"audit our compliance — does the privacy policy cover everything this code actually does?"*. And the first time your account connects through MCP it gets 3 bonus policy generations on top of the free 2/month — enough to generate privacy, terms, and cookie policies for a new project in one conversation.
Pick the row that matches your client. If you're unsure, start with A.
| How you sign in | Best for | |
|---|---|---|
| A. Remote + OAuth | Browser sign-in, no key to copy | Clients that support OAuth (Claude, ChatGPT) |
| B. Remote + API key | Authorization header | Any client that can send a header |
| C. Local (npx) | POLICYFORGE_API_KEY env var | Running the server as a local process |
All three expose the same tools. A and B need nothing installed.
No key to copy, no config file to edit. You'll need a PolicyForge account first — https://policyforge.co, free, no card.
1. Add the server. The -s user makes it available in every project rather than only the directory you ran this in:
claude mcp add -s user --transport http policyforge https://policyforge.co/api/mcp
Note there is no --header. Omitting it is what makes the client use OAuth.
2. Restart your client. MCP config is read at startup, so a session that was already running won't see the new server.
3. Authenticate. Run /mcp, select policyforge, and press Enter:
policyforge · △ needs authentication
Your browser opens, you sign in and approve, and the client stores the token itself. You should land back at /mcp showing ✔ connected · 16 tools.
To confirm from the other side, a key named MCP · appears at https://policyforge.co/api-dashboard — that's the grant, and deleting it revokes access.
Other clients differ in step 3: some prompt on first tool use rather than offering an explicit authenticate action.
For clients that don't do OAuth yet. Create a key at https://policyforge.co/api-dashboard, then:
claude mcp add --transport http policyforge https://policyforge.co/api/mcp \
--header "Authorization: Bearer pf_your_key_here"
For clients with URL-based MCP config (Cursor, Windsurf, and others):
{
"mcpServers": { "policyforge": { "url": "https://policyforge.co/api/mcp", "headers": { "Authorization": "Bearer pf_your_key_here" } } } }
Prefer a local process? The server runs via npx — nothing to install globally. Uses an API key from the environment, which is what the MCP spec recommends for stdio transports.
claude mcp add policyforge \
--env POLICYFORGE_API_KEY=your_key_here \ -- npx -y @policyforge/mcp@latest
Add to your MCP config (.cursor/mcp.json, claude_desktop_config.json, etc.):
{
"mcpServers": { "policyforge": { "command": "npx", "args": ["-y", "@policyforge/mcp@latest"], "env": { "POLICYFORGE_API_KEY": "your_key_here" } } } }
On Windows, some clients need the command wrapped: set
"command": "cmd"and
"args": ["/c", "npx", "-y", "@policyforge/mcp@latest"].
See https://policyforge.co/mcp for one-click installs (Cursor/VS Code) and per-client instructions — with your API key pre-filled when signed in.
pf_) — rotate or create one at https://policyforge.co/api-dashboard and restart the client.generate_policy/regenerate_policy consume quota — audits and drift checks are free; ask your agent to run get_usage to see what's left.retry_after.claude mcp add -s user … makes it available everywhere.cmd wrapper above.More detail: https://policyforge.co/mcp#troubleshooting
| Tool | What it does |
|---|---|
generate_policy | Generate a policy and return its Markdown content + hosted URL. Consumes one policy from your quota. |
generate_baa | Generate a HIPAA Business Associate Agreement between a covered entity and a vendor handling PHI. Built from the clauses required by 45 CFR 164.504(e) and validated clause by clause. Pro plan; never publicly hosted. Consumes one policy from your quota. |
regenerate_policy | Re-run the AI engine with changed business context — same ID and hosted URL, previous content saved as a version. |
check_generation | Get the result of a generation that was still running when its tool returned a job ID (generation takes 40-60s; tools wait up to 45s). |
update_policy | Edit a policy in place with find/replace edits or full content — same ID and hosted URL, so published links keep working. |
audit_compliance | Gap analysis: compare what the code does (your scanned manifest) with what a policy discloses. |
check_policy_freshness | Drift detection: diff the current codebase scan against the manifest stored at generation time. |
list_policy_versions | Version history — a snapshot is saved before every update, regeneration, or restore. |
restore_policy_version | Roll a policy back to any previous version (itself reversible). |
list_policies | List policies on your account (filter by type/status, paginate). |
get_policy | Fetch a single policy by ID, including full content. |
delete_policy | Permanently delete a policy (its hosted URL stops working). |
get_usage | Check your tier and remaining generation quota before generating. |
get_disclosure_checklist | The codebase-scan rubric: which SDKs/patterns require disclosure and how findings map to generate_policy fields. |
get_integration_guide | Copy-paste embed/link instructions for Next.js, React, plain HTML, or WordPress. |
list_policy_types | List supported policy types, business types, and jurisdictions. |
Your agent can read your project — so policies come from what the code *actually does*, not what you remember it doing:
get_disclosure_checklist → agent scans dependencies, script tags, cookie writes, and outbound hosts against the rubric, and builds a stack manifest of what it foundgenerate_policy with the detected context + stack_manifest (stored server-side for drift detection)get_integration_guide → agent wires the hosted policy into your footercheck_policy_freshness reports the drift, audit_compliance shows the concrete gaps, and regenerate_policy fixes them — same hosted URL, no broken links, previous version restorablegenerate_policy inputsRequired: type, business_type, jurisdiction, company_name, contact_email
type — privacy_policy · terms_of_service · cookie_policy · refund_policy · eula · disclaimerbusiness_type — e-commerce · saas · healthcare · education · financial · fintech · real-estate · non-profit · consulting · media · mobile_app · otherjurisdiction — one or more of gdpr ccpa pipeda lgpd us eu ca uk au br global (comma-separate to combine, e.g. gdpr,ccpa)Optional context (improves output): website_url, service_description, data_collection[], third_party_integrations[], data_retention, user_accounts, payments, marketing, analytics, cookies, children_data, sells_data, target_audience[], security_measures[], governing_law, physical_address, dpo_email, consent_tracking, hosting_enabled.
generate_baa inputsA Business Associate Agreement is a contract between two named parties, not a published policy, so it takes its own tool and its own fields. Pro plan.
Required: acknowledge_contract (must be true), baa_direction, company_name, contact_email, both parties' legal names and addresses, baa_effective_date (YYYY-MM-DD), baa_services_description, baa_phi_types[], baa_permitted_uses[], baa_governing_law_state.
baa_direction — covered_entity_to_vendor (you are the practice issuing the agreement) or business_associate_to_client (you are the vendor offering it to a healthcare client)baa_phi_types[] — categories of PHI involved. Including "Substance use treatment records (42 CFR Part 2)" adds a Part 2 addendumbaa_permitted_uses[] — anything not listed here is *not* permitted by the agreement (45 CFR 164.504(e)(2)(i))Optional: baa_electronic_phi (default true), baa_uses_subcontractors (default false), baa_term_type, baa_term_end_date, baa_breach_notification_days (1–60, default 30), baa_return_or_destroy, baa_include_indemnification, baa_include_insurance, baa_insurance_amount.
Every generated agreement is checked against the 15 clauses 45 CFR 164.504(e) requires before it is returned; an incomplete draft is refused rather than handed back. The result is still a draft for counsel to review, and it is never published at a public URL.
Only needed for the local (npx) transport. Remote connections authenticate over OAuth or an Authorization header instead.
| Env var | Required | Default | Purpose |
|---|---|---|---|
POLICYFORGE_API_KEY | yes (local only) | — | Your PolicyForge API key. |
POLICYFORGE_API_URL | no | https://policyforge.co | Override the API base URL (self-host/testing). |
This server is a thin wrapper over the PolicyForge public REST API (/api/v1). Every tool maps to one authenticated HTTP request, so quota, rate limiting, and policy generation stay authoritative on the PolicyForge server — the MCP layer holds no secrets beyond your API key and no business logic of its own.
MIT