diff --git a/.claude-mcp.json b/.claude-mcp.json index 408663a..ab77c04 100644 --- a/.claude-mcp.json +++ b/.claude-mcp.json @@ -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": { @@ -55,7 +55,7 @@ "SPANNER_DATABASE": "", "SPANNER_DIALECT": "", "SPANNER_INSTANCE": "", - "SPANNER_PROJECT": "" + "SPANNER_PROJECT": "${user_config.PROJECT_ID}" } }, "datacloud_alloydb-postgres-admin_toolbox": { @@ -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": "" } }, @@ -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": "" } }, @@ -139,7 +139,7 @@ "datacloud.claude" ], "env": { - "DATAPLEX_PROJECT": "" + "DATAPLEX_PROJECT": "${user_config.PROJECT_ID}" } }, "datacloud_dataproc_toolbox": { @@ -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": { @@ -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}" } } } diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 69b890d..5ac5806 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -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 + } + } } diff --git a/.mcp.json b/.mcp.json index 9693cd8..8130f28 100644 --- a/.mcp.json +++ b/.mcp.json @@ -36,8 +36,8 @@ "datacloud.codex" ], "env": { - "BIGQUERY_LOCATION": "", - "BIGQUERY_PROJECT": "" + "BIGQUERY_LOCATION": "$BIGQUERY_LOCATION", + "BIGQUERY_PROJECT": "$PROJECT_ID" } }, "datacloud_spanner_toolbox": { @@ -55,7 +55,7 @@ "SPANNER_DATABASE": "", "SPANNER_DIALECT": "", "SPANNER_INSTANCE": "", - "SPANNER_PROJECT": "" + "SPANNER_PROJECT": "$PROJECT_ID" } }, "datacloud_alloydb-postgres-admin_toolbox": { @@ -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": "" } }, @@ -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": "" } }, @@ -139,7 +139,7 @@ "datacloud.codex" ], "env": { - "DATAPLEX_PROJECT": "" + "DATAPLEX_PROJECT": "$PROJECT_ID" } }, "datacloud_dataproc_toolbox": { @@ -154,8 +154,8 @@ "datacloud.codex" ], "env": { - "DATAPROC_PROJECT": "", - "DATAPROC_REGION": "" + "DATAPROC_PROJECT": "$PROJECT_ID", + "DATAPROC_REGION": "$GCP_REGION" } }, "datacloud_serverless-spark_toolbox": { @@ -170,8 +170,8 @@ "datacloud.codex" ], "env": { - "SERVERLESS_SPARK_PROJECT": "", - "SERVERLESS_SPARK_LOCATION": "" + "SERVERLESS_SPARK_PROJECT": "$PROJECT_ID", + "SERVERLESS_SPARK_LOCATION": "$GCP_REGION" } } } diff --git a/codex-install.ps1 b/codex-install.ps1 index 6a900ab..5289059 100644 --- a/codex-install.ps1 +++ b/codex-install.ps1 @@ -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) { @@ -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":[]}' diff --git a/codex-install.sh b/codex-install.sh index cad675c..34c4561 100755 --- a/codex-install.sh +++ b/codex-install.sh @@ -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