Skip to content

feat: add deploy and deploy_status tools#10262

Merged
joehan merged 66 commits intomcp-sse-supportfrom
mcp-deploy-tools
Apr 16, 2026
Merged

feat: add deploy and deploy_status tools#10262
joehan merged 66 commits intomcp-sse-supportfrom
mcp-deploy-tools

Conversation

@joehan
Copy link
Copy Markdown
Member

@joehan joehan commented Apr 3, 2026

Adds firebase_deploy and deploy_status tools. (Chained off #10258)

@joehan joehan mentioned this pull request Apr 3, 2026
Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces two new MCP tools: 'deploy' for initiating background Firebase resource deployments and 'deploy_status' for monitoring their progress via a job tracker. The implementation includes necessary logic for handling deployment targets and progress reporting. Feedback was provided regarding the use of 'any' types, the need for safer error handling in asynchronous blocks, and the potential for code duplication regarding deployment targets. I have suggested improvements to align the code with the repository's strict TypeScript standards.

Comment thread src/mcp/tools/core/deploy.ts Outdated
Comment thread src/mcp/tools/core/deploy.ts Outdated
Comment thread src/mcp/tools/core/deploy.ts Outdated
Comment on lines +32 to +35
return {
...contentRes,
structuredContent: job as any,
};
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The style guide rule "Never use any or unknown as an escape hatch" is violated. The job object is cast to any. The structuredContent property expects a type compatible with Record<string, unknown>, and the job object appears to be a plain serializable object that should be assignable to this type without needing an any cast.

Suggested change
return {
...contentRes,
structuredContent: job as any,
};
return {
...contentRes,
structuredContent: job,
};
References
  1. The style guide states to never use any or unknown as an escape hatch, and instead define proper interfaces/types or use type guards. (link)

@joehan joehan force-pushed the mcp-deploy-tools branch 7 times, most recently from 1149230 to 028b098 Compare April 6, 2026 17:28
lahirumaramba and others added 3 commits April 6, 2026 10:51
…indows (#10264)

* fix permission denied error for Dart deployments on Windows

* fix lint issues

* address gemini PR comments

* check the endpoint instead of pubspec

* Update src/deploy/functions/prepare.ts

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Assert runtime is present

---------

Co-authored-by: Thomas Bouldin <inlined@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* fixing issue 6989

* adding change logs and reducing the wait time to 1s
Resolve the project root inside detectActiveFeatures so auto-detection does not build MCP context before cachedProjectDir is available.

Adds a regression test covering a Flutter project with firebase_crashlytics and firebase_options.dart.

Refs #10211.

Co-authored-by: Joe Hanley <joehanley@google.com>
@joehan joehan force-pushed the mcp-deploy-tools branch 2 times, most recently from 34837da to df9b936 Compare April 6, 2026 20:31
ajperel and others added 16 commits April 7, 2026 09:41
Fixes #10267

Co-authored-by: Andy Perelson <ajp@google.com>
* Fix incorrect FAL event type. Add regression exception & test

* Remove redundant service lookup
* Change the default App Hosting region to us-east4

* Changelog

---------

Co-authored-by: Bryan Kendall <bkend@google.com>
* middleware/proxy fixes for next.js 15/16

* changelog

* check src directory

* document middleware check in dev mode

* update middleware types docs

* Apply suggestion from @leoortizz

* remove extra space

* update changelog
* detect next/image usage in client components

* pr review

* format

* format test file

* pr review

* changelog
* Alternate link to Cloud Console

* Fix URL. Bad AI

* Restore type safety for runtimes

* Linter error
* Update FDC emulator to v3.4.1

- Upgraded Go runtime to 1.25.9.
- Bug fix: Fixed an issue that caused Angular SDK generation to fail.

* Rearrange entries in CHANGELOG.md

Reorganize changelog entries for clarity and consistency.
* initial impl of datbase edition in fs emulator

* updated to include manual CLI override

* updated naming of flag

* quick linter fix

* update JSON schema

* fixing check on invalid flag input

* Undo nom.shrinkwrap.json change..

* Changed wrong line oops.

* removing manual flag option

* ran npm run format

* update CHANGELOG

* minor update to description

* run format

* read prod edition as well, with emulator edition taking precedence

* Update CHANGELOG.md

Co-authored-by: Joe Hanley <joehanley@google.com>

---------

Co-authored-by: Joe Hanley <joehanley@google.com>
* handle powershell stripping commas

* remove console log

* changelog entry

* add ai suggestion

---------

Co-authored-by: Joe Hanley <joehanley@google.com>
* Cache lint results for unchanged files

* pr fixes
@joehan joehan force-pushed the mcp-deploy-tools branch from df9b936 to 3a1293d Compare April 16, 2026 17:32
joehan added 23 commits April 16, 2026 10:47
### Description
Adds support for running the MCP server in SSE (HTTP) mode, in addition to the default Stdio transport. This allows clients to connect over network or via tools that support SSE.

### Scenarios Tested
- Started server in SSE mode and verified log output.
### Description
Fixes a type error where progressToken was not defined on McpContext.

### Scenarios Tested
- Verified build succeeds.
### Description
Addresses PR comments by:
- Moving inline require calls to top-level imports.
- Replacing any types with specific interfaces or unknown.

### Scenarios Tested
- Verified build succeeds.
### Description
- Reverts accidental GA4 tracking change in mcpListResources.
- Replaces console.error with this.logger calls for better logging.
- Changes default server binding from 0.0.0.0 to 127.0.0.1 for security.

### Scenarios Tested
- Verified build succeeds.
### Description
- Applied auto-formatting fixes from npm run format.

### Scenarios Tested
- Verified build succeeds.
* feat: add infrastructure for MCP Apps

### Description
Adds support for returning structured content from tools, which is used by MCP Apps to pass complex data to the host. Also updates the resource index.

### Scenarios Tested
- Verified build and file changes.

* fix: resolve build errors and address review comments on infra

### Description
- Removes imports and registry entries for UI resources that are not yet available in this branch (login, update_environment, deploy, init).
- Replaces as any in toContent with an intersection type for better type safety.

### Scenarios Tested
- Verified build succeeds.
### Description
- Defines a local interface extending SSEServerTransport to avoid using  when accessing .

### Scenarios Tested
- Build succeeds.
- Lint passes for modified lines.
### Description
- Replaced  boolean flag with  string flag (defaults to 'stdio').
- Added validation for  to accept only 'stdio' or 'sse'.
- Fixed build errors by adding  to  interface and removing missing  resource.

### Scenarios Tested
- Build succeeds.
- Lint passes with no new errors.
### Description
- Adds mcpapps experiment flag to src/experiments.ts.
- Adds applyAppMeta helper function to src/mcp/util.ts to conditionally add UI metadata.
- Adds unit tests for applyAppMeta in src/mcp/util.spec.ts.

### Scenarios Tested
- Unit tests passed.
- Build succeeds.
### Description
- Fixes applyAppMeta to preserve existing metadata.
- Moves mcpapps flag to be grouped with other MCP experiments.
- Removes as any in util.spec.ts by importing CallToolResult.

### Scenarios Tested
- Build succeeds.
- Lint passes for modified files (ignoring pre-existing warnings).
- Unit tests for applyAppMeta pass.
Adds support for returning structured content from tools, which is used by MCP Apps to pass complex data to the host. Also updates the resource index.

- Verified build and file changes.
### Description
Adds the Update Environment MCP App, allowing users to switch projects and directories from the UI.

### Scenarios Tested
- Verified build and file changes.
### Description
Adds the Init MCP App for interactive initialization of Firestore and Auth products. Includes support for Google Sign-In configuration and project selection.

### Scenarios Tested
- Verified build and file changes.
- Remove non-existent login_ui and deploy_ui from resources index to fix build.

- Avoid using any in mcp-app.ts, use specific interfaces.

- Check isError on tool results.

- Reduce page_size to 1000.

- Fix lint warnings for catch blocks.
### Description
Adds firebase_deploy and deploy_status tools to support asynchronous deployment and status polling.

### Scenarios Tested
- Verified file changes.
### Description
- Updates deploy tool to use applyAppMeta to conditionally return UI resource URI.
- Recovers missing src/mcp/util/jobs.ts from compiled version.

### Scenarios Tested
- Build succeeds.
- Lint passes for these files.
- Export TARGETS from src/deploy/index.ts to avoid duplication.

- Fix any usages in deploy.ts and deploy_status.ts.

- Add index signature to Job interface in jobs.ts.

- Fix lint warnings and errors.
@joehan joehan force-pushed the mcp-deploy-tools branch from 6a9f44e to 7dbc552 Compare April 16, 2026 17:47
@joehan joehan marked this pull request as ready for review April 16, 2026 17:47
@joehan joehan merged commit e5efe0f into mcp-sse-support Apr 16, 2026
1 check passed
@joehan joehan deleted the mcp-deploy-tools branch April 16, 2026 17:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.