Skip to content

feat: add EvoLink media generation MCP preset - #1159

Open
Evolink wants to merge 1 commit into
truefoundry:mainfrom
Evolink:add-evolink-mcp-preset
Open

Evolink wants to merge 1 commit into
truefoundry:mainfrom
Evolink:add-evolink-mcp-preset

Conversation

@Evolink

@Evolink Evolink commented Oct 23, 2026 •

Copy link
Copy Markdown

Summary

Adds EvoLink to the shipped MCP server catalog (packages/trueforge/catalog/mcp-catalog.yaml) as a remote preset with auth: { type: dcr }, like the Linear and Notion presets. It has the same shape as #1011 and #1133: one catalog entry and a changeset, no source changes. Nothing is called until a user adds the server.

Changes

What reaches EvoLink once a user adds the server and signs in: the tool arguments (prompts, generation parameters, reference media URLs) and task IDs for status checks.

How was this tested?

  • pnpm build, pnpm typecheck and pnpm format:check pass, and pnpm lint:ci reports 0 errors (2 existing react-hooks/exhaustive-deps warnings in other files).
  • pnpm test passes for every package; @truefoundry/trueforge runs 76 suites with 692 tests, which load the shipped catalog.

Sign-in path against the live authorization server, using the same request shapes as mcpDcr.ts:

  • https://mcp.evolink.ai/.well-known/oauth-protected-resource/mcp points to https://passport.evolink.ai, whose metadata advertises a registration_endpoint, S256 and client_secret_post.
  • Dynamic client registration with token_endpoint_auth_method: client_secret_post, grant_types: [authorization_code, refresh_token] and a <base>/api/v1/mcp-servers/oauth/callback redirect returns 201, both for an HTTPS base URL and for http://localhost:8000.
  • The authorization URL (S256 challenge, 32-byte base64url state, resource=https://mcp.evolink.ai/mcp, scopes mcp offline_access) redirects to EvoLink's sign-in and consent page.
  • The issuer TrueForge derives from the authorization endpoint origin, https://passport.evolink.ai, matches the authorization server's issuer.

One limit for self-hosted installs: the authorization server accepts HTTPS redirect URIs, and plain HTTP only on localhost or loopback, so a PUBLIC_BASE_URL on plain HTTP at another host can't register a client.

Checklist

  • I have read the contributing guidelines
  • pnpm build, pnpm test, pnpm typecheck, pnpm lint:ci, and pnpm format:check pass locally
  • Tests added/updated where it makes sense (catalog-only change; the existing catalog test covers it)
  • No hand-edits to generated code (packages/trueforge-sdk, python/trueforge_sdk, .github/fern/openapi/openapi.json, docs/openapi.json)
  • Docs / .env.example updated if configuration or behavior changed (no configuration or behavior change)

Disclosure: I work at EvoLink, which runs this MCP server. This PR comes from the EvoLink company GitHub account.

🤖 Generated with Claude Code


Note

Low Risk
Catalog-only preset addition with no code path changes until users opt in; OAuth DCR matches existing connector patterns.

Overview
Adds EvoLink as a new shipped remote MCP preset in mcp-catalog.yaml, pointing at https://mcp.evolink.ai/mcp with auth: { type: dcr } (OAuth dynamic client registration, same pattern as Linear/Notion). The description documents media generation across 150+ models, free search/pricing tools, and balance-billed generation after sign-in. There is no logo URL yet (pending asset upload). A patch changeset records the @truefoundry/trueforge release note.

No application code changes—the catalog is discovery-only until a user adds the connector.

Reviewed by Cursor Bugbot for commit f2f59e3. Bugbot is set up for automated code reviews on this repo. Configure here.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@changeset-bot

changeset-bot Bot commented Oct 23, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: f2f59e3

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@truefoundry/trueforge Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

This branch has not been deployed

No deployments
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.

1 participant