Open-source ad agent for LinkedIn Ads and Google Ads. Drafts campaigns, audiences and reports.
registry version 0.4.0
npm
npx -y adwarpnpm
npx -y adwarp@0.4.0Streamable HTTP
https://mcp.adwarp.dev/api/mcp
Pick your client — the config below is generated for this server (both local and hosted-endpoint forms). Copy respects the “Pin version” switch above.
claude_desktop_config.json
{
"mcpServers": {
"adwarp": {
"command": "npx",
"args": [
"-y",
"adwarp"
],
"env": {
"ADWARP_LINKEDIN_CLIENT_SECRET": "<YOUR_ADWARP_LINKEDIN_CLIENT_SECRET>",
"ADWARP_LINKEDIN_REFRESH_TOKEN": "<YOUR_ADWARP_LINKEDIN_REFRESH_TOKEN>"
}
}
}
}{
"mcpServers": {
"adwarp": {
"command": "npx",
"args": [
"-y",
"adwarp@0.4.0"
],
"env": {
"ADWARP_LINKEDIN_CLIENT_SECRET": "<YOUR_ADWARP_LINKEDIN_CLIENT_SECRET>",
"ADWARP_LINKEDIN_REFRESH_TOKEN": "<YOUR_ADWARP_LINKEDIN_REFRESH_TOKEN>"
}
}
}
}Remote (hosted) endpoint
https://mcp.adwarp.dev/api/mcp
Claude Desktop: Settings → Connectors → Add custom connector, paste this URL, and provide: X-Adwarp-Linkedin-Client-Id, X-Adwarp-Linkedin-Client-Secret, X-Adwarp-Linkedin-Refresh-Token.
Format verified against the official Claude Desktop docs ↗.
terminal
claude mcp add --env ADWARP_LINKEDIN_CLIENT_SECRET=<YOUR_ADWARP_LINKEDIN_CLIENT_SECRET> --env ADWARP_LINKEDIN_REFRESH_TOKEN=<YOUR_ADWARP_LINKEDIN_REFRESH_TOKEN> adwarp -- npx -y adwarp
claude mcp add --env ADWARP_LINKEDIN_CLIENT_SECRET=<YOUR_ADWARP_LINKEDIN_CLIENT_SECRET> --env ADWARP_LINKEDIN_REFRESH_TOKEN=<YOUR_ADWARP_LINKEDIN_REFRESH_TOKEN> adwarp -- npx -y adwarp@0.4.0
terminal
claude mcp add --transport http adwarp https://mcp.adwarp.dev/api/mcp --header "X-Adwarp-Linkedin-Client-Id: Bearer <YOUR_X_ADWARP_LINKEDIN_CLIENT_ID>" --header "X-Adwarp-Linkedin-Client-Secret: Bearer <YOUR_X_ADWARP_LINKEDIN_CLIENT_SECRET>" --header "X-Adwarp-Linkedin-Refresh-Token: Bearer <YOUR_X_ADWARP_LINKEDIN_REFRESH_TOKEN>"
Format verified against the official Claude Code docs ↗.
.cursor/mcp.json
{
"mcpServers": {
"adwarp": {
"command": "npx",
"args": [
"-y",
"adwarp"
],
"env": {
"ADWARP_LINKEDIN_CLIENT_SECRET": "<YOUR_ADWARP_LINKEDIN_CLIENT_SECRET>",
"ADWARP_LINKEDIN_REFRESH_TOKEN": "<YOUR_ADWARP_LINKEDIN_REFRESH_TOKEN>"
}
}
}
}{
"mcpServers": {
"adwarp": {
"command": "npx",
"args": [
"-y",
"adwarp@0.4.0"
],
"env": {
"ADWARP_LINKEDIN_CLIENT_SECRET": "<YOUR_ADWARP_LINKEDIN_CLIENT_SECRET>",
"ADWARP_LINKEDIN_REFRESH_TOKEN": "<YOUR_ADWARP_LINKEDIN_REFRESH_TOKEN>"
}
}
}
}.cursor/mcp.json (hosted endpoint)
{
"mcpServers": {
"adwarp": {
"url": "https://mcp.adwarp.dev/api/mcp",
"headers": {
"X-Adwarp-Linkedin-Client-Id": "<YOUR_X_ADWARP_LINKEDIN_CLIENT_ID>",
"X-Adwarp-Linkedin-Client-Secret": "<YOUR_X_ADWARP_LINKEDIN_CLIENT_SECRET>",
"X-Adwarp-Linkedin-Refresh-Token": "<YOUR_X_ADWARP_LINKEDIN_REFRESH_TOKEN>"
}
}
}
}Format verified against the official Cursor docs ↗.
.vscode/mcp.json
{
"servers": {
"adwarp": {
"command": "npx",
"args": [
"-y",
"adwarp"
],
"env": {
"ADWARP_LINKEDIN_CLIENT_SECRET": "<YOUR_ADWARP_LINKEDIN_CLIENT_SECRET>",
"ADWARP_LINKEDIN_REFRESH_TOKEN": "<YOUR_ADWARP_LINKEDIN_REFRESH_TOKEN>"
}
}
}
}{
"servers": {
"adwarp": {
"command": "npx",
"args": [
"-y",
"adwarp@0.4.0"
],
"env": {
"ADWARP_LINKEDIN_CLIENT_SECRET": "<YOUR_ADWARP_LINKEDIN_CLIENT_SECRET>",
"ADWARP_LINKEDIN_REFRESH_TOKEN": "<YOUR_ADWARP_LINKEDIN_REFRESH_TOKEN>"
}
}
}
}.vscode/mcp.json (hosted endpoint)
{
"servers": {
"adwarp": {
"type": "http",
"url": "https://mcp.adwarp.dev/api/mcp",
"headers": {
"X-Adwarp-Linkedin-Client-Id": "<YOUR_X_ADWARP_LINKEDIN_CLIENT_ID>",
"X-Adwarp-Linkedin-Client-Secret": "<YOUR_X_ADWARP_LINKEDIN_CLIENT_SECRET>",
"X-Adwarp-Linkedin-Refresh-Token": "<YOUR_X_ADWARP_LINKEDIN_REFRESH_TOKEN>"
}
}
}
}Format verified against the official VS Code docs ↗.
mcp_config.json
{
"mcpServers": {
"adwarp": {
"command": "npx",
"args": [
"-y",
"adwarp"
],
"env": {
"ADWARP_LINKEDIN_CLIENT_SECRET": "<YOUR_ADWARP_LINKEDIN_CLIENT_SECRET>",
"ADWARP_LINKEDIN_REFRESH_TOKEN": "<YOUR_ADWARP_LINKEDIN_REFRESH_TOKEN>"
}
}
}
}{
"mcpServers": {
"adwarp": {
"command": "npx",
"args": [
"-y",
"adwarp@0.4.0"
],
"env": {
"ADWARP_LINKEDIN_CLIENT_SECRET": "<YOUR_ADWARP_LINKEDIN_CLIENT_SECRET>",
"ADWARP_LINKEDIN_REFRESH_TOKEN": "<YOUR_ADWARP_LINKEDIN_REFRESH_TOKEN>"
}
}
}
}mcp_config.json (hosted endpoint)
{
"mcpServers": {
"adwarp": {
"serverUrl": "https://mcp.adwarp.dev/api/mcp",
"headers": {
"X-Adwarp-Linkedin-Client-Id": "<YOUR_X_ADWARP_LINKEDIN_CLIENT_ID>",
"X-Adwarp-Linkedin-Client-Secret": "<YOUR_X_ADWARP_LINKEDIN_CLIENT_SECRET>",
"X-Adwarp-Linkedin-Refresh-Token": "<YOUR_X_ADWARP_LINKEDIN_REFRESH_TOKEN>"
}
}
}
}Format verified against the official Windsurf docs ↗.
Defined in the server's official registry manifest. Required secrets are shown as <YOUR_…> placeholders in the configs above.
ADWARP_LINKEDIN_CLIENT_ID — LinkedIn app Client ID. Leave unset to use ~/.adwarp from adwarp auth loginADWARP_LINKEDIN_CLIENT_SECRET secret — LinkedIn app Client Secret. Leave unset to use ~/.adwarpADWARP_LINKEDIN_REFRESH_TOKEN secret — Refresh token from adwarp auth login. Leave unset to use ~/.adwarpADWARP_LINKEDIN_DEFAULT_ACCOUNT_ID — LinkedIn ad account used when a call omits oneX-Adwarp-Linkedin-Client-Id required header — Your LinkedIn app Client IDX-Adwarp-Linkedin-Client-Secret required secret header — Your LinkedIn app Client SecretX-Adwarp-Linkedin-Refresh-Token required secret header — Refresh token from adwarp auth loginX-Adwarp-Linkedin-Account-Id header — LinkedIn ad account used when a call omits oneDistributed as npm, Streamable HTTP, listed under Marketing & SEO. Review our MCP security guide before granting access to real data.
Run the install command shown above, then paste the config for your client (Claude Desktop, Claude Code, Cursor, VS Code or Windsurf) into its MCP settings and restart the client.
The MCP server itself is free to install. The source is public on https://github.com/adwarp-dev/adwarp. Any third-party service it calls may require its own API key and account.
Any MCP-compatible client can use it, including Claude Desktop, Claude Code, Cursor, VS Code, Windsurf and custom agents.
Publish this server? Link back with a badge on your README or site — copy either snippet.
Markdown
[](https://mcpnav.net/server/adwarp/)
HTML
<a href="https://mcpnav.net/server/adwarp/"><img src="https://mcpnav.net/badge/adwarp.svg" alt="Listed on MCPNav" height="20"></a>