Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions .changeset/firebase-presets.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
"@executor-js/plugin-mcp": patch
"@executor-js/plugin-openapi": patch
---

**Firebase joins the well-known integration catalogs**

The MCP plugin's preset catalog now includes the Firebase CLI's MCP server
(`npx -y firebase-tools@latest mcp`, local stdio) for project management, Auth
users, Firestore, security rules, Cloud Messaging, and deploys. The OpenAPI
plugin's Google catalog additionally includes Firebase Management
(`firebase.googleapis.com/v1beta1`) and Cloud Firestore
(`firestore.googleapis.com/v1`) as OAuth presets, covering projects, apps,
hosting, extensions, documents, collections, queries, and indexes.
10 changes: 10 additions & 0 deletions packages/plugins/mcp/src/sdk/presets.ts
Original file line number Diff line number Diff line change
Expand Up @@ -151,4 +151,14 @@ export const mcpPresets: readonly McpPreset[] = [
command: "npx",
args: ["-y", "chrome-devtools-mcp@latest"],
},
{
id: "firebase",
name: "Firebase",
summary: "Manage projects, Auth, Firestore, rules, and deploys via the Firebase CLI.",
icon: "https://integrations.sh/logo/firebase.google.com",
featured: true,
transport: "stdio",
command: "npx",
args: ["-y", "firebase-tools@latest", "mcp"],
},
];
Original file line number Diff line number Diff line change
Expand Up @@ -90,5 +90,13 @@ exports[`classifies every Google service for bundle OAuth UX 1`] = `
"id": "google-cloud-resource-manager",
"oauthAudience": "advanced-user",
},
{
"id": "google-firebase",
"oauthAudience": "advanced-user",
},
{
"id": "google-firestore",
"oauthAudience": "advanced-user",
},
]
`;
2 changes: 2 additions & 0 deletions packages/plugins/openapi/src/providers/google/presets.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,8 @@ const FROZEN_GOOGLE_SLUGS = [
"google_apps_script",
"google_bigquery",
"google_cloud_resource_manager",
"google_firebase",
"google_firestore",
] as const;

it("keeps Select all limited to Google services that can use normal user OAuth", () => {
Expand Down
20 changes: 20 additions & 0 deletions packages/plugins/openapi/src/providers/google/presets.ts
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,22 @@ export const googleOpenApiPresets: readonly GoogleOpenApiPreset[] = [
icon: "https://fonts.gstatic.com/s/i/productlogos/google_cloud/v6/192px.svg",
oauthAudience: "advanced-user",
},
{
id: "google-firebase",
name: "Firebase Management",
summary: "Firebase projects, apps, hosting, extensions, and configuration.",
url: gd("firebase", "v1beta1"),
icon: "https://fonts.gstatic.com/s/i/productlogos/firebase/v7/192px.svg",
oauthAudience: "advanced-user",
},
{
id: "google-firestore",
name: "Cloud Firestore",
summary: "Documents, collections, queries, and indexes.",
url: gd("firestore", "v1"),
icon: "https://fonts.gstatic.com/s/i/productlogos/google_cloud/v6/192px.svg",
oauthAudience: "advanced-user",
},
];

export const googleStandardUserOAuthPresets = googleOpenApiPresets.filter(
Expand Down Expand Up @@ -315,6 +331,10 @@ const GOOGLE_HEALTH_CHECKS: Readonly<Record<string, HealthCheckSpec>> = {
operation: "cloudresourcemanager.projects.search",
args: { pageSize: 1 },
},
"google-firebase": {
operation: "firebase.projects.list",
args: { pageSize: 1 },
},
};

/** Complete Google OAuth scope set requested by a catalog preset, including
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,8 @@ export const googleOAuthConsentScopes: Readonly<Record<string, readonly string[]
],
"google-bigquery": [auth("bigquery")],
"google-cloud-resource-manager": [auth("cloud-platform")],
"google-firebase": [auth("firebase")],
"google-firestore": [auth("datastore")],
};

export const googleOAuthConsentScopesForPreset = (presetId: string): readonly string[] =>
Expand Down Expand Up @@ -237,6 +239,8 @@ const GOOGLE_DISCOVERY_POLICIES: Readonly<Record<string, GoogleDiscoveryServiceP
}),
"bigquery/v2": policy("google-bigquery"),
"cloudresourcemanager/v3": policy("google-cloud-resource-manager"),
"firebase/v1beta1": policy("google-firebase"),
"firestore/v1": policy("google-firestore"),
};

export const googleDiscoveryPolicyFor = (
Expand Down