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
Latest Blog Posts
- 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