PrivacyPill

GDPR cookie banners with Consent Mode v2, plus a free scan of what loads before consent.

我该使用它吗

质量与安全性

A
描述质量
98%
模式完整度
76%
命名质量
98%
投毒风险
100%
权限匹配度
100%
协议合规性
100%

基于对工具定义和协议合规性的自动分析。

上下文开销

~3,084token 数(工具定义)
~2.8 KB典型响应大小
对注意力有显著影响(占 128k 上下文窗口的 2.41%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。

安装

一键安装

将以下内容添加到你的 `claude_desktop_config.json` 文件中:

{
  "mcpServers": {
    "privacypill": {
      "url": "https://privacy-pill-consent-studio.lovable.app/mcp"
    }
  }
}

远程端点

https://privacy-pill-consent-studio.lovable.app/mcpstreamable-http

它能做什么

工具清单

工具(9)

🟢 只读🟡 写入🔴 删除⚪ 未知
🟢pre_consent_scan(url)

Free, no sign-in: fetch a public page as a first-time visitor and report which trackers (GA4, Google Ads, Meta Pixel, TikTok, LinkedIn, Hotjar…) and cookies load before the visitor consents, which ones wait, which other sites the page contacts (e.g. Google Fonts), and how to fix it. Static check of the HTML and headers (no JavaScript runs). Limited to 10 checks per hour per visitor.

输入模式

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "minLength": 3,
      "maxLength": 2048,
      "description": "Public page to check, e.g. https://example.com"
    }
  },
  "required": [
    "url"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_account

Show the signed-in PrivacyPill account: number of sites, licenses (Free, Pro, Lifetime) and limits.

输入模式

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢list_sites

List the domains (sites) on the PrivacyPill account with their plan, site key and last scan score.

输入模式

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_site(site_id)

Get one site with its full cookie banner settings (layout, colours, categories, Consent Mode, languages).

输入模式

{
  "type": "object",
  "properties": {
    "site_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "Site id from list_sites or create_site."
    }
  },
  "required": [
    "site_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟡create_site(domain, name, design, license_id)

Add a domain to PrivacyPill and create its cookie banner. Returns the site, its banner settings and the embed snippet. The free plan includes one site.

输入模式

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "minLength": 3,
      "maxLength": 253,
      "description": "Bare domain such as example.com (no https://)."
    },
    "name": {
      "description": "Friendly name shown in the dashboard.",
      "type": "string",
      "maxLength": 80
    },
    "design": {
      "description": "Optional starting banner settings; see configure_banner for the fields.",
      "type": "object",
      "properties": {
        "preset": {
          "description": "Apply a built-in colour preset (see GET /presets).",
          "type": "string",
          "enum": [
            "mint",
            "slate",
            "paper",
            "lagoon",
            "sand",
            "contrast"
          ]
        },
        "layout": {
          "type": "string",
          "enum": [
            "pill",
            "bar",
            "modal",
            "corner"
          ]
        },
        "side": {
          "type": "string",
          "enum": [
            "left",
            "right"
          ]
        },
        "theme": {
          "type": "object",
          "properties": {
            "bg": {
              "type": "string",
              "pattern": "^#[0-9a-fA-F]{6}$"
            },
            "fg": {
              "type": "string",
              "pattern": "^#[0-9a-fA-F]{6}$"
            },
            "accent": {
              "type": "string",
              "pattern": "^#[0-9a-fA-F]{6}$"
            },
            "accentFg": {
              "type": "string",
              "pattern": "^#[0-9a-fA-F]{6}$"
            },
            "border": {
              "type": "string",
              "pattern": "^#[0-9a-fA-F]{6}$"
            },
            "radius": {
              "type": "number",
              "minimum": 0,
              "maximum": 40
            },
            "btnRadius": {
              "type": "number",
              "minimum": 0,
              "maximum": 999
            },
            "font": {
              "type": "string",
              "maxLength": 160,
              "pattern": "^[\\w\\s,'\"\\-.]+$"
            },
            "size": {
              "type": "number",
              "minimum": 12,
              "maximum": 18
            },
            "shadow": {
              "type": "boolean"
            },
            "buttons": {
              "type": "string",
              "enum": [
                "outline",
                "soft",
                "text"
              ]
            }
          }
        },
        "equal": {
          "description": "Give Accept and Reject equal visual weight.",
          "type": "boolean"
        },
        "reopen": {
          "description": "Show a small button to reopen preferences.",
          "type": "boolean"
        },
        "categories": {
          "type": "object",
          "properties": {
            "analytics": {
              "type": "boolean"
            },
            "marketing": {
              "type": "boolean"
            },
            "functional": {
              "type": "boolean"
            }
          }
        },
        "services": {
          "type": "object",
          "propertyNames": {
            "type": "string",
            "enum": [
              "necessary",
              "analytics",
              "marketing",
              "functional"
            ]
          },
          "additionalProperties": {
            "maxItems": 40,
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 120
            }
          }
        },
        "gcm": {
          "type": "object",
          "properties": {
            "enabled": {
              "type": "boolean"
            },
            "wait": {
              "type": "number",
              "minimum": 0,
              "maximum": 5000
            },
            "redact": {
              "type": "boolean"
            },
            "passthrough": {
              "type": "boolean"
            }
          }
        },
        "languages": {
          "minItems": 1,
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "en",
              "de",
              "fr",
              "nl",
              "es",
              "it"
            ]
          }
        },
        "defaultLang": {
          "type": "string",
          "enum": [
            "en",
            "de",
            "fr",
            "nl",
            "es",
            "it"
          ]
        },
        "autoLang": {
          "type": "boolean"
        },
        "overrides": {
          "type": "object",
          "propertyNames": {
            "type": "string",
            "enum": [
              "en",
              "de",
              "fr",
              "nl",
              "es",
              "it"
            ]
          },
          "additionalProperties": {
            "type": "object",
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 120
              },
              "body": {
                "type": "string",
                "maxLength": 600
              },
              "accept": {
                "type": "string",
                "maxLength": 40
              },
              "reject": {
                "type": "string",
                "maxLength": 40
              },
              "customize": {
                "type": "string",
                "maxLength": 40
              }
            }
          }
        },
        "policyUrl": {
          "type": "string",
          "maxLength": 500
        },
        "expiryDays": {
          "type": "integer",
          "minimum": 1,
          "maximum": 395
        },
        "reloadOnWithdraw": {
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "license_id": {
      "description": "Attach a Pro or Lifetime license from get_account.",
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  },
  "required": [
    "domain"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟡configure_banner(site_id, design, name, domain, geo_targeting, ...)

Update a site's cookie banner: layout (pill, bar, modal, corner), colours or preset, categories, services, Google Consent Mode v2, languages and wording. Only the fields you pass change. Pro sites can also switch geo-targeting and monthly rescans.

输入模式

{
  "type": "object",
  "properties": {
    "site_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "Site id from list_sites or create_site."
    },
    "design": {
      "description": "Banner fields to change; nested objects merge.",
      "type": "object",
      "properties": {
        "preset": {
          "description": "Apply a built-in colour preset (see GET /presets).",
          "type": "string",
          "enum": [
            "mint",
            "slate",
            "paper",
            "lagoon",
            "sand",
            "contrast"
          ]
        },
        "layout": {
          "type": "string",
          "enum": [
            "pill",
            "bar",
            "modal",
            "corner"
          ]
        },
        "side": {
          "type": "string",
          "enum": [
            "left",
            "right"
          ]
        },
        "theme": {
          "type": "object",
          "properties": {
            "bg": {
              "type": "string",
              "pattern": "^#[0-9a-fA-F]{6}$"
            },
            "fg": {
              "type": "string",
              "pattern": "^#[0-9a-fA-F]{6}$"
            },
            "accent": {
              "type": "string",
              "pattern": "^#[0-9a-fA-F]{6}$"
            },
            "accentFg": {
              "type": "string",
              "pattern": "^#[0-9a-fA-F]{6}$"
            },
            "border": {
              "type": "string",
              "pattern": "^#[0-9a-fA-F]{6}$"
            },
            "radius": {
              "type": "number",
              "minimum": 0,
              "maximum": 40
            },
            "btnRadius": {
              "type": "number",
              "minimum": 0,
              "maximum": 999
            },
            "font": {
              "type": "string",
              "maxLength": 160,
              "pattern": "^[\\w\\s,'\"\\-.]+$"
            },
            "size": {
              "type": "number",
              "minimum": 12,
              "maximum": 18
            },
            "shadow": {
              "type": "boolean"
            },
            "buttons": {
              "type": "string",
              "enum": [
                "outline",
                "soft",
                "text"
              ]
            }
          }
        },
        "equal": {
          "description": "Give Accept and Reject equal visual weight.",
          "type": "boolean"
        },
        "reopen": {
          "description": "Show a small button to reopen preferences.",
          "type": "boolean"
        },
        "categories": {
          "type": "object",
          "properties": {
            "analytics": {
              "type": "boolean"
            },
            "marketing": {
              "type": "boolean"
            },
            "functional": {
              "type": "boolean"
            }
          }
        },
        "services": {
          "type": "object",
          "propertyNames": {
            "type": "string",
            "enum": [
              "necessary",
              "analytics",
              "marketing",
              "functional"
            ]
          },
          "additionalProperties": {
            "maxItems": 40,
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 120
            }
          }
        },
        "gcm": {
          "type": "object",
          "properties": {
            "enabled": {
              "type": "boolean"
            },
            "wait": {
              "type": "number",
              "minimum": 0,
              "maximum": 5000
            },
            "redact": {
              "type": "boolean"
            },
            "passthrough": {
              "type": "boolean"
            }
          }
        },
        "languages": {
          "minItems": 1,
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "en",
              "de",
              "fr",
              "nl",
              "es",
              "it"
            ]
          }
        },
        "defaultLang": {
          "type": "string",
          "enum": [
            "en",
            "de",
            "fr",
            "nl",
            "es",
            "it"
          ]
        },
        "autoLang": {
          "type": "boolean"
        },
        "overrides": {
          "type": "object",
          "propertyNames": {
            "type": "string",
            "enum": [
              "en",
              "de",
              "fr",
              "nl",
              "es",
              "it"
            ]
          },
          "additionalProperties": {
            "type": "object",
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 120
              },
              "body": {
                "type": "string",
                "maxLength": 600
              },
              "accept": {
                "type": "string",
                "maxLength": 40
              },
              "reject": {
                "type": "string",
                "maxLength": 40
              },
              "customize": {
                "type": "string",
                "maxLength": 40
              }
            }
          }
        },
        "policyUrl": {
          "type": "string",
          "maxLength": 500
        },
        "expiryDays": {
          "type": "integer",
          "minimum": 1,
          "maximum": 395
        },
        "reloadOnWithdraw": {
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "name": {
      "type": "string",
      "maxLength": 80
    },
    "domain": {
      "description": "Change the domain (bare domain).",
      "type": "string",
      "minLength": 3,
      "maxLength": 253
    },
    "geo_targeting": {
      "description": "Pro: only show the banner where consent law applies.",
      "type": "boolean"
    },
    "monthly_rescan": {
      "description": "Pro: rescan the site automatically every month.",
      "type": "boolean"
    }
  },
  "required": [
    "site_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_embed_snippet(site_id)

Get the one-line PrivacyPill embed (with Consent Mode fallback) for a site, plus install steps for HTML, Google Tag Manager, WordPress, Shopify and Webflow.

输入模式

{
  "type": "object",
  "properties": {
    "site_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "Site id from list_sites or create_site."
    }
  },
  "required": [
    "site_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢run_compliance_scan(url, site_id, apply)

Scan a public web page for trackers (GA4, Google Ads, GTM, Meta Pixel, Hotjar, TikTok, LinkedIn…), cookies and Consent Mode setup, and get a 0–100 compliance score. Scans of your own domains are saved; apply=true adds the detected services to that site's banner.

输入模式

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "minLength": 3,
      "maxLength": 2048,
      "description": "Page URL, e.g. https://example.com"
    },
    "site_id": {
      "description": "Save the scan to this site (otherwise matched by domain).",
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "apply": {
      "description": "Add detected services and cookie names to the site's banner.",
      "type": "boolean"
    }
  },
  "required": [
    "url"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢list_banner_presets

List the built-in banner colour presets and the allowed layouts, languages and categories.

输入模式

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

社区

评价此服务器

证据

最近观测

已验证未记录版本9 个工具