Advanced: local stdio
The usual agent connection uses the company-hosted MCP URL and account sign-in. This separate option is for developers who intentionally need a local MCP process. It requires an API key and package installation.
Install
Use Node.js 22 or later and a package archive provided by Kitsch.
Do not invent a public npm package or download URL. In the Bash command below,
set KITSCH_PACKAGE_TGZ to the absolute path of the provided archive.
npm install --prefix ./kitsch-mcp --omit=dev --ignore-scripts "$KITSCH_PACKAGE_TGZ"
Create mcp.env in a private configuration directory outside the project and
audio directory. Use your own active workspace API key and an absolute path to
a dedicated audio directory. Restrict the file to your account; do not share it
in a repository or chat.
KITSCH_API_KEY=<YOUR_WORKSPACE_API_KEY>
KITSCH_AUDIO_DIR=/absolute/path/to/kitsch-audio
Configure the client
Add this entry to the existing mcpServers. Replace every path with an actual
absolute path and preserve other servers. Windows JSON paths can use
C:/Users/.... If your client uses another configuration format, register the
same command and args in that format.
{
"mcpServers": {
"kitsch-local": {
"command": "node",
"args": [
"--env-file=/absolute/path/to/mcp.env",
"/absolute/path/to/kitsch-mcp/node_modules/@kitschlabs/agent-audio/dist/stdio.js"
]
}
}
}
Reload the connection and call list_voices. Synthesis and transcription charge
the API key's workspace, so only run audio tests within the user's request.
Local tools
| Tool | Input | Result |
|---|---|---|
list_voices | None | Available voices and voice_id |
synthesize_speech | voice_id, text; optional output_format: mp3|wav | Saved audio_path and MIME type |
transcribe_audio | audio_path inside the audio directory; optional language, prompt | Complete transcript |
Do not send the hosted MCP's operation_id to local tools. Transcription accepts
files up to 100 MiB, using an absolute path or a path relative to the audio
directory. Omit unset optional fields instead of sending empty strings.
Synthesis returns a complete file. Optional return_audio: true also returns
audio content for results up to 2 MiB. Local files are not automatically deleted;
the user manages cleanup. Realtime microphone capture and playback require a
separate integration. Do not automatically retry failed paid requests.