Together.ai Mcp について
Together.ai Mcpは、Together AIのチャット、画像生成、画像分析、埋め込み機能をツールとして公開するNode.js製MCPサーバーです。Claude Desktop、Cursor、VS Codeなどで利用でき、推論モデルの異なる応答フィールドに対応し、デフォルトのトークン予算を引き上げています。
主な機能
- 01チャット・推論モデルの呼び出し
- 02画像の生成と保存
- 03画像をビジョンモデルで分析
- 04テキスト埋め込みの生成
- 05推論モデルの異なる応答フィールドに対応
活用シーン
- 01MCPクライアントからTogether AIのチャットモデルを呼び出す
- 02画像を生成してPNGファイルとして保存
- 03リモートまたはローカル画像を分析に送る
- 04RAGや検索パイプライン向けのテキスト埋め込み生成
MCP 対応
Together AIのチャット、画像生成、画像分析、埋め込み機能を、MCPクライアントが呼び出せるツールとして公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
together-ai-mcp
Together AI の推論エンドポイント(チャット補完、画像生成、ビジョン、埋め込み)を、Claude Desktop、Cursor、VS Code、その他の MCP 対応クライアントから呼び出せるツールとして公開する Node.js 製の Model Context Protocol(MCP)サーバーです。
このプロジェクトの目的
Together AI 経由でモデルにアクセスする際にいくつか問題があったため、この MCP を作成しました。
1. 推論モデルで応答が空になる問題
Together AI の最大規模の推論モデル(GLM-5、Qwen3.5-397B、MiniMax M2.5、Kimi K2.5)は、思考過程を標準外のレスポンスフィールドに出力します。そのため、最終回答を生成する前に OpenAI SDK のデフォルトのトークン予算を使い切ってしまいます。
次の 2 つの問題が重なっています。
トークン予算の枯渇。 OpenAI SDK のデフォルトの max_tokens は 2048 です。推論モデルでは、この予算が思考フェーズだけで使い切られ、message.content が設定されないままになります。トークン分の料金が発生してもエラーは発生せず、応答は何も返さないままになります。
レスポンスフィールドの分散。 Together AI では、モデルファミリーごとに出力先のフィールドが異なります。
| フィールド | 使用モデル |
|---|---|
message.content | 標準モデル、Qwen(インラインの <think> タグ) |
message.reasoning_content | DeepSeek 形式 |
message.reasoning | Together AI 形式(GLM-5、MiniMax、Kimi) |
message.content だけを読み取るコードはもちろん、message.content \|\| message.reasoning を読み取るコードでも、一部のモデルでは空文字列が返されます。
// Broken — misses reasoning_content (DeepSeek format):
const text = message.content || message.reasoning || '';
// Fixed — covers all Together AI reasoning model formats:
const text = message.content || message.reasoning_content || message.reasoning || '';
デフォルトの max_tokens を 8192 に引き上げ、推論モデルが最終回答を生成する前に思考過程を完了できるだけの予算を確保しています。
2. ビジョンモデルの失敗
ビジョンリクエストで OpenAI SDK の chat.completions.create() を使用すると、Together AI のビジョン API に対してエラーが表面化しないまま失敗します。Together AI では stream: false を明示的に設定する必要がありますが、SDK がこれを送信しない場合があります。失敗しても SDK のエラーにレスポンス本文が含まれないため、根本原因を特定できません。
// Broken — SDK may omit stream:false; errors are opaque:
const response = await openai.chat.completions.create({ model, messages });
// Fixed — raw fetch, explicit stream:false, full error body in exception:
const response = await fetch('https://api.together.xyz/v1/chat/completions', {
method: 'POST',
headers: { Authorization: `Bearer ${apiKey}`, 'Content-Type': 'application/json' },
body: JSON.stringify({ model, messages, max_tokens, stream: false }),
});
if (!response.ok) {
const body = await response.text();
throw new Error(`Vision API error ${response.status}: ${body.slice(0, 200)}`);
}
機能
- チャット補完 — あらゆる Together AI のテキストモデルまたは推論モデルに対応し、プロンプトと複数ターンのメッセージを完全にサポートします
- 推論モデルのサポート — GLM-5、Qwen3.5-397B、MiniMax M2.5、Kimi K2.5 を正しく処理します(上記参照)
- 画像生成 — FLUX.1-dev、FLUX.1-schnell、Stable Diffusion XL に対応し、画像をディスクに保存します
- ビジョン — Llama 3.2 Vision または Qwen 2.5 VL を使用して画像を分析します
- 埋め込み — BGE および Snowflake Arctic モデルを使用して、RAG/検索パイプライン用のベクトルを生成します
インストール
前提条件
- Node.js 18+
- Together AI API キー — api.together.ai で取得
セットアップ
git clone https://github.com/your-username/together-ai-mcp
cd together-ai-mcp
npm install
cp .env.example .env
# Edit .env and add your TOGETHER_API_KEY
Claude Desktop への追加
~/Library/Application Support/Claude/claude_desktop_config.json を編集します。
{
"mcpServers": {
"together-ai": {
"command": "node",
"args": ["/absolute/path/to/together-ai-mcp/index.js"],
"env": {
"TOGETHER_API_KEY": "your_api_key_here",
"IMAGE_OUTPUT_DIR": "/path/to/save/images"
}
}
}
}
Cursor と VS Code の設定については、examples/claude-config.md を参照してください。
ツール
together_chat
Together AI の任意のチャットモデルまたは推論モデルを呼び出します。
| パラメーター | 型 | デフォルト | 説明 |
|---|---|---|---|
model | string | meta-llama/Llama-3.3-70B-Instruct-Turbo | モデル ID |
prompt | string | — | ユーザーメッセージ(messages とのいずれか一方を使用) |
messages | array | — | 複数ターンの [{role, content}] 配列 |
system | string | — | システムプロンプト(prompt との併用時のみ使用) |
temperature | number | 0.7 | 0.0~2.0 |
max_tokens | integer | 8192 | 推論モデルが思考過程を完了するための予算を確保できるよう、SDK のデフォルト値から引き上げています |
together_generate_image
FLUX または SDXL モデルを使って画像を生成します。
| パラメーター | 型 | デフォルト | 説明 |
|---|---|---|---|
prompt | string | required | 画像の説明 |
model | string | black-forest-labs/FLUX.1-schnell | モデル ID |
width | integer | 1024 | 画像の幅(ピクセル) |
height | integer | 1024 | 画像の高さ(ピクセル) |
steps | integer | 4 | 拡散ステップ数 |
n | integer | 1 | 画像の枚数 |
negative_prompt | string | — | 除外する内容 |
画像は IMAGE_OUTPUT_DIR に PNG ファイルとして保存されます。
注記: Together AI のエンドポイントを呼び出す際に、SDK が
stepsなどのカスタムパラメーターを削除してしまうため、画像生成では OpenAI SDK のimages.generate()ではなく、直接fetchを呼び出します。
together_vision
画像をビジョンモデルで分析します。
| パラメーター | 型 | デフォルト | 説明 |
|---|---|---|---|
prompt | string | required | 質問または指示 |
model | string | meta-llama/Llama-3.2-11B-Vision-Instruct | モデル ID |
image_url | string | — | 公開画像 URL |
image_path | string | — | ローカルファイルパス(base64 に変換) |
max_tokens | integer | 1024 | 応答の最大長 |
together_embed
RAG および検索パイプライン用のテキスト埋め込みを生成します。
| パラメーター | 型 | デフォルト | 説明 |
|---|---|---|---|
input | string | string[] | required | 埋め込むテキスト |
model | string | BAAI/bge-large-en-v1.5 | 埋め込みモデル ID |
モデル
このサーバーは、Together AI のサーバーレス API で利用できるあらゆるモデルに対応しています。モデル ID を渡すだけで使用でき、設定を変更する必要はありません。
以下の表には、私が個人的に使用しているモデルを記載しています。参考情報として掲載しており、利用可能なモデルを限定するものではありません。
モデル ID の確認
利用可能なすべてのモデルは api.together.ai/models で確認できます。各モデルのページには正確な ID 文字列が表示されています。その ID を任意のツールの model パラメーターに渡してください。
{
"tool": "together_chat",
"params": {
"model": "any-model-id-from-together-ai",
"prompt": "Hello"
}
}
制約は、画像生成モデルは together_generate_image、ビジョンモデルは together_vision、埋め込みモデルは together_embed 経由で呼び出す必要があることだけです。画像モデルを together_chat 経由で呼び出すことはできません。
専用エンドポイント: 一部のモデル(例:
meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8)では、サーバーレス API ではなく専用エンドポイントが必要です。このサーバー経由で呼び出すと、Together AI から 400 エラーが返されます。
使用しているモデル
チャット/推論
| モデル | ID | 備考 |
|---|---|---|
| Llama 3.3 70B | meta-llama/Llama-3.3-70B-Instruct-Turbo | デフォルト — 汎用性が高く高速 |
| DeepSeek V3 | deepseek-ai/DeepSeek-V3 | コードと推論に強い |
| DeepSeek R1 | deepseek-ai/DeepSeek-R1 | 推論モデル |
| GLM-5 (744B) | zai-org/GLM-5 | 推論モデル — 上記の修正が必要 |
| Qwen3.5 397B | Qwen/Qwen3.5-397B-A17B | 推論モデル — 上記の修正が必要 |
| MiniMax M2.5 | MiniMaxAI/MiniMax-M2.5 | 推論モデル — 上記の修正が必要 |
| Kimi K2.5 | moonshotai/Kimi-K2.5 | 推論モデル — 上記の修正が必要 |
| Qwen 2.5 7B | Qwen/Qwen2.5-7B-Instruct-Turbo | 軽量/低コスト |
画像生成
| モデル | ID |
|---|---|
| FLUX.1-schnell | black-forest-labs/FLUX.1-schnell |
| FLUX.1-dev | black-forest-labs/FLUX.1-dev |
| Stable Diffusion XL | stabilityai/stable-diffusion-xl-base-1.0 |
ビジョン
| モデル | ID |
|---|---|
| Llama 3.2 11B Vision | meta-llama/Llama-3.2-11B-Vision-Instruct |
| Qwen 2.5 VL 72B | Qwen/Qwen2.5-VL-72B-Instruct |
埋め込み
| モデル | ID |
|---|---|
| BGE Large | BAAI/bge-large-en-v1.5 |
| M2-BERT 32K | togethercomputer/m2-bert-80M-32k-retrieval |
| Snowflake Arctic | Snowflake/snowflake-arctic-embed-m |
テストの実行
npm test
テストスイートでは Node.js 組み込みのテストランナーを使用し、すべての外部依存関係をモックします。テストの実行に API キーは必要ありません。
プロジェクト構成
together-ai-mcp/
├── index.js # MCP server and handler logic
├── package.json
├── .env.example
├── test/
│ └── index.test.js # Full test suite (node:test, no external framework)
└── examples/
├── chat.md # Example prompts for each tool and model
└── claude-config.md # Configuration for Claude Desktop, Cursor, VS Code
依存関係
@modelcontextprotocol/sdk— MCP サーバーのフレームワークopenai— Together AI のbaseURLとともに使用する OpenAI 互換クライアント
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。