From 67b4f6e2438f036bd7e745303d3a0ceb62d4058a Mon Sep 17 00:00:00 2001 From: Staging-Devin AI <166158716+staging-devin-ai-integration[bot]@users.noreply.github.com> Date: Tue, 8 Sep 2026 00:11:48 +0000 Subject: [PATCH] Default the Datadog, New Relic and Amplitude MCP hosts to the US region The region variables introduced in #5 now carry ${VAR:-default} so the plugins connect without any setup; validate.py checks only the variable name of a defaulted placeholder. Co-Authored-By: Mokshit Jain --- plugins/amplitude/.devin-plugin/plugin.json | 2 +- plugins/datadog-remote/.devin-plugin/plugin.json | 2 +- plugins/datadog/.devin-plugin/plugin.json | 2 +- plugins/newrelic-remote/.devin-plugin/plugin.json | 2 +- plugins/newrelic/.devin-plugin/plugin.json | 2 +- scripts/validate.py | 11 +++++++++-- 6 files changed, 14 insertions(+), 7 deletions(-) diff --git a/plugins/amplitude/.devin-plugin/plugin.json b/plugins/amplitude/.devin-plugin/plugin.json index 3184c1d..29c71b6 100644 --- a/plugins/amplitude/.devin-plugin/plugin.json +++ b/plugins/amplitude/.devin-plugin/plugin.json @@ -10,7 +10,7 @@ ], "mcpServers": { "amplitude": { - "url": "https://${AMPLITUDE_MCP_DOMAIN}/mcp" + "url": "https://${AMPLITUDE_MCP_DOMAIN:-mcp.amplitude.com}/mcp" } } } diff --git a/plugins/datadog-remote/.devin-plugin/plugin.json b/plugins/datadog-remote/.devin-plugin/plugin.json index bd340e5..0ff7687 100644 --- a/plugins/datadog-remote/.devin-plugin/plugin.json +++ b/plugins/datadog-remote/.devin-plugin/plugin.json @@ -10,7 +10,7 @@ ], "mcpServers": { "datadog-remote": { - "url": "https://${DATADOG_DD_MCP_DOMAIN}/api/unstable/mcp-server/mcp?toolsets=core,apm,dbm,software-delivery&omit_tools=apm_search_spans,apm_search_watchdog_stories,apm_get_watchdog_story,semantic_search_change_stories,apm_search_recommendations,apm_get_recommendation,get_datadog_database_recommendations,optimize_datadog_database_query,update_datadog_flaky_test_states,get_datadog_code_coverage_branch_summary,get_datadog_code_coverage_commit_summary,get_datadog_code_coverage_pr_summary,get_datadog_code_coverage_files,get_datadog_test_optimization_settings,get_datadog_flaky_tests_management_policies,search_dora_deployments,aggregate_dora_deployments,search_dora_events,aggregate_dora_events,retry_datadog_ci_job,search_datadog_test_events,aggregate_datadog_test_events,search_pr_insights,get_dora_fields,get_prs_by_head_branch" + "url": "https://${DATADOG_DD_MCP_DOMAIN:-mcp.datadoghq.com}/api/unstable/mcp-server/mcp?toolsets=core,apm,dbm,software-delivery&omit_tools=apm_search_spans,apm_search_watchdog_stories,apm_get_watchdog_story,semantic_search_change_stories,apm_search_recommendations,apm_get_recommendation,get_datadog_database_recommendations,optimize_datadog_database_query,update_datadog_flaky_test_states,get_datadog_code_coverage_branch_summary,get_datadog_code_coverage_commit_summary,get_datadog_code_coverage_pr_summary,get_datadog_code_coverage_files,get_datadog_test_optimization_settings,get_datadog_flaky_tests_management_policies,search_dora_deployments,aggregate_dora_deployments,search_dora_events,aggregate_dora_events,retry_datadog_ci_job,search_datadog_test_events,aggregate_datadog_test_events,search_pr_insights,get_dora_fields,get_prs_by_head_branch" } } } diff --git a/plugins/datadog/.devin-plugin/plugin.json b/plugins/datadog/.devin-plugin/plugin.json index a3eee3f..95585a6 100644 --- a/plugins/datadog/.devin-plugin/plugin.json +++ b/plugins/datadog/.devin-plugin/plugin.json @@ -10,7 +10,7 @@ ], "mcpServers": { "datadog": { - "url": "https://${DATADOG_DD_MCP_DOMAIN}/api/unstable/mcp-server/mcp?toolsets=core,apm,dbm,software-delivery&omit_tools=apm_search_spans,apm_search_watchdog_stories,apm_get_watchdog_story,semantic_search_change_stories,apm_search_recommendations,apm_get_recommendation,get_datadog_database_recommendations,optimize_datadog_database_query,update_datadog_flaky_test_states,get_datadog_code_coverage_branch_summary,get_datadog_code_coverage_commit_summary,get_datadog_code_coverage_pr_summary,get_datadog_code_coverage_files,get_datadog_test_optimization_settings,get_datadog_flaky_tests_management_policies,search_dora_deployments,aggregate_dora_deployments,search_dora_events,aggregate_dora_events,retry_datadog_ci_job,search_datadog_test_events,aggregate_datadog_test_events,search_pr_insights,get_dora_fields,get_prs_by_head_branch", + "url": "https://${DATADOG_DD_MCP_DOMAIN:-mcp.datadoghq.com}/api/unstable/mcp-server/mcp?toolsets=core,apm,dbm,software-delivery&omit_tools=apm_search_spans,apm_search_watchdog_stories,apm_get_watchdog_story,semantic_search_change_stories,apm_search_recommendations,apm_get_recommendation,get_datadog_database_recommendations,optimize_datadog_database_query,update_datadog_flaky_test_states,get_datadog_code_coverage_branch_summary,get_datadog_code_coverage_commit_summary,get_datadog_code_coverage_pr_summary,get_datadog_code_coverage_files,get_datadog_test_optimization_settings,get_datadog_flaky_tests_management_policies,search_dora_deployments,aggregate_dora_deployments,search_dora_events,aggregate_dora_events,retry_datadog_ci_job,search_datadog_test_events,aggregate_datadog_test_events,search_pr_insights,get_dora_fields,get_prs_by_head_branch", "headers": { "DD-API-KEY": "${DATADOG_DD_API_KEY}", "DD-APPLICATION-KEY": "${DATADOG_DD_APPLICATION_KEY}" diff --git a/plugins/newrelic-remote/.devin-plugin/plugin.json b/plugins/newrelic-remote/.devin-plugin/plugin.json index 22dd31b..7f080d1 100644 --- a/plugins/newrelic-remote/.devin-plugin/plugin.json +++ b/plugins/newrelic-remote/.devin-plugin/plugin.json @@ -9,7 +9,7 @@ ], "mcpServers": { "newrelic-remote": { - "url": "https://${NEWRELIC_MCP_DOMAIN}/mcp/" + "url": "https://${NEWRELIC_MCP_DOMAIN:-mcp.newrelic.com}/mcp/" } } } diff --git a/plugins/newrelic/.devin-plugin/plugin.json b/plugins/newrelic/.devin-plugin/plugin.json index 52ae15a..d007b85 100644 --- a/plugins/newrelic/.devin-plugin/plugin.json +++ b/plugins/newrelic/.devin-plugin/plugin.json @@ -9,7 +9,7 @@ ], "mcpServers": { "newrelic": { - "url": "https://${NEWRELIC_MCP_DOMAIN}/mcp/", + "url": "https://${NEWRELIC_MCP_DOMAIN:-mcp.newrelic.com}/mcp/", "headers": { "Api-Key": "${NEWRELIC_API_KEY}" } diff --git a/scripts/validate.py b/scripts/validate.py index 2f112d8..e3dc43d 100644 --- a/scripts/validate.py +++ b/scripts/validate.py @@ -85,8 +85,14 @@ def check_entry(index: int, plugin: object, errors: list[str]) -> None: errors.append(f"{where}: must be a './plugins/' string or a pinned upstream object") +def placeholder_name(reference: str) -> str: + # `${NAME:-default}` falls back to `default` when NAME has no saved value. + return reference.split(":-", 1)[0] + + def check_placeholders(where: str, value: str, errors: list[str]) -> None: - for name in PLACEHOLDER_RE.findall(value): + for reference in PLACEHOLDER_RE.findall(value): + name = placeholder_name(reference) if name in RUNTIME_PLACEHOLDERS: continue if not CREDENTIAL_NAME_RE.match(name): @@ -99,7 +105,8 @@ def check_env_placeholders(where: str, env: dict[str, object], errors: list[str] for key, value in env.items(): if not isinstance(value, str): continue - for name in PLACEHOLDER_RE.findall(value): + for reference in PLACEHOLDER_RE.findall(value): + name = placeholder_name(reference) if name not in RUNTIME_PLACEHOLDERS and name != key: errors.append(f"{where}: env {key} references ${{{name}}}; a saved credential is matched by the env key, so it must be ${{{key}}}")