BackBlog / AI Tools
6 min read·

Why I Build My Own MCP Servers for Google Ads and LinkedIn

An account can burn three days of budget on a broken ad set and nobody finds out until Monday. So I built my own MCP servers for Google Ads, LinkedIn and Sheets. Here is what actually changed.

Preston Vawdrey

Preston Vawdrey

SEO Marketing Expert

A laptop and a small network switch with routed cables on a desk lit by a warm lamp at dusk Three MCP servers now run against Google Ads, LinkedIn Ads and Sheets.

As someone who spends most of my week inside ad accounts at the API level, down in account IDs, pixel datasets and optimization goals, I got tired of one specific ritual.

Export the report. Paste it somewhere. Stare at it. Decide what to change.

So I built my own tools to stop doing that. Let's get into it.

Nobody Notices on a Wednesday

Every paid media person I know has the same weekly routine. Open the platform, export a report, paste it into a doc, stare at it, make some changes.

I did that for years.

Here's the problem with it. An account can burn three days of budget on a broken ad set between Tuesday and Friday, and nobody finds out until somebody opens a dashboard on Monday.

That gap between "something changed" and "somebody noticed" is where most wasted ad spend actually lives. Four days of nobody looking will cost you more than a mediocre strategy ever will.

What an MCP Server Actually Is (in plain English)

MCP stands for Model Context Protocol. In plain terms, it's a way to hand an AI assistant a set of tools it can go use on your behalf.

Instead of me exporting a Google Ads report and pasting it into a chat window, the assistant queries the account directly. Campaign performance, search terms, change history, conversion actions. It can make changes too, when I tell it to.

The important part is that the tools are MINE. I wrote them. I decide what they can reach and what they're allowed to touch.

What I Actually Built

Three of them run in production for my own work right now.

Google-Ads-MCP. Campaign and ad group performance, search term reports, change history, keyword management, budget and bid adjustments. It's deployed on Cloud Run and connected straight to my assistant.

linkedin-ads-mcp. Campaign performance, audience demographics, lead gen form results, creative performance. LinkedIn's reporting interface is the weakest of the major platforms, so this one paid for itself in about a week.

Google-Sheets-MCP. The least glamorous one, and the one I reach for most. Half of client reporting still lives in a spreadsheet somewhere, so reading and writing those directly closes the loop.

The Part I Didn't Expect

I built these to save time on reporting.

That happened.

It also turned out to be the smallest thing they did.

The real change is that the accounts get watched continuously now. I can ask a question at 9pm on a Sunday and get a real answer off live data.

A search term that started eating budget on Wednesday now gets caught on Wednesday.

That one shift has been worth MUCH more to me than every hour of reporting time I saved.

But Preston, There Are Tools That Already Do This

So why on earth would you build your own?

Yuhp. There are. I looked at all of them.

And for a lot of people, they're the right call. If you run one account and you want an AI looking at it, grab an off-the-shelf connector and get on with your day.

Here's where it stopped working for me.

When I run the server, the credentials are mine, the data path is mine, and client account data doesn't pass through somebody else's infrastructure on its way to an answer.

If you manage accounts you don't own, that distinction matters. And it gets harder to hand wave every single year.

There's a second reason and it's a bit more selfish. When the tool is mine, I can add the specific thing I need on a Tuesday afternoon. I file a feature request with myself and then I go do it.

What Was Harder Than I Expected (it was all authentication)

Authentication is most of the work. Google's OAuth flow, developer token approval, and the difference between a manager account and a client account will take you longer than the actual reporting logic. Budget for that. I'm serious.

The API is not the interface. Things that take one click in Ads Manager can take three API calls and a resource name you have to go look up first. The mental model is different, and it takes a while to stop fighting it.

Write access deserves fear. Reading data is safe. Changing budgets and statuses can cost you real money in an afternoon, and an assistant that can pause campaigns can absolutely pause the WRONG campaign. Anything that spends money or changes state sits behind an explicit confirmation. Every time.

So Should You Build Your Own?

I basically wrote this whole post to tell you it depends, but you came here for an answer so here's mine.

If you manage ads at any real scale and you can read API docs without flinching, yes. The leverage is real and the ceiling is high.

If you're running one small account, not yet. The setup cost is genuine, and an off-the-shelf connector will get you most of the way there for a fraction of the effort.

The question that actually decides it is simple. Do you care who else touches your client's data on its way to an answer?

If you do, building it yourself is the only version that solves it.

Thanks for Making It This Far

Most people don't read a post about OAuth flows all the way to the end, so genuinely, thank you.

If any of this sounds like something you'd rather just have running in your business, I offer SEO, marketing, and AI automation services.

I only accept a few new clients every year so I can keep an ownership level attitude to the clients I do have. But I have a few spots available for this year.

If you're interested in working with me, schedule a time to meet and discuss your business goals, and we can see if there's a good fit.

Signing off,

Preston

Marketing That Actually Moves the Needle

Occasional notes on SEO, paid ads, and growth, plus every new post, straight to your inbox. Written for operators, not skimmers.

No spam. Unsubscribe anytime.