Content
# GCP MCP Server
A comprehensive Model Context Protocol (MCP) server for managing everything in Google Cloud Platform (GCP). This server exposes over 250 tools across 23 GCP service domains, allowing AI models to manage infrastructure, deployments, data, and security.
## Features
- **TypeScript** implementation using the `@modelcontextprotocol/sdk`
- **OAuth2 Authentication** using a GCP Service Account JSON key
- **Dockerized** for easy deployment
- **Write Safety** controlled by environment variable
- **Comprehensive Coverage** of 23 service domains:
- Compute Engine, GKE, Cloud Storage
- IAM, BigQuery, Cloud Functions, Cloud Run
- VPC Networking, Load Balancing, Cloud SQL, Firestore
- Pub/Sub, Cloud Build, Artifact Registry
- Secret Manager, Cloud KMS, Cloud DNS
- Cloud Logging, Cloud Monitoring
- Resource Manager, Billing, App Engine, Service Usage
## Prerequisites
1. **GCP Project**: You need an active GCP project.
2. **Service Account**: Create a service account with the necessary permissions (e.g., Editor or specific roles for services you want to manage).
3. **JSON Key**: Generate and download a JSON key for the service account.
## Configuration
The server requires the following environment variables:
| Variable | Description | Required |
| --- | --- | --- |
| `GOOGLE_APPLICATION_CREDENTIALS` | Path to the service account JSON key file | Yes (or use inline) |
| `GCP_PROJECT_ID` | Your GCP Project ID | Yes |
| `GCP_REGION` | Default region (default: `us-central1`) | No |
| `GCP_ZONE` | Default zone (default: `us-central1-a`) | No |
| `GCP_ALLOW_WRITE` | Set to `true` to enable creating/modifying resources | No (default: `false`) |
### Alternative Credential Methods
Instead of a file path, you can pass the credentials inline:
- `GCP_SERVICE_ACCOUNT_KEY_JSON`: The raw JSON string of the key.
- `GCP_SERVICE_ACCOUNT_KEY_BASE64`: Base64 encoded string of the JSON key.
## Installation & Usage
### Method 1: Using Docker (Recommended)
Build the Docker image:
```bash
docker build -t gcp-mcp-server .
```
Run the container:
```bash
docker run -i --rm \
-v /path/to/your/key.json:/app/key.json \
-env GOOGLE_APPLICATION_CREDENTIALS=/app/key.json \
-env GCP_PROJECT_ID=your-project-id \
-env GCP_ALLOW_WRITE=true \
gcp-mcp-server
```
### Method 2: Running Locally
1. Install dependencies:
```bash
npm install
```
2. Build the project:
```bash
npm run build
```
3. Run the server:
```bash
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/key.json
export GCP_PROJECT_ID=your-project-id
export GCP_ALLOW_WRITE=true
npm start
```
## Integration with Claude Desktop
Add the following to your `claude_desktop_config.json`:
### Using Docker
```json
{
"mcpServers": {
"gcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-v",
"/path/to/your/key.json:/app/key.json",
"-e",
"GOOGLE_APPLICATION_CREDENTIALS=/app/key.json",
"-e",
"GCP_PROJECT_ID=your-project-id",
"-e",
"GCP_ALLOW_WRITE=true",
"gcp-mcp-server"
]
}
}
}
```
### Using Node
```json
{
"mcpServers": {
"gcp": {
"command": "node",
"args": [
"f:/MCP_Server/cloud_MCP/GCP_MCP_server/dist/index.js"
],
"env": {
"GOOGLE_APPLICATION_CREDENTIALS": "f:/path/to/your/key.json",
"GCP_PROJECT_ID": "your-project-id",
"GCP_ALLOW_WRITE": "true"
}
}
}
}
```
## License
MIT