Skip to content

MCP server

LyricWinter MCP server: connect Claude, ChatGPT, Cursor, and other agents

Connect any MCP client to the remote LyricWinter Studio MCP server at https://lyricwinter.com/mcp using Streamable HTTP with OAuth 2.1 or a scoped API key.

BetaUpdated

The LyricWinter MCP server lets AI agents work in LyricWinter Studio on your behalf. Connect any Model Context Protocol client to https://lyricwinter.com/mcp and the agent can list your projects, read story documents, create stories, generate multi-voice audio, and follow workflow progress. The server uses the Streamable HTTP transport and authenticates with OAuth 2.1 or a Studio-scoped API key.

PropertyValue
Server URLhttps://lyricwinter.com/mcp
TransportStreamable HTTP
AuthenticationOAuth 2.1 with PKCE, or Authorization: Bearer lw_...
Scopesstudio:read (required), studio:write (to create stories and audio)
Tools13 Studio tools
StatusBeta

Connect Claude#

Claude on the web and Claude Desktop. Open Settings → Connectors, choose Add custom connector, and enter https://lyricwinter.com/mcp. Claude opens LyricWinter so you can sign in and approve access.

Claude Code. Add the server, then run /mcp inside Claude Code and choose Authenticate:

Terminal
claude mcp add --transport http lyricwinter https://lyricwinter.com/mcp

Connect ChatGPT#

In ChatGPT, turn on developer mode for apps and connectors, then create a connector with the URL https://lyricwinter.com/mcp and OAuth authentication. ChatGPT sends you to LyricWinter to sign in and approve access. Refresh the connector after LyricWinter adds new tools.

Connect VS Code#

Add the server to .vscode/mcp.json in your workspace, or to your user MCP configuration. VS Code prompts you to sign in when the server starts.

.vscode/mcp.json
{
  "servers": {
    "lyricwinter": {
      "type": "http",
      "url": "https://lyricwinter.com/mcp"
    }
  }
}

Connect Cursor#

Add the server to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project). Use a Studio-scoped API key in the Authorization header:

~/.cursor/mcp.json
{
  "mcpServers": {
    "lyricwinter": {
      "url": "https://lyricwinter.com/mcp",
      "headers": {
        "Authorization": "Bearer lw_..."
      }
    }
  }
}

Connect Codex#

Add the server to ~/.codex/config.toml, then sign in:

~/.codex/config.toml
[mcp_servers.lyricwinter]
url = "https://lyricwinter.com/mcp"
Terminal
codex mcp login lyricwinter

Connect other MCP clients#

Any client that supports remote MCP servers over Streamable HTTP can connect:

  1. Point the client at https://lyricwinter.com/mcp.
  2. If the client supports MCP authorization, it discovers LyricWinter's OAuth server from the WWW-Authenticate challenge and the protected-resource metadata at https://lyricwinter.com/.well-known/oauth-protected-resource/mcp, registers itself, and opens the LyricWinter sign-in page.
  3. Otherwise, send a Studio-scoped API key as Authorization: Bearer lw_....

To test the server by hand, run the MCP Inspector and connect it to the same URL:

Terminal
npx @modelcontextprotocol/inspector

How does MCP authentication work?#

LyricWinter hosts its own OAuth 2.1 authorization server for the MCP server:

  1. An unauthenticated request returns 401 with a WWW-Authenticate header that points to the protected-resource metadata.
  2. The client registers through dynamic client registration (/oauth/register) and starts the authorization code flow with PKCE (S256).
  3. You sign in to LyricWinter and approve studio:read and, if the client asks for it, studio:write.
  4. LyricWinter issues a one-hour access token and a 30-day refresh token that rotates on every use.

Each token only reaches the account that approved it. To disconnect a client, revoke its key in the Developers panel of your dashboard. See Authentication for endpoints and supported parameters.

Clients that cannot complete OAuth can send a LyricWinter API key with the studio:read and studio:write scopes instead.

What can I ask an agent to do?#

Once connected, ask in plain language. For example:

  • "Show my LyricWinter Studio projects."
  • "Create a Studio story called The Lighthouse from this text and prepare it for audio."
  • "Add this chapter to my Winter Road project."
  • "Generate audio for chapters 1 through 3 and tell me when it's done."
  • "Which characters speak in this project, and how often?"

The agent picks the right tools and polls workflows until they finish. The tool descriptions tell agents to confirm with you before starting paid audio generation.

Does the MCP server cost anything?#

Connecting and reading are free. start_audio_workflow runs Create Audio, which consumes words from your LyricWinter balance exactly as it does in the Studio app. The tool is marked as having side effects so that clients ask for confirmation, and its description tells agents to confirm scope and cost with you first.

What the MCP server does not do yet#

The beta MCP server covers the core story-to-audio loop. These tasks are available in the REST API and the Studio app but not yet as MCP tools:

  • Editing document blocks and recasting speakers
  • Exports to MP3, WAV, M4B, EPUB, or SRT
  • Public share links
  • Uploading sounds or custom voices

Troubleshooting#

SymptomFix
The client says authorization is required or expiredReconnect or re-authenticate the server in your client. Access tokens last one hour and refresh automatically when the client supports it.
A tool returns "lacks Studio access"The token or API key is missing studio:read or studio:write. Reconnect and approve both, or use a key with both scopes.
403 Origin is not allowedBrowser-based clients must connect from lyricwinter.com or chatgpt.com. Use a desktop, CLI, or server-side client instead.
A write tool timed outThe result includes a mutation_id. Call the tool again with the same mutation_id to retry safely without creating a duplicate or a second paid run.