PrivacyPill
GDPR cookie banners with Consent Mode v2, plus a free scan of what loads before consent.
我该使用它吗
质量与安全性
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 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
}社区
证据