Skip to content
24 changes: 12 additions & 12 deletions .claude-mcp.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@
"datacloud.claude"
],
"env": {
"BIGQUERY_LOCATION": "",
"BIGQUERY_PROJECT": ""
"BIGQUERY_LOCATION": "${user_config.BIGQUERY_LOCATION}",
"BIGQUERY_PROJECT": "${user_config.PROJECT_ID}"
}
},
"datacloud_spanner_toolbox": {
Expand All @@ -55,7 +55,7 @@
"SPANNER_DATABASE": "",
"SPANNER_DIALECT": "",
"SPANNER_INSTANCE": "",
"SPANNER_PROJECT": ""
"SPANNER_PROJECT": "${user_config.PROJECT_ID}"
}
},
"datacloud_alloydb-postgres-admin_toolbox": {
Expand Down Expand Up @@ -88,8 +88,8 @@
"ALLOYDB_POSTGRES_INSTANCE": "",
"ALLOYDB_POSTGRES_IP_TYPE": "",
"ALLOYDB_POSTGRES_PASSWORD": "",
"ALLOYDB_POSTGRES_PROJECT": "",
"ALLOYDB_POSTGRES_REGION": "",
"ALLOYDB_POSTGRES_PROJECT": "${user_config.PROJECT_ID}",
"ALLOYDB_POSTGRES_REGION": "${user_config.GCP_REGION}",
"ALLOYDB_POSTGRES_USER": ""
}
},
Expand Down Expand Up @@ -122,8 +122,8 @@
"CLOUD_SQL_POSTGRES_INSTANCE": "",
"CLOUD_SQL_POSTGRES_IP_TYPE": "",
"CLOUD_SQL_POSTGRES_PASSWORD": "",
"CLOUD_SQL_POSTGRES_PROJECT": "",
"CLOUD_SQL_POSTGRES_REGION": "",
"CLOUD_SQL_POSTGRES_PROJECT": "${user_config.PROJECT_ID}",
"CLOUD_SQL_POSTGRES_REGION": "${user_config.GCP_REGION}",
"CLOUD_SQL_POSTGRES_USER": ""
}
},
Expand All @@ -139,7 +139,7 @@
"datacloud.claude"
],
"env": {
"DATAPLEX_PROJECT": ""
"DATAPLEX_PROJECT": "${user_config.PROJECT_ID}"
}
},
"datacloud_dataproc_toolbox": {
Expand All @@ -154,8 +154,8 @@
"datacloud.claude"
],
"env": {
"DATAPROC_PROJECT": "",
"DATAPROC_REGION": ""
"DATAPROC_PROJECT": "${user_config.PROJECT_ID}",
"DATAPROC_REGION": "${user_config.GCP_REGION}"
}
},
"datacloud_serverless-spark_toolbox": {
Expand All @@ -170,8 +170,8 @@
"datacloud.claude"
],
"env": {
"SERVERLESS_SPARK_PROJECT": "",
"SERVERLESS_SPARK_LOCATION": ""
"SERVERLESS_SPARK_PROJECT": "${user_config.PROJECT_ID}",
"SERVERLESS_SPARK_LOCATION": "${user_config.GCP_REGION}"
}
}
}
Expand Down
22 changes: 21 additions & 1 deletion .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,25 @@
"name": "data-agent-kit-starter-pack",
"version": "0.1.3",
"description": "This plugin provides a specialized suite of skills for data engineers and database practitioners working on Google Cloud. It acts as an expert assistant, allowing you to use natural language prompts in your preferred coding agent to architect complex data pipelines, transform data with dbt, write Spark and BigQuery SQL notebooks, and orchestrate end-to-end workflows across GCP's data ecosystem.",
"mcpServers": "./.claude-mcp.json"
"mcpServers": "./.claude-mcp.json",
"userConfig": {
"PROJECT_ID": {
"type": "string",
"title": "GCP Project ID",
"description": "Project ID when using the MCP toolbox for databases",
"required": true
},
"GCP_REGION": {
"type": "string",
"title": "GCP Region",
"description": "Region for GCP services (e.g. us-west1)",
"required": true
},
"BIGQUERY_LOCATION": {
"type": "string",
"title": "BigQuery Location",
"description": "Location for BigQuery datasets (e.g. US)",
"required": true
}
}
}
24 changes: 12 additions & 12 deletions .mcp.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@
"datacloud.codex"
],
"env": {
"BIGQUERY_LOCATION": "",
"BIGQUERY_PROJECT": ""
"BIGQUERY_LOCATION": "$BIGQUERY_LOCATION",
"BIGQUERY_PROJECT": "$PROJECT_ID"
}
},
"datacloud_spanner_toolbox": {
Expand All @@ -55,7 +55,7 @@
"SPANNER_DATABASE": "",
"SPANNER_DIALECT": "",
"SPANNER_INSTANCE": "",
"SPANNER_PROJECT": ""
"SPANNER_PROJECT": "$PROJECT_ID"
}
},
"datacloud_alloydb-postgres-admin_toolbox": {
Expand Down Expand Up @@ -88,8 +88,8 @@
"ALLOYDB_POSTGRES_INSTANCE": "",
"ALLOYDB_POSTGRES_IP_TYPE": "",
"ALLOYDB_POSTGRES_PASSWORD": "",
"ALLOYDB_POSTGRES_PROJECT": "",
"ALLOYDB_POSTGRES_REGION": "",
"ALLOYDB_POSTGRES_PROJECT": "$PROJECT_ID",
"ALLOYDB_POSTGRES_REGION": "$GCP_REGION",
"ALLOYDB_POSTGRES_USER": ""
}
},
Expand Down Expand Up @@ -122,8 +122,8 @@
"CLOUD_SQL_POSTGRES_INSTANCE": "",
"CLOUD_SQL_POSTGRES_IP_TYPE": "",
"CLOUD_SQL_POSTGRES_PASSWORD": "",
"CLOUD_SQL_POSTGRES_PROJECT": "",
"CLOUD_SQL_POSTGRES_REGION": "",
"CLOUD_SQL_POSTGRES_PROJECT": "$PROJECT_ID",
"CLOUD_SQL_POSTGRES_REGION": "$GCP_REGION",
"CLOUD_SQL_POSTGRES_USER": ""
}
},
Expand All @@ -139,7 +139,7 @@
"datacloud.codex"
],
"env": {
"DATAPLEX_PROJECT": ""
"DATAPLEX_PROJECT": "$PROJECT_ID"
}
},
"datacloud_dataproc_toolbox": {
Expand All @@ -154,8 +154,8 @@
"datacloud.codex"
],
"env": {
"DATAPROC_PROJECT": "",
"DATAPROC_REGION": ""
"DATAPROC_PROJECT": "$PROJECT_ID",
"DATAPROC_REGION": "$GCP_REGION"
}
},
"datacloud_serverless-spark_toolbox": {
Expand All @@ -170,8 +170,8 @@
"datacloud.codex"
],
"env": {
"SERVERLESS_SPARK_PROJECT": "",
"SERVERLESS_SPARK_LOCATION": ""
"SERVERLESS_SPARK_PROJECT": "$PROJECT_ID",
"SERVERLESS_SPARK_LOCATION": "$GCP_REGION"
}
}
}
Expand Down
19 changes: 19 additions & 0 deletions codex-install.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,15 @@ function Write-TextFileNoBom {

Write-Host "--- $pluginName Installer for Codex ---"

Write-Host "GCP Project ID"
$projectId = Read-Host "Project ID when using the MCP toolbox for databases"

Write-Host "GCP Region"
$gcpRegion = Read-Host "Region for GCP services (e.g. us-west1)"

Write-Host "BigQuery Location"
$bigqueryLocation = Read-Host "Location for BigQuery datasets (e.g. US)"

New-Item -ItemType Directory -Force -Path $pluginsRoot | Out-Null

if (Test-Path $installDir) {
Expand All @@ -85,6 +94,16 @@ if ($Tag) {
Write-Host "Removing git metadata..."
Remove-Item -LiteralPath (Join-Path $installDir ".git") -Recurse -Force

$targetMcp = Join-Path $installDir ".mcp.json"

# Apply configuration
Write-Host "Applying configuration..."
$mcpContent = Get-Content -LiteralPath $targetMcp -Raw
$mcpContent = $mcpContent.Replace('$PROJECT_ID', $projectId)
$mcpContent = $mcpContent.Replace('$GCP_REGION', $gcpRegion)
$mcpContent = $mcpContent.Replace('$BIGQUERY_LOCATION', $bigqueryLocation)
Write-TextFileNoBom -Path $targetMcp -Content $mcpContent

if (-not (Test-Path $marketplaceFile)) {
Write-Host "Creating new personal marketplace..."
Write-TextFileNoBom -Path $marketplaceFile -Content '{"name":"personal","plugins":[]}'
Expand Down
23 changes: 23 additions & 0 deletions codex-install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,17 @@ MARKETPLACE_FILE="$HOME/.agents/plugins/marketplace.json"

echo "--- $PLUGIN_NAME Installer for Codex ---"

# Prompt for configuration variables
echo "Please enter the following configuration variables:"
echo "GCP Project ID"
read -p "Project ID when using the MCP toolbox for databases: " PROJECT_ID </dev/tty

echo "GCP Region"
read -p "Region for GCP services (e.g. us-west1): " GCP_REGION </dev/tty

echo "BigQuery Location"
read -p "Location for BigQuery datasets (e.g. US): " BIGQUERY_LOCATION </dev/tty

# 1. Download/Update Plugin Content
mkdir -p "$HOME/.agents/plugins"
if [ -d "$INSTALL_DIR" ]; then
Expand All @@ -45,6 +56,18 @@ fi
echo "Removing git metadata..."
rm -rf "$INSTALL_DIR/.git"

echo "Applying configuration..."
node -e "
const fs = require('fs');
const path = require('path');
const mcpFilePath = path.join(process.argv[1], '.mcp.json');
let mcpContent = fs.readFileSync(mcpFilePath, 'utf8');
mcpContent = mcpContent.replace(/\\\$PROJECT_ID/g, process.argv[2]);
mcpContent = mcpContent.replace(/\\\$GCP_REGION/g, process.argv[3]);
mcpContent = mcpContent.replace(/\\\$BIGQUERY_LOCATION/g, process.argv[4]);
fs.writeFileSync(mcpFilePath, mcpContent);
" "$INSTALL_DIR" "$PROJECT_ID" "$GCP_REGION" "$BIGQUERY_LOCATION"

# 2. Register with Codex Marketplace
if [ ! -f "$MARKETPLACE_FILE" ]; then
echo "Creating new personal marketplace..."
Expand Down
43 changes: 30 additions & 13 deletions gemini-extension.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@
"datacloud.gemini-cli"
],
"env": {
"BIGQUERY_LOCATION": "",
"BIGQUERY_PROJECT": ""
"BIGQUERY_LOCATION": "$BIGQUERY_LOCATION",
"BIGQUERY_PROJECT": "$PROJECT_ID"
}
},
"datacloud_spanner_toolbox": {
Expand All @@ -52,7 +52,7 @@
"SPANNER_DATABASE": "",
"SPANNER_DIALECT": "",
"SPANNER_INSTANCE": "",
"SPANNER_PROJECT": ""
"SPANNER_PROJECT": "$PROJECT_ID"
}
},
"datacloud_alloydb-postgres-admin_toolbox": {
Expand Down Expand Up @@ -85,8 +85,8 @@
"ALLOYDB_POSTGRES_INSTANCE": "",
"ALLOYDB_POSTGRES_IP_TYPE": "",
"ALLOYDB_POSTGRES_PASSWORD": "",
"ALLOYDB_POSTGRES_PROJECT": "",
"ALLOYDB_POSTGRES_REGION": "",
"ALLOYDB_POSTGRES_PROJECT": "$PROJECT_ID",
"ALLOYDB_POSTGRES_REGION": "$GCP_REGION",
"ALLOYDB_POSTGRES_USER": ""
}
},
Expand Down Expand Up @@ -119,8 +119,8 @@
"CLOUD_SQL_POSTGRES_INSTANCE": "",
"CLOUD_SQL_POSTGRES_IP_TYPE": "",
"CLOUD_SQL_POSTGRES_PASSWORD": "",
"CLOUD_SQL_POSTGRES_PROJECT": "",
"CLOUD_SQL_POSTGRES_REGION": "",
"CLOUD_SQL_POSTGRES_PROJECT": "$PROJECT_ID",
"CLOUD_SQL_POSTGRES_REGION": "$GCP_REGION",
"CLOUD_SQL_POSTGRES_USER": ""
}
},
Expand All @@ -136,7 +136,7 @@
"datacloud.gemini-cli"
],
"env": {
"DATAPLEX_PROJECT": ""
"DATAPLEX_PROJECT": "$PROJECT_ID"
}
},
"datacloud_dataproc_toolbox": {
Expand All @@ -151,8 +151,8 @@
"datacloud.gemini-cli"
],
"env": {
"DATAPROC_PROJECT": "",
"DATAPROC_REGION": ""
"DATAPROC_PROJECT": "$PROJECT_ID",
"DATAPROC_REGION": "$GCP_REGION"
}
},
"datacloud_serverless-spark_toolbox": {
Expand All @@ -167,9 +167,26 @@
"datacloud.gemini-cli"
],
"env": {
"SERVERLESS_SPARK_PROJECT": "",
"SERVERLESS_SPARK_LOCATION": ""
"SERVERLESS_SPARK_PROJECT": "$PROJECT_ID",
"SERVERLESS_SPARK_LOCATION": "$GCP_REGION"
}
}
}
},
"settings": [
{
"name": "GCP Project ID",
"description": "Project ID when using the MCP toolbox for databases",
"envVar": "PROJECT_ID"
},
{
"name": "GCP Region",
"description": "Region for GCP services (e.g. us-west1)",
"envVar": "GCP_REGION"
},
{
"name": "BigQuery Location",
"description": "Location for BigQuery datasets (e.g. US)",
"envVar": "BIGQUERY_LOCATION"
}
]
}
Loading