feat(mcp): relay speechify mcp to the hosted MCP server (DRG-482) - #18
Merged
Conversation
Replace the CLI's bespoke MCP server with a transparent stdio→streamable-HTTP relay to Speechify's hosted MCP at https://mcp.speechify.ai/mcp. The CLI defines no tools of its own; it forwards JSON-RPC verbatim, so the hosted tool surface (today `ask`/`search`) is what clients see and grows with no CLI release. - stdio only: drop the local `--http`/`--host`/`--port` server and its unauthenticated, key-bearing endpoint and warnings. - Forward the resolved API key upstream as `Authorization: Bearer`. Optional — the hosted tools are public — and wired for future authenticated pass-through. - Add `--url` to point the relay at a different endpoint (staging/testing). - Keep the `--accept-alpha` gate and `mcp install`. - Remove the local TTS/voice MCP tools and the docs-search proxy with the server.
The mcp surface is no longer alpha. `speechify mcp` and `mcp install` now REJECT `--accept-alpha` with a clear instruction to remove it (exit 78, code `alpha_flag_removed`), so a stale client config written by an older CLI fails loudly and prompts a re-install instead of silently passing a dead flag. - `mcp install` no longer bakes `--accept-alpha` into the config it writes (`cliInvocation` → args `["mcp"]`). - Drop the "(alpha) … Requires --accept-alpha" wording from command help. - README: replace the alpha note, remove the flag from every example. - Tests: assert both subcommands reject the flag, install works without it, and cliInvocation emits no `--accept-alpha`.
The hosted server advertises its own tools to clients, so the README no longer enumerates them (they'd only go stale). Replace the flat install list with a collapsible <details> accordion per client (Claude Code, Cursor, Claude Desktop, Windsurf, VS Code), each with its install command, config path, and manual entry.
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.
Turns
speechify mcpinto a thin relay to Speechify's hosted MCP server athttps://mcp.speechify.ai/mcp, replacing the CLI's bespoke server + local tools.What
speechify mcpspeaks MCP over stdio to the local client (Claude Code, Cursor, Claude Desktop, …) and forwards every JSON-RPC message verbatim to the hosted server. The CLI defines no tools of its own — the hosted surface (todayask,search) is what clients see, and grows with no CLI release.--http/--host/--portserver and its unauthenticated, API-key-bearing endpoint (and the DNS-rebinding / bind-interface warnings that came with it).Authorization: Bearer. Optional today —ask/searchare public — and wired so the hosted server can expose authenticated, API-backed tools later without a CLI change.--urlto relay to a different endpoint (staging/testing); defaults to the hosted URL.--accept-alphagate andspeechify mcp install.Removed
text_to_speech,stream_text_to_speech,list_voices,get_voice) and thesearch_docsproxy to the old Fern docs MCP, along withsrc/mcp/server.ts.Testing
src/mcp/run.test.ts: a realClient⟷ relay ⟷McpServerround-trip over in-memory transports provestools/listandtools/callforward transparently, plus close-propagation.tsupbuild clean.https://mcp.speechify.ai/mcp: a spec-compliant stdio handshake returnsTOOLS: ask, search, and the bearer is forwarded when a key is present.