0.1.0 • Published 6 months ago

say-mcp-server v0.1.0

Weekly downloads
-
License
MIT
Repository
github
Last release
6 months ago

say-mcp-server

macOS System Voice Settings

An MCP server that provides text-to-speech functionality using macOS's built-in say command.

Requirements

  • macOS (uses the built-in say command)
  • Node.js >= 14.0.0

Configuration

Add the following to your MCP settings configuration file:

{
  "mcpServers": {
    "say": {
      "command": "node",
      "args": ["/path/to/say-mcp-server/build/index.js"]
    }
  }
}

Installation

npm install say-mcp-server

Tools

speak

The speak tool provides access to macOS's text-to-speech capabilities with extensive customization options.

Basic Usage

Use macOS text-to-speech to speak text aloud.

Parameters:

  • text (required): Text to speak. Supports:
    • Plain text
    • Basic punctuation for pauses
    • Newlines for natural breaks
    • [slnc 500] for 500ms silence
    • [rate 200] for changing speed mid-text
    • [volm 0.5] for changing volume mid-text
    • [emph +] and [emph -] for emphasis
    • [pbas +10] for pitch adjustment
  • voice (optional): Voice to use (default: "Alex")
  • rate (optional): Speaking rate in words per minute (default: 175, range: 1-500)
  • background (optional): Run speech in background to allow further MCP interaction (default: false)

Advanced Features

  1. Voice Modulation:
use_mcp_tool({
  server_name: "say",
  tool_name: "speak",
  arguments: {
    text: "[[volm 0.7]] This is quieter [[volm 1.0]] and this is normal [[volm 1.5]] and this is louder",
    voice: "Victoria"
  }
});
  1. Dynamic Rate Changes:
use_mcp_tool({
  server_name: "say",
  tool_name: "speak",
  arguments: {
    text: "Normal speed [[rate 300]] now speaking faster [[rate 100]] and now slower",
    voice: "Fred"
  }
});
  1. Emphasis and Pitch:
use_mcp_tool({
  server_name: "say",
  tool_name: "speak",
  arguments: {
    text: "[[emph +]] Important point! [[emph -]] [[pbas +10]] Higher pitch [[pbas -10]] Lower pitch",
    voice: "Samantha"
  }
});

Integration Examples

  1. With Marginalia Search:
// Search for a topic and have the results read aloud
const searchResult = await use_mcp_tool({
  server_name: "marginalia-mcp-server",
  tool_name: "search",
  arguments: { query: "quantum computing basics", count: 1 }
});

await use_mcp_tool({
  server_name: "say",
  tool_name: "speak",
  arguments: {
    text: searchResult.results[0].description,
    voice: "Daniel",
    rate: 150
  }
});
  1. With YouTube Transcripts:
// Read a YouTube video transcript
const transcript = await use_mcp_tool({
  server_name: "youtube-transcript",
  tool_name: "get_transcript",
  arguments: {
    url: "https://youtube.com/watch?v=example",
    lang: "en"
  }
});

await use_mcp_tool({
  server_name: "say",
  tool_name: "speak",
  arguments: {
    text: transcript.text,
    voice: "Samantha",
    rate: 175
  }
});
  1. Background Speech with Multiple Actions:
// Start long speech in background
await use_mcp_tool({
  server_name: "say",
  tool_name: "speak",
  arguments: {
    text: "This is a long speech that will run in the background...",
    voice: "Rocko (Italian (Italy))",
    rate: 69,
    background: true
  }
});

// Immediately perform another action while speech continues
await use_mcp_tool({
  server_name: "marginalia-mcp-server",
  tool_name: "search",
  arguments: { query: "parallel processing" }
});
  1. With Apple Notes:
// Read notes aloud
const notes = await use_mcp_tool({
  server_name: "apple-notes-mcp",
  tool_name: "search-notes",
  arguments: { query: "meeting notes" }
});

if (notes.length > 0) {
  await use_mcp_tool({
    server_name: "say",
    tool_name: "speak",
    arguments: {
      text: notes[0].content,
      voice: "Karen",
      rate: 160
    }
  });
}

Example:

use_mcp_tool({
  server_name: "say",
  tool_name: "speak",
  arguments: {
    text: "Hello, world!",
    voice: "Victoria",
    rate: 200
  }
});

list_voices

List all available text-to-speech voices on the system.

Example:

use_mcp_tool({
  server_name: "say",
  tool_name: "list_voices",
  arguments: {}
});

Recommended Voices

Configuration

Add the following to your MCP settings configuration file:

{
  "mcpServers": {
    "say": {
      "command": "node",
      "args": ["/path/to/say-mcp-server/build/index.js"]
    }
  }
}

Requirements

  • macOS (uses the built-in say command)
  • Node.js >= 14.0.0

Contributors

License

MIT

0.1.0

6 months ago