gcp-storage-mcp
Provides a comprehensive REST API for managing Google Cloud Storage buckets and blobs, including operations such as upload, download, copy, move, batch operations, signed URLs, storage analytics, and search/filter capabilities.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@gcp-storage-mcplist all buckets in my project"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
๐ Professional GCP Storage API
A comprehensive, enterprise-grade FastAPI server providing REST endpoints for Google Cloud Storage operations. Built with production-ready features including authentication, rate limiting, monitoring, caching, and structured logging.
โจ Features
๐ง Core API Features
Complete GCS Operations: Full REST API for buckets, blobs, and storage management
Batch Operations: Efficient bulk upload/delete operations
Storage Analytics: Comprehensive storage usage and performance metrics
Search & Filter: Advanced blob search and size-based filtering
Signed URLs: Temporary access URL generation with configurable expiration
Project Management: Multi-project support and project switching
๐ Security & Authentication
API Key Authentication: Secure API key-based authentication system
Rate Limiting: Configurable rate limiting with Redis support
CORS Protection: Configurable cross-origin resource sharing
Security Headers: Comprehensive security headers (CSP, HSTS, etc.)
Input Validation: Extensive request validation and sanitization
โก Performance & Monitoring
Intelligent Caching: In-memory caching with TTL and automatic invalidation
Request Tracking: Unique request IDs for complete request tracing
Metrics Collection: Built-in performance and usage metrics
Structured Logging: JSON-based structured logging with request context
Health Checks: Advanced health monitoring with dependency status
๐ก๏ธ Production Ready
Configuration Management: Environment-based configuration system
Error Handling: Comprehensive error responses with detailed context
Graceful Shutdown: Proper application lifecycle management
Documentation: Auto-generated OpenAPI documentation with examples
Monitoring Endpoints: Built-in metrics and health check endpoints
Related MCP server: Tencent Cloud COS MCP Server
๐ Usage
GCP Storage MCP can be used with Claude Desktop, Cursor, and more.
๐ฆ Claude Desktop
claude_desktop_config.json
"mcpServers": {
"gcp-storage-mcp": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/uysalserkan/gcp-storage-mcp",
"gcp-storage-mcp",
"--credential_path",
"your-credential-path.json"
]
},
...
}๐ฆ Cursor
.cursor/mcp.json
"mcpServers": {
"gcp-storage-mcp": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/uysalserkan/gcp-storage-mcp",
"gcp-storage-mcp",
"--credential_path",
"your-credential-path.json"
]
},
...
}๐ฆ Quick Start FastAPI
Prerequisites
Python 3.11+
Google Cloud SDK installed and configured
Active Google Cloud Project with Cloud Storage API enabled
Service Account with appropriate permissions
Installation
Clone and Setup
git clone https://github.com/your-username/gcp-storage-mcp.git
cd gcp-storage-mcp
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txtConfigure GCP Authentication
# Option 1: Service Account Key
export GOOGLE_APPLICATION_CREDENTIALS="path/to/service-account.json"
# Option 2: Application Default Credentials
gcloud auth application-default loginStart the Server
# Development mode
python gcp-storage-mcp/api.py
# Production mode with configuration
GCP_STORAGE_API_LOG_LEVEL=INFO python gcp-storage-mcp/api.pyAccess the API
API Documentation:
http://localhost:8000/docsHealth Check:
http://localhost:8000/healthMetrics:
http://localhost:8000/metrics
๐ API Documentation
Core Endpoints
Health & Monitoring
GET /health- Advanced health check with dependenciesGET /metrics- System performance metricsGET /- API information and navigation
Project Management
GET /projects- List all accessible GCP projectsGET /projects/current- Get current project ID
Bucket Operations
GET /buckets- List all bucketsPOST /buckets/{bucket_name}- Create bucketDELETE /buckets/{bucket_name}- Delete bucketGET /buckets/{bucket_name}- Get bucket informationGET /buckets/{bucket_name}/exists- Check bucket existence
Blob Operations
GET /buckets/{bucket_name}/blobs- List blobs with prefix filteringPOST /buckets/{bucket_name}/blobs/{blob_name}/upload- Upload blobPOST /buckets/{bucket_name}/blobs/{blob_name}/download- Download blobDELETE /buckets/{bucket_name}/blobs/{blob_name}- Delete blobGET /buckets/{bucket_name}/blobs/{blob_name}- Get blob informationGET /buckets/{bucket_name}/blobs/{blob_name}/url- Get public URLPOST /buckets/{bucket_name}/blobs/{blob_name}/signed-url- Generate signed URL
Advanced Operations
POST /buckets/{bucket_name}/blobs/{blob_name}/copy- Copy blobPOST /buckets/{bucket_name}/blobs/{blob_name}/move- Move blobPOST /buckets/{bucket_name}/batch/upload- Batch uploadPOST /buckets/{bucket_name}/batch/delete- Batch delete
Analytics & Search
GET /buckets/{bucket_name}/analytics/storage- Storage analyticsPOST /buckets/{bucket_name}/search- Search blobs by patternPOST /buckets/{bucket_name}/filter- Filter blobs by size
๐ง Usage Examples
Basic Operations
Authentication with API Key
curl -H "X-API-Key: your-api-key" \
-H "Content-Type: application/json" \
http://localhost:8000/healthList Buckets
curl -H "X-API-Key: your-api-key" \
http://localhost:8000/bucketsUpload a File
curl -X POST \
-H "X-API-Key: your-api-key" \
-H "Content-Type: application/json" \
-d '{"file_path": "/path/to/local/file.txt"}' \
http://localhost:8000/buckets/my-bucket/blobs/path/to/file.txt/uploadGenerate Signed URL
curl -X POST \
-H "X-API-Key: your-api-key" \
-H "Content-Type: application/json" \
-d '{"expiration_hours": 24, "method": "GET"}' \
http://localhost:8000/buckets/my-bucket/blobs/file.txt/signed-urlPython Client Example
import httpx
import asyncio
class GCPStorageClient:
def __init__(self, base_url: str, api_key: str):
self.base_url = base_url
self.headers = {"X-API-Key": api_key}
async def list_buckets(self):
async with httpx.AsyncClient() as client:
response = await client.get(
f"{self.base_url}/buckets",
headers=self.headers
)
return response.json()
async def upload_file(self, bucket: str, blob_name: str, file_path: str):
async with httpx.AsyncClient() as client:
response = await client.post(
f"{self.base_url}/buckets/{bucket}/blobs/{blob_name}/upload",
headers=self.headers,
json={"file_path": file_path}
)
return response.json()
# Usage
async def main():
client = GCPStorageClient("http://localhost:8000", "your-api-key")
# List buckets
buckets = await client.list_buckets()
print(f"Found {buckets['count']} buckets")
# Upload file
result = await client.upload_file(
"my-bucket",
"documents/file.pdf",
"/local/path/file.pdf"
)
print(f"Upload completed: {result}")
if __name__ == "__main__":
asyncio.run(main())๐ Monitoring & Observability
Health Monitoring
The API provides comprehensive health checks:
# Basic health check
curl http://localhost:8000/health
# Response includes:
# - Overall status
# - GCP connection status
# - Dependency health
# - Performance metrics
# - Uptime informationMetrics Collection
Built-in metrics endpoint provides:
curl http://localhost:8000/metrics
# Metrics include:
# - Request counts by endpoint
# - Response times
# - Error rates
# - Active requests
# - Cache hit ratesStructured Logging
All requests are logged with structured JSON:
{
"timestamp": "2024-01-15T10:30:00Z",
"level": "INFO",
"message": "Request completed",
"request_id": "550e8400-e29b-41d4-a716-446655440000",
"method": "GET",
"path": "/buckets",
"status_code": 200,
"duration_ms": 45.2,
"client_ip": "192.168.1.100"
}๐ Security Best Practices
Authentication
Use strong, randomly generated API keys
Rotate API keys regularly
Store keys securely (environment variables, secret managers)
CORS Configuration
# Restrict origins in production
GCP_STORAGE_API_ALLOWED_ORIGINS="https://yourdomain.com,https://app.yourdomain.com"Rate Limiting
# Configure appropriate limits
GCP_STORAGE_API_RATE_LIMIT_DEFAULT="1000/hour"
GCP_STORAGE_API_RATE_LIMIT_STORAGE="redis://secure-redis:6379"GCP Permissions
Minimum required IAM roles:
roles/storage.objectViewer- Read operationsroles/storage.objectCreator- Upload operationsroles/storage.admin- Full management (production)
๐ Performance Features
Intelligent Caching
Bucket Lists: Cached for 5 minutes
Bucket Info: Cached for 10 minutes
Blob URLs: Cached for 1 hour
Storage Analytics: Cached for 30 minutes
Automatic Invalidation: Cache cleared on data modifications
Request Optimization
Parallel Processing: Concurrent operations where possible
Batch Operations: Efficient bulk operations
Connection Pooling: Optimized GCP client connections
Request Tracking: Complete request lifecycle monitoring
๐งช Testing
# Install test dependencies
pip install pytest pytest-cov httpx
# Run tests
pytest tests/
# Run with coverage
pytest --cov=gcp-storage-mcp tests/
# Integration tests (requires GCP setup)
GCP_STORAGE_API_TEST_BUCKET="test-bucket" pytest tests/integration/๐ค Contributing
We welcome contributions! Please:
Fork the repository
Create a feature branch
Follow the existing code style
Add tests for new features
Update documentation
Submit a pull request
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
๐ Resources
API Documentation:
/docsendpoint (Swagger UI)Google Cloud Storage: Official Documentation
FastAPI: Official Documentation
Rate Limiting: SlowAPI Documentation
๐ Support
๐ Issues: GitHub Issues
๐ง Email: uysalserkan08@gmail.com
Status: โ Production Ready | Version: 1.0.0 | Last Updated: January 2025
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables AI assistants to interact with and manage Google Cloud Platform resources including Compute Engine, Cloud Run, Storage, BigQuery, and other GCP services through a standardized MCP interface.16MIT
- AlicenseBqualityDmaintenanceEnables interaction with Tencent Cloud Object Storage (COS) through MCP protocol. Supports file upload, download, deletion, listing objects, and generating temporary signed URLs for cloud storage management.524MIT
- Alicense-qualityFmaintenanceEnables interaction with AWS S3 through MCP, supporting bucket and object management, lifecycle configurations, tagging, policies, CORS settings, presigned URLs, and file uploads/downloads.3MIT
- FlicenseAqualityDmaintenanceProvides tools for interacting with MinIO and S3-compatible object storage through MCP clients like Claude. It enables comprehensive bucket and object management, including listing, creating, uploading, and generating presigned URLs.132
Related MCP Connectors
MCP server for interacting with the Supabase platform
An MCP server that let you interact with Cycloid.io Internal Development Portal and Platform
A MCP server built for developers enabling Git based project management with project and personalโฆ
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/uysalserkan/gcp-storage-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server