Koskamo

Tera Studio MCP

An official MCP server for Tera Studio that allows AI assistants to look up song keys and tempos, shift song keys to fit a user's vocal range, and initiate voice-cover creation on the Tera Studio platform. It operates without authentication and processes audio files locally in the browser.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Tera Studio MCP logo, by Tera StudioVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by Tera Studio
MCP endpoint (Streamable HTTP)
https://terastudio.co/mcp
Vendor documentation

What you can do with it

  • Look up a song's key and tempo by title
  • Find key and tempo of a local audio file
  • Shift a song's key to fit a user's voice
  • Get a link to start a song in user's voice

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
tera-studio 1.0.0
MCP protocol
2025-06-18
Tools
4 advertised
Resources
1 advertised
Resource templates
0 advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  },
  "resources": {
    "subscribe": false,
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Tera Studio helps people sing. Use find_song_key when someone names a song and wants its key, tempo or vocal range, find_song_key_and_tempo when they want the key or BPM of a song file they have, shift_song_key when a song is too high or too low for their voice, and start_song_in_my_voice when they want to hear a song sung in their own voice. find_song_key_and_tempo and shift_song_key open a small tool where the person chooses the file; it is read in their browser and is never uploaded to Tera Studio or into the chat. Tera Studio only uses a person's own voice, never a celebrity's or anyone else's.

Tools

4 advertised

find_song_key_and_tempo — Find a song’s key and tempo
Advertised by the server during the last successful anonymous check.
Advertised read-only

Find the musical key (major or minor, with its relative key) and the tempo in BPM of a song file the person has. Opens a small Tera Studio tool where they choose the file; it is analysed in their browser and never uploaded. Use it when someone asks what key or BPM a song is in, or wants to know before singing, mixing or practising it. It reads only the file and doesn't identify or play songs; find_song_key looks up a well-known song by its title.

find_song_key_and_tempo input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
find_song_key_and_tempo output schema
{
  "type": "object",
  "required": [
    "view",
    "audio",
    "web_tool",
    "start_song"
  ],
  "properties": {
    "view": {
      "enum": [
        "key_and_tempo",
        "change_key"
      ],
      "type": "string"
    },
    "audio": {
      "type": "string"
    },
    "web_tool": {
      "type": "string",
      "format": "uri"
    },
    "semitones": {
      "anyOf": [
        {
          "type": "integer",
          "maximum": 6,
          "minimum": -6
        },
        {
          "type": "null"
        }
      ]
    },
    "start_song": {
      "type": "string",
      "format": "uri"
    }
  }
}
find_song_key_and_tempo annotations
{
  "title": "Find a song’s key and tempo",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
shift_song_key — Change a song’s key
Advertised by the server during the last successful anonymous check.
Advertised read-only

Move a song the person has up or down by up to 6 semitones, keeping its speed, so it fits their voice, and play it back. Opens a small Tera Studio tool where they choose the file; the change happens in their browser and nothing is uploaded. Use it when a song is too high or too low for someone. Pass semitones if they said how far (negative is lower); otherwise they choose in the tool.

shift_song_key input schema
{
  "type": "object",
  "properties": {
    "semitones": {
      "type": "integer",
      "maximum": 6,
      "minimum": -6,
      "description": "How far to move the song, from -6 to 6 semitones; negative is lower. Leave it out to let the person choose."
    }
  },
  "additionalProperties": false
}
shift_song_key output schema
{
  "type": "object",
  "required": [
    "view",
    "audio",
    "web_tool",
    "start_song"
  ],
  "properties": {
    "view": {
      "enum": [
        "key_and_tempo",
        "change_key"
      ],
      "type": "string"
    },
    "audio": {
      "type": "string"
    },
    "web_tool": {
      "type": "string",
      "format": "uri"
    },
    "semitones": {
      "anyOf": [
        {
          "type": "integer",
          "maximum": 6,
          "minimum": -6
        },
        {
          "type": "null"
        }
      ]
    },
    "start_song": {
      "type": "string",
      "format": "uri"
    }
  }
}
shift_song_key annotations
{
  "title": "Change a song’s key",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
start_song_in_my_voice — Start a song in my own voice
Advertised by the server during the last successful anonymous check.
Advertised read-only

Explain how to hear a song sung in the person's own voice with Tera Studio, and give them the link to start. They create an account on terastudio.co, sing for about a minute, add a song they have the rights to use, and hear it back in their voice. Use it when someone wants to hear themselves sing a song, make a cover in their own voice, or turn a song into a gift in their voice. It returns steps and a link and creates nothing. Tera Studio only uses the person's own voice: not for celebrity or other people's voices.

start_song_in_my_voice input schema
{
  "type": "object",
  "properties": {
    "language": {
      "type": "string",
      "maxLength": 40,
      "description": "The language the song is sung in, if they said."
    },
    "occasion": {
      "type": "string",
      "maxLength": 60,
      "description": "What it's for, if they said: a birthday, a wedding, a gift."
    },
    "song_title": {
      "type": "string",
      "maxLength": 120,
      "description": "The song they want to hear in their voice, if they named one."
    }
  },
  "additionalProperties": false
}
start_song_in_my_voice output schema
{
  "type": "object",
  "required": [
    "steps",
    "consent",
    "start_song"
  ],
  "properties": {
    "steps": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "consent": {
      "type": "string"
    },
    "start_song": {
      "type": "string",
      "format": "uri"
    }
  }
}
start_song_in_my_voice annotations
{
  "title": "Start a song in my own voice",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
find_song_key — Look up a song’s key by title
Advertised by the server during the last successful anonymous check.
Advertised read-only

Look up the key, tempo (BPM) and typical vocal range of a well-known song by its title, in Tera Studio's song list (key and tempo from AcousticBrainz's analyses of the recording). Returns the key with its relative key, how many analyses agree on it, the BPM when they agree, an estimated range, and links to the song's page and to the key changer. Use it when someone names a song and asks its key or tempo, or whether it suits their voice. Pass semitones if they want it higher or lower. A song outside the list comes back as not found, with the key finder and key changer for a file they have.

find_song_key input schema
{
  "type": "object",
  "required": [
    "title"
  ],
  "properties": {
    "title": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1,
      "description": "The song's title, without the artist."
    },
    "artist": {
      "type": "string",
      "maxLength": 120,
      "description": "Who sings it, if the person said; it picks between songs that share a title."
    },
    "semitones": {
      "type": "integer",
      "maximum": 6,
      "minimum": -6,
      "description": "How far to move the song for their voice, from -6 to 6 semitones; negative is lower. Leave it out to keep the original key."
    }
  },
  "additionalProperties": false
}
find_song_key output schema
{
  "type": "object",
  "required": [
    "found",
    "song",
    "shifted",
    "song_page",
    "key_changer",
    "other_matches"
  ],
  "properties": {
    "song": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "title",
            "artist",
            "key",
            "relative_key",
            "key_confidence",
            "bpm",
            "typical_range"
          ],
          "properties": {
            "bpm": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ]
            },
            "key": {
              "type": "string"
            },
            "title": {
              "type": "string"
            },
            "artist": {
              "type": "string"
            },
            "relative_key": {
              "type": "string"
            },
            "typical_range": {
              "type": "object",
              "properties": {
                "low": {
                  "type": "string"
                },
                "high": {
                  "type": "string"
                },
                "span": {
                  "type": "string"
                },
                "estimate": {
                  "type": "boolean"
                }
              }
            },
            "key_confidence": {
              "enum": [
                "high",
                "medium"
              ],
              "type": "string"
            },
            "key_analyses_agree": {
              "type": "string"
            }
          }
        },
        {
          "type": "null"
        }
      ]
    },
    "found": {
      "type": "boolean"
    },
    "shifted": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "key": {
              "type": "string"
            },
            "semitones": {
              "type": "integer"
            },
            "typical_range": {
              "type": "object"
            }
          }
        },
        {
          "type": "null"
        }
      ]
    },
    "song_page": {
      "anyOf": [
        {
          "type": "string",
          "format": "uri"
        },
        {
          "type": "null"
        }
      ]
    },
    "key_finder": {
      "type": "string",
      "format": "uri"
    },
    "key_changer": {
      "type": "string",
      "format": "uri"
    },
    "other_matches": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "bpm": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "key": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "artist": {
            "type": "string"
          }
        }
      }
    }
  }
}
find_song_key annotations
{
  "title": "Look up a song’s key by title",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

1 advertised

song-key-tool — Song key and tempo tool

Advertised by the server during the last successful anonymous check.

Finds a song's key and tempo and moves it to another key, in the person's browser.

song-key-tool URI
ui://tera-studio/song-key-v1.html

MIME type: text/html;profile=mcp-app

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
2521 ms
95th percentile latency
2521 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 2521 ms · metadata changed · 4 tool(s), 1 resource(s), 0 resource template(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http tera-studio-mcp https://terastudio.co/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add tera-studio-mcp --url https://terastudio.co/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable tera-studio-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "tera-studio-mcp": {
      "url": "https://terastudio.co/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "tera-studio-mcp": {
      "type": "streamableHttp",
      "url": "https://terastudio.co/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start tera-studio-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "tera-studio-mcp": {
      "type": "http",
      "url": "https://terastudio.co/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http tera-studio-mcp https://terastudio.co/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "tera-studio-mcp": {
      "url": "https://terastudio.co/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "tera-studio-mcp": {
      "serverUrl": "https://terastudio.co/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Tera Studio MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Tera Studio MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing