Windsor.ai

Windsor.ai MCP Server — Connect AI Agents to Marketing Data

A Model Context Protocol server that lets AI agents and coding assistants like Claude, ChatGPT, Cursor and Copilot query live marketing, analytics, CRM and warehouse data from 325+ sources at Windsor.ai.

Quick connect

Add this to your MCP client config (Claude Desktop, Cursor, Manus, Windsurf, etc.):

{
  "mcpServers": {
    "windsor": {
      "url": "https://mcp.windsor.ai/"
    }
  }
}

The server uses OAuth 2.0 — your client will redirect you to Windsor.ai the first time you connect. No API key needed. If your client only supports API keys, pass your Windsor.ai key as Authorization: Bearer <key>.

Overview

Windsor.ai MCP Server is a remote MCP server that exposes Windsor.ai's 325+ data connectors to any MCP-compatible AI client. Use it to pull live marketing performance data, query your data warehouse, build dashboards, calculate ROAS, and combine multi-channel data — all from natural-language prompts in your AI assistant.

Compatible AI Clients

Windsor.ai MCP works with any MCP-compatible client, including:

Available Tools

Supported Data Sources

325+ marketing, advertising, analytics, e-commerce, CRM, and database sources. The full list is available at /datasources or by calling get_connectors(include_not_yet_connected=True). Highlights:

Advertising

Meta Ads (Facebook & Instagram) Google Ads Microsoft Ads (Bing) TikTok Ads LinkedIn Ads Snapchat Pinterest Reddit X/Twitter Amazon Ads Apple Search Ads Criteo Taboola Outbrain DV360 CM360 Search Ads 360 AdRoll StackAdapt The Trade Desk

Analytics & Search

Google Analytics 4 Adobe Analytics Mixpanel Amplitude Matomo Plausible PostHog Search Console Looker Metabase

Social Organic

Facebook Organic Instagram LinkedIn Organic TikTok Organic Pinterest Organic X Organic Threads YouTube Sprout Social

CRM & Marketing Automation

HubSpot Salesforce Pipedrive Dynamics 365 Zoho CRM Klaviyo Mailchimp ActiveCampaign Brevo Customer.io Iterable SendGrid Intercom Outreach Salesloft

E-commerce & Payments

Shopify Magento WooCommerce BigCommerce PrestaShop Stripe PayPal Klarna Recharge Recurly Chargebee Walmart TikTok Shop

Databases, Warehouses & Files

BigQuery Snowflake PostgreSQL MySQL Redshift MongoDB Firebolt SFTP Google Sheets Airtable Notion Amazon S3

Use Case Examples

Setup Instructions

Prerequisites

Server Endpoints

EndpointPurpose
POST /MCP Streamable HTTP endpoint
GET /sse/MCP SSE endpoint
GET /docsThis documentation page
GET /llms.txtShort summary for LLMs
GET /llms-full.txtFull reference for LLMs
GET /datasourcesLive JSON list of connector IDs
GET /healthHealth check
GET /.well-known/oauth-authorization-serverOAuth discovery metadata

Authentication

OAuth 2.0 (recommended)

The MCP server implements the full MCP OAuth flow. Clients that support MCP OAuth — including Claude, ChatGPT, Cursor and Manus — discover the endpoints automatically and walk the user through a one-time login at Windsor.ai. Dynamic Client Registration is supported.

API key

Pass a Windsor.ai API key as a Bearer token:

Authorization: Bearer <your_windsor_api_key>

Get an API key from your Windsor.ai account at onboard.windsor.ai.

Tool Reference

get_connectors

List Windsor.ai connectors and their connected accounts. By default returns only connectors with at least one connected account. Pass include_not_yet_connected=True to also include connectors the user can set up.

get_connector_authorization_url

Returns a URL the user can open in their browser to set up a connector. Always call get_connectors(include_not_yet_connected=True) first to get the correct connector ID. Works for both OAuth-based and manual-credential connectors.

get_options

For a connector and a set of accounts, return the available fields, the columns that can be used as date filters per table, and connector-specific options (e.g. attribution windows for Meta Ads).

get_fields

Get descriptions, types and tables for specific fields. Field types NUMERIC and PERCENT are metrics (aggregated); other types are dimensions.

get_data

Run a query against a connector. Supports date ranges (date_from/date_to or date_preset), account filtering, connector-specific options, and nested filter conditions.

Filter operators: eq, neq, gt, gte, lt, lte, contains, ncontains, null, notnull, in. Conditions can be nested with "and" and "or".

Warehouse connectors (mysql, postgresql, redshift, mongodb, snowflake, big_query) require date_filters when filtering by date.

Troubleshooting

Authentication failures (401)

"Requested data exceeds size limit"

Narrow the date range, reduce fields, filter by accounts, or add filter conditions to get_data.

"Connector requires specifying date filters"

Warehouse connectors need an explicit date_filters argument when filtering by date.