gcs_bulk_ restore_ objectsInitiates a long-running bulk restore operation on the specified bucket.
Ask how big a bucket is and which folder is eating the space, read a CSV or look at an image where it sits, save a report to a bucket, bring back a deleted file, and check who can reach your data.
PopMCPGoogle Cloud Storage
Every tool in the Cloud Storage JSON API, Storage Transfer, Storage Insights and Storage Batch Operations, plus tools that read and upload files safely, copy large objects and change one person's access without touching anyone else's.
144 tools in the full catalog: 61 read and 83 write. 37 load by default, and the rest are found with tool search.
gcs_bulk_ restore_ objectsInitiates a long-running bulk restore operation on the specified bucket.
gcs_compose_ objectsConcatenates a list of existing objects into a new object in the same bucket.
gcs_delete_ objectDeletes an object and its metadata.
gcs_get_ objectRetrieves an object or its metadata.
gcs_list_ objectsRetrieves a list of objects matching the criteria.
gcs_move_ objectMoves the source object to the destination object in the same bucket.
gcs_restore_ objectRestores a soft-deleted object.
gcs_update_ objectPatches an object's metadata.
gcs_create_ bucketCreates a new bucket.
gcs_delete_ bucketDeletes an empty bucket.
gcs_get_ bucketReturns metadata for the specified bucket.
gcs_get_ bucket_ iam_ policyReturns an IAM policy for the specified bucket.
gcs_get_ bucket_ storage_ layoutReturns the storage layout configuration for the specified bucket.
gcs_list_ bucketsRetrieves a list of buckets for a given project.
gcs_restore_ bucketRestores a soft-deleted bucket.
gcs_test_ bucket_ iam_ permissionsTests a set of permissions on the given bucket to see which, if any, are held by the caller.
gcs_update_ bucketPatches a bucket.
gcs_copy_ objectCopy a file, within a bucket or to another one, of any size.
gcs_delete_ objectsDelete up to 100 files from one bucket, and get a result for each, so one missing file does not stop the rest.
gcs_get_ object_ linksGet links to a file: consoleUrl and browserUrl open for anyone signed in with access to it, and gsUrl names it for other tools.
gcs_grant_ bucket_ accessGive someone a role on a bucket without touching anyone else's access.
gcs_read_ objectRead a file's contents from a bucket.
gcs_revoke_ bucket_ accessRemove someone's role on a bucket without touching anyone else's access.
gcs_start_ resumable_ uploadStart an upload of up to 5 TiB and get back uploadUrl.
gcs_summarize_ bucketHow big a bucket or folder is: file count and total size, split by top-level folder and storage class.
gcs_upload_ objectCreate a file in a bucket, or replace one with the same name.
gcs_list_ managed_ foldersLists managed folders in the given bucket.
gcs_create_ folderCreates a new folder.
gcs_delete_ folderPermanently deletes a folder.
gcs_list_ foldersRetrieves a list of folders matching the criteria.
gcs_rename_ folderRenames a source folder to a destination folder.
gcs_create_ notification_ configCreates a notification subscription for a given bucket.
gcs_get_ bucket_ operationGets the latest state of a long-running operation.
gcs_list_ bucket_ operationsLists operations that match the specified filter in the request.
gcs_list_ hmac_ keysRetrieves a list of HMAC keys matching the criteria.
gcs_list_ notification_ configsRetrieves a list of notification subscriptions for a given bucket.
gcs_get_ project_ service_ accountGet the email address of this project's Google Cloud Storage service account.
gcs_copy_ object_ directCopies a source object to a destination object.
gcs_get_ object_ full_ contextRetrieves a specific object context with its extended data for a given object.
gcs_get_ object_ iam_ policyReturns an IAM policy for the specified object.
gcs_replace_ objectUpdates an object's metadata.
gcs_rewrite_ objectRewrites a source object to a destination object.
gcs_set_ object_ iam_ policyUpdates an IAM policy for the specified object.
gcs_test_ object_ iam_ permissionsTests a set of permissions on the given object to see which, if any, are held by the caller.
gcs_lock_ bucket_ retention_ policyLocks retention policy on a bucket.
gcs_relocate_ bucketInitiates a long-running Relocate Bucket operation on the specified bucket.
gcs_replace_ bucketUpdates a bucket.
gcs_set_ bucket_ iam_ policyUpdates an IAM policy for the specified bucket.
gcs_create_ managed_ folderCreates a new managed folder.
gcs_delete_ managed_ folderPermanently deletes a managed folder.
gcs_get_ managed_ folderReturns metadata of the specified managed folder.
gcs_get_ managed_ folder_ iam_ policyReturns an IAM policy for the specified managed folder.
gcs_set_ managed_ folder_ iam_ policyUpdates an IAM policy for the specified managed folder.
gcs_test_ managed_ folder_ iam_ permissionsTests a set of permissions on the given managed folder to see which, if any, are held by the caller.
gcs_update_ managed_ folderUpdates a managed folder using patch semantics.
gcs_create_ anywhere_ cacheCreates an Anywhere Cache instance.
gcs_create_ dataset_ configCreates a dataset configuration in a given project for a given location.
gcs_delete_ dataset_ configDeletes a dataset configuration in a given project for a given location.
gcs_disable_ anywhere_ cacheDisables an Anywhere Cache instance.
gcs_get_ anywhere_ cacheReturns the metadata of an Anywhere Cache instance.
gcs_get_ dataset_ configGets the dataset configuration in a given project for a given location.
gcs_link_ dataset_ configLinks a dataset to BigQuery in a given project for a given location.
gcs_list_ anywhere_ cachesReturns a list of Anywhere Cache instances of the bucket matching the criteria.
gcs_list_ dataset_ configsLists the dataset configurations in a given project for a given location.
gcs_pause_ anywhere_ cachePauses an Anywhere Cache instance.
gcs_resume_ anywhere_ cacheResumes a paused or disabled Anywhere Cache instance.
gcs_unlink_ dataset_ configUnlinks a dataset from BigQuery in a given project for a given location.
gcs_update_ anywhere_ cacheUpdates the config of an Anywhere Cache instance.
gcs_update_ dataset_ configUpdates a dataset configuration in a given project for a given location.
gcs_create_ bucket_ aclCreates a new ACL entry on the specified bucket.
gcs_create_ default_ object_ aclCreates a new default object ACL entry on the specified bucket.
gcs_create_ object_ aclCreates a new ACL entry on the specified object.
gcs_create_ transfer_ jobCreates a transfer job that runs periodically.
gcs_delete_ bucket_ aclPermanently deletes the ACL entry for the specified entity on the specified bucket.
gcs_delete_ default_ object_ aclPermanently deletes the default object ACL entry for the specified entity on the specified bucket.
gcs_delete_ folder_ recursiveDeletes a folder recursively.
gcs_delete_ object_ aclPermanently deletes the ACL entry for the specified entity on the specified object.
gcs_delete_ transfer_ jobDeletes a transfer job.
gcs_get_ bucket_ aclReturns the ACL entry for the specified entity on the specified bucket.
gcs_get_ default_ object_ aclReturns the default object ACL entry for the specified entity on the specified bucket.
gcs_get_ folderReturns metadata for the specified folder.
gcs_get_ object_ aclReturns the ACL entry for the specified entity on the specified object.
gcs_get_ transfer_ jobGets a transfer job.
gcs_list_ bucket_ aclsRetrieves ACL entries on the specified bucket.
gcs_list_ default_ object_ aclsRetrieves default object ACL entries on the specified bucket.
gcs_list_ object_ aclsRetrieves ACL entries on the specified object.
gcs_list_ transfer_ jobsLists transfer jobs.
gcs_replace_ bucket_ aclUpdates an ACL entry on the specified bucket.
gcs_replace_ default_ object_ aclUpdates a default object ACL entry on the specified bucket.
gcs_replace_ object_ aclUpdates an ACL entry on the specified object.
gcs_run_ transfer_ jobStarts a new operation for the specified transfer job.
gcs_update_ bucket_ aclPatches an ACL entry on the specified bucket.
gcs_update_ default_ object_ aclPatches a default object ACL entry on the specified bucket.
gcs_update_ object_ aclPatches an ACL entry on the specified object.
gcs_update_ transfer_ jobUpdates a transfer job.
gcs_cancel_ batch_ jobCancels a batch job.
gcs_cancel_ transfer_ operationCancels a transfer.
gcs_create_ agent_ poolCreates an agent pool resource.
gcs_create_ batch_ jobCreates a batch job.
gcs_create_ rapid_ cacheCreates a Rapid Cache instance.
gcs_create_ report_ configCreates a new inventory report configuration in a given project for a given location.
gcs_delete_ agent_ poolDeletes an agent pool.
gcs_delete_ batch_ jobDeletes a batch job.
gcs_delete_ report_ configDeletes an existing inventory report configuration in a given project for a given location.
gcs_disable_ rapid_ cacheDisables a Rapid Cache instance.
gcs_get_ agent_ poolGets an agent pool.
gcs_get_ batch_ jobGets a batch job.
gcs_get_ rapid_ cacheReturns the metadata of a Rapid Cache instance.
gcs_get_ report_ configGets the inventory report configuration in a given project for a given location.
gcs_get_ transfer_ operationGets the latest state of a long-running operation.
gcs_list_ agent_ poolsLists agent pools.
gcs_list_ batch_ jobsLists Jobs in a given project.
gcs_list_ rapid_ cachesReturns a list of Rapid Cache instances of the bucket.
gcs_list_ report_ configsLists the inventory report configurations in a given project for a given location.
gcs_list_ transfer_ operationsLists transfer operations.
gcs_pause_ transfer_ operationPauses a transfer operation.
gcs_resume_ transfer_ operationResumes a transfer operation that is paused.
gcs_update_ agent_ poolUpdates an existing agent pool resource.
gcs_update_ rapid_ cacheUpdates the configuration of a Rapid Cache instance.
gcs_update_ report_ configUpdates an existing inventory report configuration in a given project for a given location.
gcs_advance_ bucket_ relocationStarts asynchronous advancement of the relocate bucket operation in the case of required write downtime, to allow it to lock the bucket at the source location, and proceed with the bucket location swap.
gcs_cancel_ batch_ long_ running_ operationStarts asynchronous cancellation on a long-running operation.
gcs_cancel_ bucket_ operationStarts asynchronous cancellation on a long-running operation.
gcs_cancel_ insights_ operationStarts asynchronous cancellation on a long-running operation.
gcs_delete_ batch_ long_ running_ operationDeletes a long-running operation.
gcs_delete_ hmac_ keyDeletes an HMAC key.
gcs_delete_ insights_ operationDeletes a long-running operation.
gcs_delete_ notification_ configPermanently deletes a notification subscription.
gcs_get_ batch_ long_ running_ operationGets the latest state of a long-running operation.
gcs_get_ hmac_ keyRetrieves an HMAC key's metadata
gcs_get_ insights_ operationGets the latest state of a long-running operation.
gcs_get_ notification_ configView a notification configuration.
gcs_list_ batch_ long_ running_ operationsLists operations that match the specified filter in the request.
gcs_list_ insights_ operationsLists operations that match the specified filter in the request.
gcs_update_ hmac_ keyUpdates the state of an HMAC key.
gcs_get_ batch_ bucket_ operationGets a BucketOperation.
gcs_get_ batch_ locationGets information about a location.
gcs_get_ insights_ locationGets information about a location.
gcs_get_ report_ detailGets an existing inventory report in a given project for a given location.
gcs_list_ batch_ bucket_ operationsLists BucketOperations in a given project and job.
gcs_list_ batch_ locationsLists information about the supported locations for this service.
gcs_list_ insights_ locationsLists information about the supported locations for this service.
gcs_list_ report_ detailsLists the inventory reports in a given project for a given location.
gcs_get_ transfer_ service_ accountReturns the Google service account that is used by Storage Transfer Service to access buckets in the project where transfers run or in other projects.
Authorize once, then an endpoint your client signs into. Nothing to deploy, and nothing to install on the Google Cloud Storage side.
Make a service account in Google Cloud with a Storage role and copy its JSON key file into the connect form. The project comes from the file and there is no consent screen. If your organization blocks these keys, use your own OAuth client under More options.
{ "type": "service_account", "project_id": "…", "private_key": "…", … }1234567890-abc.apps.googleusercontent.com••••••••••••3f7aNew connections start read-only. Once an owner allows writes, upload_object, delete_objects and grant_bucket_access change data as soon as the AI calls them. Making anything public is refused until you agree. Google's IAM roles still decide what the account can reach.
Drop the PopMCP URL into Claude, ChatGPT, Claude Code, Codex or any other supported client. It signs in through PopMCP with OAuth, so your Google Cloud Storage credential never leaves the server.
app.popmcp.com/mcpAsk for something harmless before the agent changes anything. Writes run as soon as it calls them, so confirm it reads the right account first.
List my buckets and tell me which folder in the main one takes up the most space
gcs_list_bucketsok
Then just ask for the work
“List my buckets and tell me which folder in the main one takes up the most space”
“Open reports/2026/q3.csv in the finance bucket and summarize the totals”
“Save this summary as notes/october.md in the team bucket, but don't overwrite anything”
“Find the files deleted from the invoices folder this week and bring them back”
“Who has access to the client-assets bucket? Give sam@example.com read access too”
One hosted endpoint, registered once per client. The same tools and the same permissions, whichever window the request comes from.
Add the PopMCP URL under Customize → Connectors and the tools appear in every chat.
The same endpoint, registered in the browser. Nothing to install on the machine you are working from.
Register PopMCP as a custom connector, then let ChatGPT read and update the account.
Wire the endpoint into Codex or the Codex CLI when a task needs live business context, not a fixture.
Register the remote MCP server in OpenCode's config for terminal-first and scripted agent runs.
Add PopMCP as an MCP server in Z.ai's desktop app and work the account from the same window.
FAQ
What teams ask before putting Google Cloud Storage behind an AI client.
A service account key. Create a service account in the Google Cloud console, give it a Storage role, download a JSON key and copy the file into the connect form. There is no OAuth client to set up, no consent screen and no 7 day expiry, and the connection reaches only what that role allows. Google blocks these keys by default in organizations created on or after May 3, 2024. If yours does, ask an admin to allow them, or use your own OAuth client under More options.
Yes, with Google's own permissions. Grant the service account a role on that one bucket from the bucket's Permissions tab rather than on the project, and it reaches nothing else. It cannot list buckets then, so tell the AI the bucket name or set it as the default bucket under More options. The connection's project is only a default for listing and creating buckets, not a lock: any bucket the account can reach works by name.
Yes. read_object returns text in pieces, so a large log or CSV can be paged through without loading all of it, shows PNG, JPEG, GIF and WebP images, and says plainly when a file is binary, with links to open it. Small binary files can come back as base64 when asked for.
upload_object takes text, base64 or a public https link, up to 25 MiB. For anything larger, up to Google's 5 TiB limit, start_resumable_upload gives you a URL to send the file to directly, which lasts 7 days. Whoever holds that URL can upload to that one object, so treat it like a password. Uploading replaces a file with the same name unless ifNotExists is set.
PopMCP refuses any change that grants allUsers or allAuthenticatedUsers, or uses a public predefined ACL, until the AI confirms you agreed. It tells you what would become public first. New connections are read-only anyway, and a bucket with public access prevention turned on is refused by Google regardless.
On a connection made with a service account key, get_object_links makes a signed link anyone can open until it expires, from a minute up to 7 days. It cannot be taken back early except by deleting the key. On an OAuth connection, Google does not allow signing, so you get console and browser links that open for people signed in with access.
Storage Transfer Service, Storage Insights and Storage Batch Operations only accept Google's broad Google Cloud permission. A service account key works as long as it holds the roles those services need. On your own OAuth client, tick Transfers, inventory reports and batch jobs under More options when you connect.
Google returns the secret once, in the answer to that call, so it would land in your chat history and outlive the connection. Create HMAC keys in the Google Cloud console. Listing them, switching them off and deleting them all work here.
No. PopMCP hosts it and gives you a Streamable HTTP MCP URL. There is nothing to deploy, no callback URL to register, and no infrastructure to keep running or patch.
Any client that supports a remote Streamable HTTP MCP server: Claude Desktop, Claude Web, Claude Code, ChatGPT custom connectors, Codex and the Codex CLI, OpenCode and Z.ai's ZCode, as well as editors such as Cursor, Windsurf and Zed. Your client signs in to PopMCP with OAuth; the provider credential never leaves the server.
Connect Google Cloud Storage in PopMCP first, then run claude mcp add --transport http popmcp https://app.popmcp.com/mcp in a terminal. Inside Claude Code, run /mcp and sign in to PopMCP in the browser window it opens, ticking Google Cloud Storage on the consent screen. The Google Cloud Storage tools are then available in that session, and no Google Cloud Storage credential is stored on your machine.
Loading 144 tool definitions into every conversation burns context before the work starts. PopMCP loads a curated 37-tool set covering the everyday workflows and keeps the rest searchable, so your AI pulls a specialist tool only when a task needs it. Every tool stays searchable, and on Scale the owner can load the full catalog for a teammate's connection.
A tool is something your AI calls, and there are 144 here. A trigger is something PopMCP watches for you: 2 Google Cloud Storage events that can start work on the PopMCP side. Triggers never enter your AI client's context, and none of them ask you to paste a callback URL into Google Cloud Storage.
Launch a hosted MCP endpoint for Google Cloud Storage, keep tool access under control, and start testing real workflow prompts right away.