mcpField
S
say-mcp-server

say-mcp-server

ローカル
github.com/bmorphismメディア・デザイン2094 週間前に更新

say-mcp-server について

say-mcp-server は macOS 向けの MCP サーバーで、標準搭載の say コマンドを使った音声読み上げを提供します。エージェントにテキストを読み上げさせたい macOS ユーザー向けで、速度、音量、ピッチ、音声を調整できます。

主な機能

  1. 01macOS 標準の say コマンドによる読み上げ
  2. 02速度、音量、ピッチを変えるインラインマーカー
  3. 03他の MCP 呼び出し中に行うバックグラウンド再生
  4. 04システムで利用可能な音声の一覧表示

活用シーン

  1. 01エージェントによる検索結果やメモの読み上げ
  2. 02長文をバックグラウンドで再生しながら別の作業を続行
  3. 03異なる音声の聞き比べ

MCP 対応

MCP サーバーとして speak と list_voices の 2 つのツールを MCP クライアントに公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

say-mcp-server

Say サーバー MCP サーバー

macOS のシステム音声設定

macOS に組み込まれている say コマンドを使用して、テキスト読み上げ機能を提供する MCP サーバーです。

要件

  • macOS(組み込みの say コマンドを使用します)
  • Node.js >= 14.0.0

設定

以下を MCP 設定ファイルに追加します。

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

インストール

npm install say-mcp-server

ツール

speak

speak ツールを使用すると、macOS のテキスト読み上げ機能をさまざまなオプションでカスタマイズして利用できます。

基本的な使い方

macOS のテキスト読み上げ機能を使って、テキストを音声で読み上げます。

パラメーター:

  • text(必須):読み上げるテキストです。次の形式に対応しています。
    • プレーンテキスト
    • 間を空けるための基本的な句読点
    • 自然な区切りを入れる改行
    • 500 ミリ秒の無音を挿入する [[slnc 500]]
    • テキストの途中で速度を変更する [[rate 200]]
    • テキストの途中で音量を変更する [[volm 0.5]]
    • 強調する [[emph +]] および強調を解除する [[emph -]]
    • ピッチを調整する [[pbas +10]]
  • voice(任意):使用する音声です(デフォルト:「Alex」)
  • rate(任意):1 分あたりの単語数で指定する読み上げ速度です(デフォルト:175、範囲:1~500)
  • background(任意):バックグラウンドで音声を再生し、MCP とのやり取りを続けられるようにします(デフォルト:false)
高度な機能
  1. 音声の調整:
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. 読み上げ速度の動的な変更:
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. 強調とピッチ:
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"
  }
});
連携例
  1. 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. YouTube の文字起こしとの連携:
// 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. 複数のアクションとバックグラウンド音声:
// 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. 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
    }
  });
}

例:

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

システムで利用可能なすべてのテキスト読み上げ音声を一覧表示します。

例:

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

おすすめの音声

音声言語/地域知性を象徴する人物俳句CLI 仕様
Anna (Premium)ドイツ語Emmy Noether対称性が命を吹き込む
代数に隠された形
抽象が花開く

対称性が命を吹き込む
代数に隠された形
抽象が花開く
-v "Anna (Premium)"
Emma (Premium)イタリア語Maria Adelaide Sneiderアルゴリズムが舞う
機械が秘密をそっとささやく
コードが息づく

アルゴリズムが舞う
機械が秘密をそっとささやく
コードが息づく
-v "Emma (Premium)"
Federica (Premium)イタリア語Pia Nalli定理が流れゆく
数は自由に舞い踊る
真実が現れる

流れる定理が舞う
数は自由の空間を進む
真実が純粋な姿で現れる
-v "Federica (Premium)"
Serena (Premium)英語(英国)Bertha Swirles量子の波が広がる
深い数学の海を越えて
真実の光が現れる

量子の波が広がる
深い数学の海を越えて
真実の光が現れる
-v "Serena (Premium)"
Petra (Premium)ドイツ語Ruth Moufang代数が語る
純粋な対称性に隠れて
真実が花開く

代数がそっと語る
純粋な対称性に隠れて
真実がここに再び花開く
-v "Petra (Premium)"
Yuna (Premium)韓国語Hee Oh隠れたパターンが輝く
心の方程式がそっと花開く
知識が増えてゆく

隠れたパターンが輝く
心の方程式がそっと花開く
知識が増えてゆく
-v "Yuna (Premium)"
Alva (Premium)スウェーデン語Sonja Korovkinパターンが自由に流れる
思考の迷宮を抜けて
知恵がここに花開く

パターンが自由に流れる
心の迷宮を抜けて
知恵がここに花開く
-v "Alva (Premium)"
Amélie (Premium)フランス語(カナダ)Sophie Germain素数がささやく
静寂の間を舞い踊る
対称性が開く

素数がささやく
静寂の間を舞い踊る
対称性が広がる
-v "Amélie (Premium)"
Ewa (Premium)ポーランド語Maria Wielgus論理のやさしい根
数学の風景
思考の種が芽吹く

論理のやさしい根
数学の風景
思考の種が芽吹く
-v "Ewa (Premium)"
Kiyara (Premium)ヒンディー語Shakuntala Devi数学のリズムの中
数が舞い踊る
知識が目覚める

数学のリズムの中
数が神聖な足取りで舞う
知識が目覚める
-v "Kiyara (Premium)"
Majed (Premium)アラビア語Maha Al-Aswad数が舞い踊る
無限の広大な空間で
真実が夜明けのように輝く

数が自由に舞い踊る
無限の広大な空間で
真実が夜明けのように昇る
-v "Majed (Premium)"
Tünde (Premium)ハンガリー語Julia Erdős数が舞い踊り
無限の空間を滑る
真実が明ける

数が舞い踊り、高く舞う
無限の空間を滑る
真実が純粋に明るく明ける
-v "Tünde (Premium)"
Fiona (Enhanced)英語(スコットランド)Mary Somervilleハイランドの霧が明かす
数学の謎
真実は星のように輝く

ハイランドの霧が明かす
数学の謎
真実は星のように輝く
-v "Fiona (Enhanced)"
Lesya (Enhanced)ウクライナ語Olena Voinova静寂が語りかける
星々の間で知識が眠る
思考が芽吹く

静寂がそっと語る
星々の間で知識が眠る
思考が育ち始める
-v "Lesya (Enhanced)"
Carmit (Enhanced)ヘブライ語Tali Seror言葉が静かに息づく
深い静寂の行間で
詩が目を覚ます

言葉が静かに息づく
深い静寂の行間で
詩が目を覚ます
-v "Carmit (Enhanced)"
Milena (Enhanced)ロシア語Olga Ladyzhenskaya記憶がささやく
方程式が流れる
真実は黙して語る

記憶がささやく
方程式が川のように流れる
真実は静かに語る
-v "Milena (Enhanced)"
Katya (Enhanced)ロシア語Sofia Kovalevskaya数が舞い踊る
無限の空間で
真実が花開く

数が自由に舞い踊る
無限の空間で
真実が花のように咲く
-v "Katya (Enhanced)"
Damayanti (Enhanced)インドネシア語Sri Pekerti数が舞い踊る
果てなき空間で
真実が育つ

数がそっと舞い踊る
果てなき空間をひらひらと進む
真実が新しい葉のように育つ
-v "Damayanti (Enhanced)"
Dariush (Enhanced)ペルシア語Maryam Mirzakhani数が舞い踊る
果てなき空間で
真実が芽吹く

数が優雅に舞い踊る
果てなき空間を進む
真実が新たに芽吹く
-v "Dariush (Enhanced)"
Rocko (Italian)イタリア語Astro Boy (Tetsuwan Atomu)
イタリア語吹き替え
金属のロボット
人の心臓が力強く鼓動する
未来に平和を

金属のロボット
人の心臓が内で力強く鼓動する
未来に平和が訪れる
-v "Rocko (Italian (Italy))"
Rocko (Italian)イタリア語Jeeg Robot d'Acciaio
(鋼鉄ジーグ)
輝く鋼鉄
弱き者を守る者
空を飛ぶ

輝く鋼鉄の戦士
弱き者を守る者
天を駆ける
-v "Rocko (Italian (Italy))"
Rocko (Italian)イタリア語Numero 5
(ショート・サーキット)
無限の入力
意識が目覚める
人工の命

無限の入力
意識が目覚める
人工の命
-v "Rocko (Italian (Italy))"
Binbin (Enhanced)中国語(中国本土)Li Shanlan算術の道が流れる
数理の演繹が真理を導く
知恵が花開く

算術が流れる
論理が真理の模様を解き明かす
知恵が明るく花開く
-v "Binbin (Enhanced)"
Han (Premium)中国語(中国本土)Chen Jingrun素数が舞い踊る
ゴールドバッハ予想がささやく
真理は永遠に流れる

素数が舞い踊る
ゴールドバッハ予想がささやく
真理は永遠に流れる
-v "Han (Premium)"
Lilian (Premium)中国語(中国本土)Hua Luogeng数論の光
解析が美を広げる
知恵が昇華する

数論が輝く
解析が優美さを広げる
知恵が純粋に高まる
-v "Lilian (Premium)"
Meijia中国語(台湾)Sun-Yung Alice Chang幾何の美が現れる
曲率は絶えず流れる
空間が広がる

幾何が姿を見せる
曲率は絶えず流れる
空間が新たに広がる
-v "Meijia"
Sinji (Premium)中国語(香港)Shing-Tung Yau多様体の奥義
カラビ空間が動く
次元が織りなす

多様体が姿を現す
流れるカラビ空間
次元が真理を織りなす
-v "Sinji (Premium)"
Tingting中国語(中国本土)Wang Zhenyi星々の軌跡が明らかに
天文学と数学が交わる
知恵が輝く

星明かりの道が明るく輝く
天文学と数が出会う
知恵が光を放つ
-v "Tingting"
Yue (Premium)中国語(中国本土)Chern Shiing-shen微分幾何
ファイバー束に真理を探す
本質が現れる

微分形式
ファイバー束の中に真理を探す
本質が現れる
-v "Yue (Premium)"
## 設定

MCP 設定ファイルに以下を追加してください。

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

必要条件

  • macOS(組み込みの say コマンドを使用します)
  • Node.js >= 14.0.0

貢献者

ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。