关于 Together.ai Mcp
Together.ai Mcp 是一个 Node.js MCP 服务,将 Together AI 的聊天、图像生成、视觉分析和嵌入接口提供为工具,适用于 Claude Desktop、Cursor、VS Code 等 MCP 客户端。它还处理推理模型的响应字段差异,并提高默认 token 预算以避免空响应。
主要功能
- 01调用聊天与推理模型
- 02生成并保存图像
- 03使用视觉模型分析图像
- 04生成文本嵌入向量
- 05处理推理模型的多种响应字段
适用场景
- 01在 MCP 客户端中调用 Together AI 聊天模型
- 02生成图像并保存为 PNG 文件
- 03向视觉模型提交远程或本地图片分析
- 04为 RAG 或检索流程生成文本嵌入
MCP 相关
它向 MCP 客户端公开 Together AI 的聊天、图像生成、视觉分析和嵌入能力,作为可调用工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
together-ai-mcp
一个 Node.js Model Context Protocol(MCP)服务,将 Together AI 的推理端点(聊天补全、图像生成、视觉和嵌入)公开为工具,可供 Claude Desktop、Cursor、VS Code 和其他任何兼容 MCP 的客户端调用。
为何创建此项目
我创建此 MCP,是因为通过 Together AI 访问模型时遇到了几个问题。
1. 推理模型返回无提示空响应
Together AI 最大的推理模型(GLM-5、Qwen3.5-397B、MiniMax M2.5、Kimi K2.5)会将思维链写入非标准响应字段,并且在生成最终答案前就会耗尽 OpenAI SDK 的默认令牌预算。
两个问题相互叠加:
令牌预算耗尽。 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"
}
}
}
}
请参阅 examples/claude-config.md,了解 Cursor 和 VS Code 配置。
工具
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 | 必填 | 图像描述 |
model | string | black-forest-labs/FLUX.1-schnell | 模型 ID |
width | integer | 1024 | 图像宽度(像素) |
height | integer | 1024 | 图像高度(像素) |
steps | integer | 4 | 扩散步数 |
n | integer | 1 | 图像数量 |
negative_prompt | string | — | 要排除的内容 |
图像会以 PNG 文件格式保存到 IMAGE_OUTPUT_DIR。
注意: 图像生成使用直接的
fetch调用,而不是 OpenAI SDK 的images.generate(),因为 SDK 在调用 Together AI 端点时会移除steps等自定义参数。
together_vision
使用视觉模型分析图像。
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
prompt | string | 必填 | 问题或指令 |
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[] | 必填 | 要生成嵌入的文本 |
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 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。