Open-source ad agent for LinkedIn Ads and Google Ads. Drafts campaigns, audiences and reports from Claude or any MCP client.
Setup
Choose your client, copy the config, then fill in any required environment variables.
Local
claude mcp add adwarp --env ADWARP_LINKEDIN_CLIENT_SECRET='<ADWARP_LINKEDIN_CLIENT_SECRET>' --env ADWARP_LINKEDIN_REFRESH_TOKEN='<ADWARP_LINKEDIN_REFRESH_TOKEN>' -- npx -y adwarp~/.codex/config.toml
[mcp_servers.adwarp]
command = "npx"
args = ["-y", "adwarp"]
env = { ADWARP_LINKEDIN_CLIENT_SECRET = "<ADWARP_LINKEDIN_CLIENT_SECRET>", ADWARP_LINKEDIN_REFRESH_TOKEN = "<ADWARP_LINKEDIN_REFRESH_TOKEN>" }
# codex mcp add adwarp --env ADWARP_LINKEDIN_CLIENT_SECRET='<ADWARP_LINKEDIN_CLIENT_SECRET>' --env ADWARP_LINKEDIN_REFRESH_TOKEN='<ADWARP_LINKEDIN_REFRESH_TOKEN>' -- npx -y adwarp~/.cursor/mcp.json
{
"mcpServers": {
"adwarp": {
"command": "npx",
"args": [
"-y",
"adwarp"
],
"env": {
"ADWARP_LINKEDIN_CLIENT_SECRET": "<ADWARP_LINKEDIN_CLIENT_SECRET>",
"ADWARP_LINKEDIN_REFRESH_TOKEN": "<ADWARP_LINKEDIN_REFRESH_TOKEN>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"adwarp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"adwarp"
],
"env": {
"ADWARP_LINKEDIN_CLIENT_SECRET": "<ADWARP_LINKEDIN_CLIENT_SECRET>",
"ADWARP_LINKEDIN_REFRESH_TOKEN": "<ADWARP_LINKEDIN_REFRESH_TOKEN>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"adwarp": {
"command": "npx",
"args": [
"-y",
"adwarp"
],
"env": {
"ADWARP_LINKEDIN_CLIENT_SECRET": "<ADWARP_LINKEDIN_CLIENT_SECRET>",
"ADWARP_LINKEDIN_REFRESH_TOKEN": "<ADWARP_LINKEDIN_REFRESH_TOKEN>"
}
}
}
}claude_desktop_config.json
{
"mcpServers": {
"adwarp": {
"command": "npx",
"args": [
"-y",
"adwarp"
],
"env": {
"ADWARP_LINKEDIN_CLIENT_SECRET": "<ADWARP_LINKEDIN_CLIENT_SECRET>",
"ADWARP_LINKEDIN_REFRESH_TOKEN": "<ADWARP_LINKEDIN_REFRESH_TOKEN>"
}
}
}
}.trae/mcp.json
{
"mcpServers": {
"adwarp": {
"command": "npx",
"args": [
"-y",
"adwarp"
],
"env": {
"ADWARP_LINKEDIN_CLIENT_SECRET": "<ADWARP_LINKEDIN_CLIENT_SECRET>",
"ADWARP_LINKEDIN_REFRESH_TOKEN": "<ADWARP_LINKEDIN_REFRESH_TOKEN>"
}
}
}
}Remote
claude mcp add --transport http adwarp https://mcp.adwarp.dev/api/mcp --header 'X-Adwarp-Linkedin-Client-Id: <X_ADWARP_LINKEDIN_CLIENT_ID>' --header 'X-Adwarp-Linkedin-Client-Secret: <X_ADWARP_LINKEDIN_CLIENT_SECRET>' --header 'X-Adwarp-Linkedin-Refresh-Token: <X_ADWARP_LINKEDIN_REFRESH_TOKEN>'~/.codex/config.toml
[mcp_servers.adwarp]
url = "https://mcp.adwarp.dev/api/mcp"
http_headers = { X-Adwarp-Linkedin-Client-Id = "<X_ADWARP_LINKEDIN_CLIENT_ID>", X-Adwarp-Linkedin-Client-Secret = "<X_ADWARP_LINKEDIN_CLIENT_SECRET>", X-Adwarp-Linkedin-Refresh-Token = "<X_ADWARP_LINKEDIN_REFRESH_TOKEN>" }
# codex mcp add adwarp --url https://mcp.adwarp.dev/api/mcp~/.cursor/mcp.json
{
"mcpServers": {
"adwarp": {
"url": "https://mcp.adwarp.dev/api/mcp",
"headers": {
"X-Adwarp-Linkedin-Client-Id": "<X_ADWARP_LINKEDIN_CLIENT_ID>",
"X-Adwarp-Linkedin-Client-Secret": "<X_ADWARP_LINKEDIN_CLIENT_SECRET>",
"X-Adwarp-Linkedin-Refresh-Token": "<X_ADWARP_LINKEDIN_REFRESH_TOKEN>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"adwarp": {
"type": "http",
"url": "https://mcp.adwarp.dev/api/mcp",
"headers": {
"X-Adwarp-Linkedin-Client-Id": "<X_ADWARP_LINKEDIN_CLIENT_ID>",
"X-Adwarp-Linkedin-Client-Secret": "<X_ADWARP_LINKEDIN_CLIENT_SECRET>",
"X-Adwarp-Linkedin-Refresh-Token": "<X_ADWARP_LINKEDIN_REFRESH_TOKEN>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"adwarp": {
"httpUrl": "https://mcp.adwarp.dev/api/mcp",
"headers": {
"X-Adwarp-Linkedin-Client-Id": "<X_ADWARP_LINKEDIN_CLIENT_ID>",
"X-Adwarp-Linkedin-Client-Secret": "<X_ADWARP_LINKEDIN_CLIENT_SECRET>",
"X-Adwarp-Linkedin-Refresh-Token": "<X_ADWARP_LINKEDIN_REFRESH_TOKEN>"
}
}
}
}claude_desktop_config.json · Customize › Connectors › Add custom connector
{
"mcpServers": {
"adwarp": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp.adwarp.dev/api/mcp",
"--header",
"X-Adwarp-Linkedin-Client-Id:<X_ADWARP_LINKEDIN_CLIENT_ID>",
"--header",
"X-Adwarp-Linkedin-Client-Secret:<X_ADWARP_LINKEDIN_CLIENT_SECRET>",
"--header",
"X-Adwarp-Linkedin-Refresh-Token:<X_ADWARP_LINKEDIN_REFRESH_TOKEN>"
]
}
}
}.trae/mcp.json
{
"mcpServers": {
"adwarp": {
"url": "https://mcp.adwarp.dev/api/mcp",
"headers": {
"X-Adwarp-Linkedin-Client-Id": "<X_ADWARP_LINKEDIN_CLIENT_ID>",
"X-Adwarp-Linkedin-Client-Secret": "<X_ADWARP_LINKEDIN_CLIENT_SECRET>",
"X-Adwarp-Linkedin-Refresh-Token": "<X_ADWARP_LINKEDIN_REFRESH_TOKEN>"
}
}
}
}Environment variables
ADWARP_LINKEDIN_CLIENT_SECRETADWARP_LINKEDIN_REFRESH_TOKEN
Replace the placeholders with your own credentials and keep them out of version control.