Building a MCP Client in Google Apps Script
Learn how to communicate with Model Context Protocol (MCP) servers using Apps Script and UrlFetchApp. Incorporate the MCP client into Vertex AI tool calling.

I'm a Developer Relations Engineer at Google, focusing on Google Workspace. My work involves creating tools and supporting the open-source community.
Before Google, I had the opportunity to work with geospatial data at Descartes Labs and the US Geological Survey.
When I'm not coding, I'm usually running long distances in the mountains of Colorado.
Git LFS causes fatal errors in AI agents like Jules due to proxy conflicts and hook limitations. Learn why I abandoned LFS and migrated back to standard Git.
Learn how to communicate with Model Context Protocol (MCP) servers using Apps Script and UrlFetchApp. Incorporate the MCP client into Vertex AI tool calling.
Learn how to use the new built-in Vertex AI Advanced Service in Google Apps Script to access Gemini models directly, without the need for complex UrlFetchApp calls.
Learn about the @OnlyCurrentDoc annotation and currentonly scopes in Google Apps Script. Understand why and how to use them, along with their critical limitations regarding Advanced Services and external APIs.
I'm running the Crazy Mountain 100 in 2026! It's a rugged 100 miler in Montana that serves as a Hardrock qualifier.
Securely resolve Google Chat User IDs to emails without Domain-Wide Delegation. Use Service Account Impersonation and custom Admin roles.
The unofficial documentation for the Apps Script CacheService. Learn about key/value constraints, size limits, and the undocumented FIFO batch eviction policy.
The unofficial guide to Google Apps Script UrlFetchApp. Master authentication, fetchAll for parallelism, web scraping, and debugging "Address Unavailable".
Do not hardcode secrets in Google Apps Script. Use Properties Service or Google Cloud Secret Manager.
Securing Gmail AI agents against Prompt Injection and untrusted content using Google Cloud Model Armor.
Announcing the new MCP server for Google Workspace Developer Tools, providing AI agents with access to official documentation and API snippets.
Announcing the new React component for the Google Drive Picker, wrapping usage of the web component for easier integration.
Announcing the new Google Workspace Developer Tools extension for VS Code, working with Antigravity and providing OAuth2 scope linting and MCP support.
Last week I submitted a pull request to the DefinitelyTyped repository for the Google Drive Picker API. Not a big deal in itself, but these types are generated from the same source as the Google Drive Picker reference documentation and should be more correct and consistent than the community types that were previously in the DefinitelyTyped repository.
Recently I had to clarify some confusion around the title and name of a Google Form. Here is a quick explanation of the difference between the two.
Programmatically convert, open, and edit Microsoft Word .docx files in Google Apps Script using the Drive API and DocumentApp.
Save the date for the Google Workspace Developer Summits in 2024! Boston - September 12, 2024 and Berlin - September 17, 2024.
Use the Spreadsheets v4 API to set the importFunctionsExternalUrlAccessAllowed property to true and allow access to external URLs without requiring user consent.
Link shared about: How do I get access to the chrome.sidePanel API from the latest manifest v3? - Stack Overflow
You can use WebAssembly with Google Apps Script! This post will cover how to do that and provide a comprehensive guide on how to get started.
Link shared about: Alfalfa Uses More Water Than All Cities, Industries in Colorado River Basin