An MCP server for generating Google Slides and Docs from your data
Connect an AI agent to SourceToDocs over the Model Context Protocol and it can do almost everything you can do on the screens: create projects and documents, connect a data source, configure the template binding, set up split and delivery, and start runs. The one thing it leaves to a person is editing the Google Slides or Docs file itself.
SourceToDocs has an MCP server at https://app.sourcetodocs.com/api/mcp. Any client that speaks the Model Context Protocol, Claude Code, Claude Desktop, Cursor, VS Code, or an agent you build, can sign in with your account and work in SourceToDocs for you: create a project, connect an Airtable base, pick the template, bind the data, configure one deck per record, start the run and hand you the files. It does what you could do on the screens, through 85 tools, and nothing else.
The practical consequence: “set up a QBR deck per account from this base and run it for Q4” is one instruction to an agent, not twenty clicks. The agent reads the base’s columns, maps them to the template’s placeholders, sets the split on the account field, previews, runs, and reports the Drive folder. (If you are wondering how this differs from Claude’s own Google Slides and Docs features, we compared them here.)
Watch it: a branded report for every client, set up from Claude
Set it up in one line
There is no API key to create and no token to paste. You give the client the address, it opens your browser, you sign in and approve a consent screen, and the client holds an access that renews on its own for thirty days.
| Client | How |
|---|---|
| Claude Code | claude mcp add --transport http sourcetodocs https://app.sourcetodocs.com/api/mcp, then /mcp → sourcetodocs → Authenticate |
| Cursor | Add { "mcpServers": { "sourcetodocs": { "url": "https://app.sourcetodocs.com/api/mcp" } } } to mcp.json, sign in when asked |
| VS Code | Add { "servers": { "sourcetodocs": { "type": "http", "url": "https://app.sourcetodocs.com/api/mcp" } } } to mcp.json |
| Anything else | Any remote-HTTP MCP client with OAuth sign-in works the same way, browser-based clients included |
The consent screen names the app that is asking and where it will send you back to. Approving lets that app act as you, with exactly the access your role gives you, in every workspace you belong to. Runs it starts count against your plan like any other run.
What an agent can do
The 85 tools follow the path from nothing to a delivered file. They are grouped into five toolsets; a client that cannot search its tools can connect to only the groups it needs with ?toolsets=delivery on the address.
| Toolset | Tools | What it covers |
|---|---|---|
core | 19 | Workspaces, projects, documents, connecting accounts, and the product documentation (the agent can search and read it instead of guessing) |
data | 29 | Data sources and uploads, data sets and subsets, custom variables, column choices |
template | 15 | Which template file, its variables, blocks, slide mappings, variable formats, and the split |
delivery | 16 | Preview, start, status, retry and cancel runs; destinations and Drive folders; download links |
history | 6 | Versions, checkpoints, restore |
In practice that means an agent can, end to end:
- 01
Create the project and document
Name it, set the time zone, choose Google Slides or Google Docs.
- 02
Connect the data
Attach an Airtable base through a connected account, or upload a CSV; define the data set and subsets; read the columns and their types.
- 03
Bind the template
Pick the Slides or Docs file, list its placeholders, map blocks and slides to the data, set formats for numbers and dates.
- 04
Configure one file per record
Set the split key, filters and sort; choose a Drive folder and whether a PDF comes with each file; set the file-name pattern.
- 05
Run and hand back
Preview, start, watch status, retry what failed, and return a link to each delivered file.
What it leaves to you
The agent configures; it does not design. It cannot edit the Google Slides or Google Docs template file itself. Placeholders, layout, brand, the repeating slide: those are yours or your designer’s, in Google, as before. The agent reads what the template contains and binds data to it.
A few other steps only a person can take in a browser, such as granting Google access for a new account. For those the tool answers with a handoff link; the agent gives it to you, waits, and reads the object again when you say you are done.
Built for agents that make mistakes
| Safeguard | What it does |
|---|---|
| Revision tokens | Every write carries a token of what the agent has read. If anyone saved that section meanwhile, nothing is written and the agent is told what changed. No silent overwrites. |
| Checkpoints and restore | Before a multi-step change the agent sets a checkpoint; a restore can be dry-run first and lists exactly what it would change. |
| Documentation in the loop | docs_search and docs_read are tools, so the agent looks up what a status, setting or error code means instead of answering from memory. |
| Structured refusals | A refused call returns a code, a category, a hint and whether it is safe to retry. Plan limits and permission errors are explicit. |
| Tool call log | Every call, refused or not, is recorded under the connected app in your account; you see the latest fifty. Values are stored encrypted and not shown. |
| Per-app access | Each connected address is its own app with its own sign-in; revoke one without touching the others. |
Example instructions that work
- “List my workspaces and projects, then create a project called Client reporting in Europe/Lisbon.”
- “In that project, create a Google Slides document called Monthly report, attach the Airtable base Clients, and show me the columns.”
- “Bind the template at this Drive link, map
Client,SpendandLeadsto the placeholders, loop theChannelslinked records onto the channel slide.” - “Split one deck per client, deliver to the Reports 2026 folder, name files
{{ Client }} {{ _run.timestamp }}.” - “Preview the run, then start it and tell me when it finishes and where the files are.”
- “Something changed since last month, the run has three failures: read the error codes, explain them, retry what is retryable.”
How it relates to the n8n node and the REST surface
| MCP server | n8n node | API | |
|---|---|---|---|
| Who drives it | An AI agent, interactively | A workflow, on a trigger | Your code |
| Best for | Setting up and changing documents by conversation; investigating runs | Generating on events and schedules inside an existing automation | Embedding generation in your own system |
| Auth | OAuth consent, no key | Node credential | API key |
| Edits the template file | No | No | No |
Most teams use two: the MCP server to set a document up and keep it right, and n8n or the API to run it on a cadence.
FAQ
Is there an API key for the MCP server?
No. The server signs you in with OAuth: the client opens your browser, you approve, and it holds a short-lived access that it renews for thirty days. Revoke it under Connected apps in your account.
Can the agent change my Google Slides or Docs template?
No. It reads the template’s placeholders and binds data to them; the file itself is edited in Google by you or your designer. That boundary is deliberate: the design stays a human decision.
Which clients work?
Claude Code, Claude Desktop, Cursor, VS Code and any client that connects to a remote MCP server over HTTP with OAuth sign-in, including browser-based ones such as the MCP Inspector.
Does it work with the free plan?
Yes. The agent has the same access your role and plan give you on the screens; a run it starts counts like any other run, and a plan limit comes back as an explicit error with a hint.
Can I limit what the agent can do?
Yes, in two ways: connect with ?toolsets=delivery (or data, template, history) to offer only those groups plus core; and the workspace role you hold is the ceiling for everything the agent does.