Repository navigation
Move the Sprites MCP server to mcp.fly.io - #3
Merged
Merged
Conversation
Move the plugin from the https://sprites.dev/mcp endpoint, as part of the transition to the new Fly MCP server, to the Fly MCP at https://mcp.fly.io and pin its OAuth authorization server, https://fly.io/mcp/oauth. Validators, tests, docs, and the changelog follow the new endpoint.
aezell
force-pushed
the
mcp-fly-io-endpoint
branch
from
November 13, 2026 20:06
934eeb5 to
9daac1e
Compare
aezell
marked this pull request as ready for review
November 13, 2026 20:33
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
We are transitioning from the Sprites MCP at
https://sprites.dev/mcpto the new Fly MCP server athttps://mcp.fly.io. This moves the plugin to the new endpoint.Part of superfly/sprites-ecosystem#184
What changed:
.mcp.json:urlis nowhttps://mcp.fly.io;oauth.authorization_server_urlis nowhttps://fly.io/mcp/oauth. The server key (sprites),client_name, timeout, andscope(sprites:read sprites:write) are unchanged, so themcp__sprites__*hook matcher, agent allowlist, and skill text keep working. Tool names are identical on both servers.scripts/check_repository.pyandtests/test_repository.py: assert the new URL and authorization server.README.md,skills/sprites/references/auth-and-setup.md: new endpoint, an upgrade note, and updated allowlist guidance. The stale claim that the401omitsWWW-Authenticateis replaced.docs/release-checklist.md: OAuth discovery steps rewritten for the new endpoint, plus a step to confirm Cortex accepts the pinned issuer.CHANGELOG.md:Unreleasedentry.Where the OAuth values come from (fetched 2026-11-13, not guessed):
https://mcp.fly.io/.well-known/oauth-protected-resourcereturnsresource: https://mcp.fly.ioandauthorization_servers: ["https://fly.io/mcp/oauth"];scopes_supportedincludessprites:readandsprites:writealongsidefly:*scopes.https://fly.io/.well-known/oauth-authorization-server/mcp/oauthreturns issuerhttps://fly.io/mcp/oauth, PKCES256, and authorize, token, register, and revoke endpoints underhttps://fly.io/mcp/oauth/.https://mcp.fly.ioreturns401withWWW-Authenticate: Bearer resource_metadata="https://mcp.fly.io/.well-known/oauth-protected-resource".The plugin still requests only the two Sprites scopes. The Fly MCP can expose other Fly.io tools when broader scopes are granted; this plugin does not ask for them.
Action required outside this repository
https://sprites.dev/mcpneedhttps://mcp.fly.io(MCP endpoint) andhttps://fly.io/mcp/oauth(authorization, token, and registration endpoints) added. This applies to managed URL allowlists, connection profiles, and any network rule that restricts Cortex Code's outbound hosts. The README's Enterprise deployment section and the skill's troubleshooting reference now say so./mcpand authorizespritesagain.0.1.2and the changelog entry is underUnreleased, because nothing in the validators requires them to agree. Cutting the release (version bump, tag, release-checklist run) is not part of this PR.Verification
Ran locally:
python3 scripts/check_repository.py: passed ("Validated 33 repository files and plugin semantics").python3 -m unittest discover -s tests: 11 tests, OK.python3 -m compileall -q scripts tests: OK.cortex plugin validate(Cortex Code v1.1.60): "Plugin 'sprites' is valid."Not run, needs a manual test by a reviewer with a Cortex Code session:
https://fly.io/mcp/oauth), and its metadata is served only at the RFC 8414 path-inserted location.https://fly.io/mcp/oauth/.well-known/oauth-authorization-serverreturns404. If Cortex builds the metadata URL by appending/.well-known/...toauthorization_server_url, authorization will fail. In that case the likely fix is to dropauthorization_server_urland let Cortex follow the401challenge, which the new endpoint does send; that would also need the validator and test relaxed. I could not determine Cortex's behavior from this repository.https://fly.io/mcp/oauth/registerwithclient_name: "Cortex Code".sprites:read sprites:writeonly, and what restrictions it shows. The README and skill still describe the name-prefix and creation-cap restrictions from the previous connector; I softened the wording but did not verify the Fly consent screen./sprites-statusand/sprites-smokeagainst a restricted grant in a non-production organization, and the hook gate ondestroy_sprite(release checklist, "Safe end-to-end checks")./mcpagainst the tool map inskills/sprites/SKILL.mdand the release checklist. Both list 18 names dated 2026-08-12; I left them alone because I could not list tools without an authorized session. The hook matches everymcp__sprites__*call, so unlisted tools are still gated.Left unchanged on purpose:
https://sprites.dev(product) andhttps://docs.sprites.dev/...(documentation, including the Remote MCP page). They are not the MCP endpoint. The Remote MCP documentation page may itself need updating;https://mcp.fly.io/guide.mdis the public guide for the new endpoint.headerswere added to.mcp.json. Other Fly plugins sendFly-Client-AgentandFly-Client-Interactiveheaders, but this repository's validator rejects anyheaderskey on the server.Checklist
python3 scripts/check_repository.pypasses.python3 -m unittest discover -s tests -vpasses.cortex plugin validatepasses, or I explained why it could not run.🤖 Generated with Claude Code