Skip to content

Run the published flyte-mcp CLI instead of a local wrapper - #33

Merged
cosmicBboy merged 1 commit into
flyteorg:mainfrom
samhita-alla:use-published-flyte-mcp
Aug 7, 2026
Merged

Run the published flyte-mcp CLI instead of a local wrapper#33
cosmicBboy merged 1 commit into
flyteorg:mainfrom
samhita-alla:use-published-flyte-mcp

Conversation

@samhita-alla

Copy link
Copy Markdown
Contributor

Summary

flyte-cluster now runs the SDK's published entry point directly:

uvx --from "flyte[mcp]>=2.5.18" flyte-mcp --transport stdio \
  --tool-groups task,run,action,logs,app,trigger,project,secret,condition,identity

This deletes the 244-line wrapper plugins/flyte/scripts/flyte_mcp_stdio.py. It existed for
two reasons that no longer hold:

  1. flyte[mcp] <= 2.5.11 silently served HTTP even with --transport stdio
    (feat: make MCP transport="stdio" actually serve stdio flyte-sdk#1319). Fixed.
  2. The CLI had no --tool-groups / --tools / project / domain controls. It has them now.

Codex can finally ship both servers with the skills

.codex-plugin/plugin.json previously omitted mcpServers because ${CLAUDE_PLUGIN_ROOT}
does not expand in Codex (openai/codex#22842). The new command has no path to expand, so the
manifest now points at the same .mcp.json Claude Code reads.

Note the key is mcpServers, not the mcp_servers the Codex docs show — the manifest struct
is camelCase (openai/codex#22105).

Why the version floor and the tool groups

  • >=2.5.18 is the first release capping mcp<2. Without it uvx installs mcp 2.0.0,
    where mcp.server.fastmcp no longer exists, and the server dies at import reporting the
    misleading "mcp is not installed".
  • Search groups are excluded on purpose. The hosted flyte-docs server already provides
    those three tools, and enabling them here makes the CLI shallow-clone a ~120 MB corpus into
    ~/.flyte/mcp on first launch.

Verified

  • Stdio speaks JSON-RPC correctly; 29 tools register.
  • Starts cleanly with no Flyte config at all, so a user who has not logged in still gets a
    working server (tools fail at call time rather than the server failing to start).
  • With a cached flyte CLI login, whoami and list_runs return real data.
  • scripts/smoke_test_mcp.py passes end to end against the new command.
  • All JSON files parse.

Also

Both READMEs updated, including hand-written configs for Codex, opencode and Hermes — those
are now portable too, since neither server needs a checkout or a path.

The plugin shipped `plugins/flyte/scripts/flyte_mcp_stdio.py` for two reasons,
both now gone:

1. `flyte[mcp]` <= 2.5.11 silently served HTTP even with `--transport stdio`
   (flyteorg/flyte-sdk#1319). Fixed — stdio speaks JSON-RPC on stdin/stdout.
2. The CLI had no way to pick a tool set. It now has `--tool-groups`, `--tools`,
   and `--read-only`, and reads FLYTE_MCP_PROJECT / FLYTE_MCP_DOMAIN.

So `.mcp.json` launches the SDK's own entry point straight from PyPI:

    uvx --from "flyte[mcp]>=2.5.18" flyte-mcp --transport stdio \
      --tool-groups task,run,action,logs,app,trigger,project,secret,condition,identity

`>=2.5.18` is the first release capping `mcp<2`. Without the cap `mcp` 2.0.0
resolves, `mcp.server.fastmcp` is gone, and the server dies at import reporting
the misleading "mcp is not installed". The three `search` groups are left out on
purpose: the hosted `flyte-docs` server already provides them, and enabling them
shallow-clones a ~120 MB corpus into `~/.flyte/mcp` on first launch.

Dropping the wrapper drops the `${CLAUDE_PLUGIN_ROOT}` path with it, so
`.codex-plugin/plugin.json` can finally carry the MCP servers — openai/codex#22842
no longer applies when there is nothing to expand. The key is `mcpServers`, not
the `mcp_servers` the Codex docs show; the manifest struct is camelCase
(openai/codex#22105).

One behaviour change worth knowing: the CLI registers its control-plane tools
unconditionally, where the wrapper hid them until a cluster was reachable. The
server still starts with no Flyte config at all, so the plugin is still usable
while you deploy your first cluster — the tools now fail at call time rather than
being absent, and nothing needs a `/reload-plugins` after you log in.

Verified against the published package: 29 tools register, the server starts with
an empty HOME and no config anywhere, and `list_runs` returns real data with a
cached `flyte` CLI login.

Signed-off-by: Samhita Alla <aallasamhita@gmail.com>
samhita-alla added a commit to unionai/unionai-docs that referenced this pull request Aug 7, 2026
The compatibility table listed Codex under manual MCP setup. That was true
while the Codex manifest omitted mcpServers, which it did because
${CLAUDE_PLUGIN_ROOT} does not expand in Codex (openai/codex#22842) and the
flyte-cluster entry needed a path.

flyteorg/flyte-agent-plugins#33 replaces that entry with the published
flyte-mcp CLI run through uvx. Nothing needs a path expanded any more, so
.codex-plugin/plugin.json points at the same .mcp.json Claude Code reads and
both servers come with the plugin.

Depends on flyteorg/flyte-agent-plugins#33. Merge that first.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: Samhita Alla <aallasamhita@gmail.com>
samhita-alla added a commit to unionai/unionai-docs that referenced this pull request Aug 7, 2026
The page deferred to the repository README for the authoritative harness list,
per-harness setup, and MCP configuration. A reader had to leave the docs to
find out how to install anything outside Claude Code. Everything is now here.

Added: install commands for all five harnesses, a compatibility table that
also records version pinning (Hermes cannot pin), what each MCP server does
with your data, and the manual MCP config for Codex, opencode and Hermes.

Corrected three stale facts found while writing it:

- The skill count was 14. There are 20. The skill tables below already listed
  all 20, so the page contradicted itself. The plugin README carries the same
  stale 14 and should be fixed too.
- FLYTE_MCP_LOCAL_SEARCH was documented as the way to search locally. That
  variable only ever existed in the plugin's wrapper script, which
  flyteorg/flyte-agent-plugins#33 deletes; the published CLI has no such
  option. Replaced with what actually works: add the search group and drop the
  hosted server.
- The intro still said Claude Code alone wires up the MCP servers.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: Samhita Alla <aallasamhita@gmail.com>
@cosmicBboy
cosmicBboy merged commit 2f1df5f into flyteorg:main Aug 7, 2026
8 of 11 checks passed
cosmicBboy added a commit to unionai/unionai-docs that referenced this pull request Aug 7, 2026
…#1394)

* docs: fix the MCP stdio commands and scope remote deployment to Union

The documented stdio setup could not work. Every example omitted
--transport stdio on the server side, and the CLI defaults to
streamable-http, so the command started an HTTP listener while the client
waited on stdin/stdout. This affected the quickstart, the main page, and the
Claude Code and OpenCode examples.

The version tip pinned flyte[mcp]==2.4.0. That release does not constrain
its mcp dependency, so it now installs mcp 2.0.0, which removed the module
the server imports; the server exits reporting "mcp is not installed". The
floor is 2.5.18, the first release carrying the cap.

Also documents two things that surprise people: enabling the search tools
clones roughly 120 MB into ~/.flyte/mcp on first launch, and the server
starts without a Flyte config (tools fail at call time instead).

Deploying the server as an app requires Union.ai apps, so the remote
deployment section, the remote client setups, and the flyte.serve lines in
the examples are now marked accordingly. The stdio path, tool groups,
individual tools, and allowlists apply to both variants.

Verified by building both variants with the pinned Hugo 0.161.1: the
open-source pages carry the caveats and hide the remote sections, the Union
pages keep them.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: Samhita Alla <aallasamhita@gmail.com>

* docs: correct the MCP tool groups and reduce the variant notes to one

The tool-group table and the tools reference were stale. They documented
`build` and `script` groups with tools like `build_image` and
`run_uv_script_remote`, none of which exist in 2.5.18 — or in 2.5.17 before
it. They also omitted six real groups: action, logs, project, secret,
condition, identity. Both tables are now generated from TOOL_GROUP_MAPPING,
and the `tool_groups=[...]` example no longer names a group that does not
exist.

This is what made the --tool-groups command look wrong: the command was
correct for the shipped SDK, the tables were not.

Also folded the Union-only headings inside their variant blocks so the
open-source page carries a single note at the top instead of repeating the
same caveat at every remote section.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: Samhita Alla <aallasamhita@gmail.com>

* docs: Codex now gets both MCP servers from the plugin

The compatibility table listed Codex under manual MCP setup. That was true
while the Codex manifest omitted mcpServers, which it did because
${CLAUDE_PLUGIN_ROOT} does not expand in Codex (openai/codex#22842) and the
flyte-cluster entry needed a path.

flyteorg/flyte-agent-plugins#33 replaces that entry with the published
flyte-mcp CLI run through uvx. Nothing needs a path expanded any more, so
.codex-plugin/plugin.json points at the same .mcp.json Claude Code reads and
both servers come with the plugin.

Depends on flyteorg/flyte-agent-plugins#33. Merge that first.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: Samhita Alla <aallasamhita@gmail.com>

* docs: make the agent-plugins page self-contained

The page deferred to the repository README for the authoritative harness list,
per-harness setup, and MCP configuration. A reader had to leave the docs to
find out how to install anything outside Claude Code. Everything is now here.

Added: install commands for all five harnesses, a compatibility table that
also records version pinning (Hermes cannot pin), what each MCP server does
with your data, and the manual MCP config for Codex, opencode and Hermes.

Corrected three stale facts found while writing it:

- The skill count was 14. There are 20. The skill tables below already listed
  all 20, so the page contradicted itself. The plugin README carries the same
  stale 14 and should be fixed too.
- FLYTE_MCP_LOCAL_SEARCH was documented as the way to search locally. That
  variable only ever existed in the plugin's wrapper script, which
  flyteorg/flyte-agent-plugins#33 deletes; the published CLI has no such
  option. Replaced with what actually works: add the search group and drop the
  hosted server.
- The intro still said Claude Code alone wires up the MCP servers.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: Samhita Alla <aallasamhita@gmail.com>

* docs: tighten the agent-plugins prose

Removed 24 em dashes, all decorative bold, and the filler that had crept into
the page. The opening was one five-line sentence with three bolded phrases; it
is now two sentences that say the same thing. Passive constructions such as
"cluster provisioning is handled for you" now name who does the work.

Also normalised opencode and pi to lowercase, matching the tables and the
upstream project names.

No facts changed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: Samhita Alla <aallasamhita@gmail.com>

* update docs

Signed-off-by: Samhita Alla <aallasamhita@gmail.com>

---------

Signed-off-by: Samhita Alla <aallasamhita@gmail.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
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.

2 participants