From 7d3da3095f78349825473efb014d558ebfa15f2f Mon Sep 17 00:00:00 2001 From: kjhq Date: Sun, 23 Aug 2026 15:58:47 +0530 Subject: [PATCH] Presets: add Firebase MCP and Google Firebase/Firestore REST catalogs --- .changeset/firebase-presets.md | 14 +++++++++++++ packages/plugins/mcp/src/sdk/presets.ts | 10 ++++++++++ .../google/__snapshots__/presets.test.ts.snap | 8 ++++++++ .../src/providers/google/presets.test.ts | 2 ++ .../openapi/src/providers/google/presets.ts | 20 +++++++++++++++++++ .../src/providers/google/service-policy.ts | 4 ++++ 6 files changed, 58 insertions(+) create mode 100644 .changeset/firebase-presets.md diff --git a/.changeset/firebase-presets.md b/.changeset/firebase-presets.md new file mode 100644 index 000000000..ee46367bc --- /dev/null +++ b/.changeset/firebase-presets.md @@ -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. diff --git a/packages/plugins/mcp/src/sdk/presets.ts b/packages/plugins/mcp/src/sdk/presets.ts index dd2cdc5cf..723cfdec2 100644 --- a/packages/plugins/mcp/src/sdk/presets.ts +++ b/packages/plugins/mcp/src/sdk/presets.ts @@ -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"], + }, ]; diff --git a/packages/plugins/openapi/src/providers/google/__snapshots__/presets.test.ts.snap b/packages/plugins/openapi/src/providers/google/__snapshots__/presets.test.ts.snap index 756a287b8..c6fec08d0 100644 --- a/packages/plugins/openapi/src/providers/google/__snapshots__/presets.test.ts.snap +++ b/packages/plugins/openapi/src/providers/google/__snapshots__/presets.test.ts.snap @@ -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", + }, ] `; diff --git a/packages/plugins/openapi/src/providers/google/presets.test.ts b/packages/plugins/openapi/src/providers/google/presets.test.ts index 3aeedd1a0..e56541988 100644 --- a/packages/plugins/openapi/src/providers/google/presets.test.ts +++ b/packages/plugins/openapi/src/providers/google/presets.test.ts @@ -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", () => { diff --git a/packages/plugins/openapi/src/providers/google/presets.ts b/packages/plugins/openapi/src/providers/google/presets.ts index 9591ae86b..7e6a0b15e 100644 --- a/packages/plugins/openapi/src/providers/google/presets.ts +++ b/packages/plugins/openapi/src/providers/google/presets.ts @@ -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( @@ -315,6 +331,10 @@ const GOOGLE_HEALTH_CHECKS: Readonly> = { 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 diff --git a/packages/plugins/openapi/src/providers/google/service-policy.ts b/packages/plugins/openapi/src/providers/google/service-policy.ts index 3fe466c02..61513bc87 100644 --- a/packages/plugins/openapi/src/providers/google/service-policy.ts +++ b/packages/plugins/openapi/src/providers/google/service-policy.ts @@ -105,6 +105,8 @@ export const googleOAuthConsentScopes: Readonly @@ -237,6 +239,8 @@ const GOOGLE_DISCOVERY_POLICIES: Readonly