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.
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>.
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.
Windsor.ai MCP works with any MCP-compatible client, including:
get_current_user — Return the authenticated user's profile (username, email).get_connectors — List Windsor.ai connectors and their connected accounts. Pass include_not_yet_connected=True to also see connectors the user can set up.get_connector_authorization_url — Get a browser link to connect or authorize a connector (OAuth or manual).get_options — List available fields, date filter columns, and connector-specific options.get_fields — Get descriptions, types and tables for specific fields.get_data — Run a query with date ranges, accounts, options, and nested filters.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:
| Endpoint | Purpose |
|---|---|
POST / | MCP Streamable HTTP endpoint |
GET /sse/ | MCP SSE endpoint |
GET /docs | This documentation page |
GET /llms.txt | Short summary for LLMs |
GET /llms-full.txt | Full reference for LLMs |
GET /datasources | Live JSON list of connector IDs |
GET /health | Health check |
GET /.well-known/oauth-authorization-server | OAuth discovery metadata |
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.
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.
get_connectorsList 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_urlReturns 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_optionsFor 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_fieldsGet descriptions, types and tables for specific fields. Field types
NUMERIC and PERCENT are metrics (aggregated); other
types are dimensions.
get_dataRun 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.
Bearer <token> with no quotes.Narrow the date range, reduce fields, filter by accounts, or add filter
conditions to get_data.
Warehouse connectors need an explicit date_filters argument
when filtering by date.