Skip to main content

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​

ToolInputResult
list_voicesNoneAvailable voices and voice_id
synthesize_speechvoice_id, text; optional output_format: mp3|wavSaved audio_path and MIME type
transcribe_audioaudio_path inside the audio directory; optional language, promptComplete 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.