Skip to main content
Glama

MCP Badge

mlx-serve-mcp

リモートの mlx-serve インスタンスを呼び出し可能なツールに変える MCP サーバー — これにより、あらゆるデバイスの MCP クライアント(Claude Code、Claude Desktop、Cline、...)が、Mac の ip:port を通じて画像、音声、音楽、動画、3D メッシュを生成できます。

mlx-serve は Apple Silicon 上でモデルをネイティブに実行します。このブリッジは、片側で MCP を話し、もう片側で mlx-serve の OpenAI スタイルのメディア API(/v1/images、/v1/audio、/v1/video、/v1/3d)を話します。ローカルでは何も生成されません — あなたのマシンはサーバーと HTTP で通信するだけです。

┌──────────────┐  stdio/MCP   ┌────────────────┐    HTTP     ┌──────────────────┐
│ MCP client   │ ◄──────────► │  mlx-serve-mcp │ ──────────► │ mlx-serve server │
│ (any device) │              │  (this package)│  ip:port    │  (Apple Silicon) │
└──────────────┘              └────────────────┘             └──────────────────┘

インストールと実行

Python ≥ 3.10 が必要です。uv がインストールされている場合:

cd mlx-serve-mcp
uv sync                 # create venv + install deps
uv run mlx-serve-mcp --url 192.168.1.10:11234

URL はベアの ip:port(http とみなされます)、host:port、または完全な http(s)://... URL を受け付けます。

設定

CLI フラグは環境変数を上書きします:

フラグ

環境変数

デフォルト

意味

--url

MLX_SERVE_URL

http://127.0.0.1:11234

mlx-serve のアドレス

--api-key

MLX_SERVE_API_KEY

(なし)

サーバーがAPIキー認証で動作する場合のBearerキー

--output-dir

MLX_SERVE_OUTPUT_DIR

~/Downloads/mlx-serve-mcp

生成されたメディアファイルの保存先

--timeout

MLX_SERVE_TIMEOUT

1800

HTTPタイムアウト(秒)。動画や音楽は数分かかることがあります

デフォルトモデル

各メディアツールはオプションの model 引数を受け付けます。省略した場合、ツールは設定可能なデフォルト(環境変数 → 組み込み)にフォールバックします:

環境変数

ツール

組み込みデフォルト

MLX_SERVE_IMAGE_MODEL

generate_image

Runpod/FLUX.2-klein-4B-mflux-4bit

MLX_SERVE_IMAGE_EDIT_MODEL

edit_image

Runpod/FLUX.2-klein-4B-mflux-4bit

MLX_SERVE_TTS_MODEL

text_to_speech

mlx-community/Qwen3-TTS-12Hz-1.7B-Base-bf16

MLX_SERVE_MUSIC_MODEL

generate_music

ddalcu/MiniMax-Music3-MLX-Serve-8bit

MLX_SERVE_VIDEO_MODEL

generate_video

ddalcu/MiniMax-H3-FL2VA-MLX-Serve-8bit

MLX_SERVE_MESH_MODEL

generate_3d

ddalcu/Hunyuan3D-2.1-MLX-Serve-8bit

モデル推奨(mlx-serve での実機テストに基づく):

  • ddalcu/Mage-Flow-Turbo-MLX-Serve-8bit は高速ですが、品質は Runpod/FLUX.2-klein-4B-mflux-4bit に及びません — 特に顔の生成は歪みがちです。ただし、画像内のテキスト描画では mlx-community/flux2-klein-9b-4bit よりもはるかに信頼性が高いため、肖像画ではなくテキスト中心のアート(ポスター、タイポグラフィ、看板)には ddalcu/Mage-Flow-Turbo-MLX-Serve-8bit が推奨されます。

  • ddalcu/Mage-Flow-Edit-Turbo-MLX-Serve-8bit は mlx-serve で重み/パラメータエラー(Model load failed: MissingMageFlowWeight)が発生することがあり、モデルが使用できなくなります。

  • mlx-community/flux2-klein-9b-4bit にも同様のロード失敗の問題があります。

結論: generate_image と edit_image の両方に Runpod/FLUX.2-klein-4B-mflux-4bit を使用してください — このグループの中で、信頼性の高いロードと良好な結果(顔を含む)の両方を実現する唯一の画像モデルです。

サーバーに実際にインストールしているモデルを固定するには、MCP クライアントの設定でこれらを設定してください:

{
  "mcpServers": {
    "mlx-serve": {
      "command": "uv",
      "args": ["--directory", "/path/to/mlx-serve-mcp", "run", "mlx-serve-mcp", "--url", "192.168.1.10:11234"],
      "env": {
        "MLX_SERVE_API_KEY": "private",
        "MLX_SERVE_IMAGE_MODEL": "ddalcu/Mage-Flow-Turbo-MLX-Serve-8bit",
        "MLX_SERVE_TTS_MODEL": "mlx-community/Qwen3-TTS-12Hz-1.7B-Base-bf16"
      }
    }
  }
}

Related MCP server: imagine-mcp

MCP クライアントへの組み込み

Claude Code(.mcp.json / claude mcp add):

{
  "mcpServers": {
    "mlx-serve": {
      "command": "uv",
      "args": [
        "--directory", "/absolute/path/to/mlx-serve-mcp",
        "run", "mlx-serve-mcp",
        "--url", "192.168.1.10:11234"
      ]
    }
  }
}

Claude Desktop(claude_desktop_config.json)も同じ command/args 形式を使用します。サーバーがキーを必要とする場合は "env": {"MLX_SERVE_API_KEY": "..."} を追加してください。

ツール

ツール

エンドポイント

戻り値

health_check

GET /health

到達可能性テキスト

list_models

GET /v1/models

モデルID + 機能フラグ(image/speech/music/video/3d/chat)

load_model(model)

POST /v1/load-model

GPUメモリにロード(オプションでデフォルトとして)

unload_model(model)

POST /v1/unload-model

GPUメモリを解放

generate_image(prompt, size?, seed?, steps?, model?)

POST /v1/images/generations

インライン画像 + 保存されたPNGパス

edit_image(prompt, image_path, mode=edit|variation, ...)

同上

インライン画像 + 保存されたPNGパス

text_to_speech(text, voice?/ref_audio_path?, speed?, seed?)

POST /v1/audio/speech

保存されたWAVパス

generate_music(prompt_style, lyrics?, duration_seconds?, bpm?, task?, src_audio_path?)

POST /v1/audio/music-generations

保存されたWAVパス

generate_video(prompt, num_frames?, width?, height?, turbo?, first_frame_image_path?...)

POST /v1/video/generations

エンコードされたMP4パス

generate_3d(image_path, steps?, octree_resolution?, texture?...)

POST /v1/3d/generations

保存されたGLBパス

出力ファイルは <output-dir>/{images,audio,video,mesh}/ の下にタイムスタンプ付きの名前で保存されます。すべてのツールは結果テキストで絶対パスを報告します。

プロンプト

prompts/list / prompts/get で公開されるワンクリックのプロンプトテンプレート:

プロンプト

説明

create_poster

テキスト中心のポスター/タイポグラフィ(Mage-Flow-Turbo — テキスト描画に最適)

portrait_photo

リアルな肖像画(FLUX.2-klein-4B — 顔に最適)

lofi_track

ローファイ・ヒップホップの音楽トラック(MiniMax-Music3)

speak_text

自然なTTS(Qwen3-TTS)

image_to_3d

切り抜き写真 → テクスチャ付きGLB(Hunyuan3D-2.1)

short_video

9フレームのプレビュー動画(最速の方法)

リソース

resources/list / resources/read で公開されるライブデータソース:

リソース

URI

内容

models

mlx-serve://models

機能フラグ付きのライブモデル一覧

server_status

mlx-serve://status

ヘルス、バージョン、ロード済みモデル

model_guidance

mlx-serve://guidance

ツールごとの推奨モデル(実機テスト済み)

LobeHub Marketplace

このパッケージは LobeHub MCP Marketplace に公開されており、完全な lhm.plugin.json マニフェストと、エージェントによる発見のための skill.md が含まれています。

設計メモ

  • 動画: mlx-serve はエンコード済みファイルではなく生の RGB8 フレームバイト(+ オプションの PCM s16le トラック)で応答します。このブリッジは ffmpeg 経由でそれらを H.264/AAC MP4 に多重化します — システムの ffmpeg を優先し、imageio-ffmpeg 依存関係に同梱された静的バイナリにフォールバックするため、別途インストールは不要です。

  • 画像はインライン(MCP 画像コンテンツ、即時プレビュー)と保存された PNG ファイルの両方で返されます。

  • エラー: mlx-serve の名前付き 400 メッセージ(例: 'speed' must be in (0, 5])はそのまま表示されるため、呼び出し元の LLM が自己修正できます。

  • LoRA フィールドは意図的に公開されていません。これらはサーバーのディスク上の .safetensors パスを必要とするため、リモートの呼び出し元にはほとんど意味がありません。

  • 長時間の生成はここでは単に遅い HTTP リクエストです。凝ったクリップを生成する場合は --timeout を上げてください。

開発

uv sync
uv run pytest          # unit tests (mocked HTTP, no server required)
uv run mlx-serve-mcp --help

Available Tools

10 tools
edit_imageA

Edit an existing image with a text prompt.

Args: image_path: Absolute or ~-relative path to the source image (PNG/JPEG). prompt: Description of the desired edit. model: Model id. Defaults to MLX_SERVE_IMAGE_EDIT_MODEL. size: Output dimensions. strength: Denoising strength 0..1 (how much to change the image). seed: Optional random seed.

ParametersJSON Schema
NameRequiredDescriptionDefault
seedNo
sizeNo
modelNo
promptYes
strengthNo
image_pathYes

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are absent, so the description carries the full burden. It does disclose the default model and strength range, but it does not say whether the original image is overwritten, where the edited result is saved, or what the return value is. This is a notable gap for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in one sentence, followed by a compact argument list. Every line adds value and there is no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

All parameters are documented, but the tool has no output schema and no annotations. The description never states what the tool returns or what side effects it has on the source file. For a 6-parameter tool with no other structured context, this leaves an agent unable to fully predict the tool's effect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description compensates thoroughly. It defines all six parameters with useful detail: image_path path format and supported formats, prompt purpose, model default, size meaning, strength range and interpretation, and seed optionality. This goes well beyond the bare schema types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Edit an existing image with a text prompt,' which states a specific verb, resource, and method. It clearly differentiates this tool from siblings like generate_image (create new) and text_to_speech (unrelated audio).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The usage context is implied: edit an existing image. But the description never explicitly mentions alternatives such as generate_image or conditions when not to use this tool. The distinction from sibling tools is inferable but not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_3dA

Generate a textured 3D mesh (GLB) from a subject image on the remote server.

The image should be a clean cutout of the subject with real alpha transparency (an opaque photo also works — the server composites it on white). Returns a GLB file path you can open in Blender / three.js / Quick Look.

Args: image_path: Absolute or ~-relative path to a local PNG/JPEG of the subject. model: 3D mesh model id. Defaults to MLX_SERVE_MESH_MODEL. steps: Shape sampling steps (default 30). octree_resolution: Mesh grid resolution in [64, 512] (default 256). guidance_scale: Shape guidance in [0, 20] (default 5). texture: Request the texture-paint stage for a textured GLB. Requires the paint weights to be installed server-side, else a named error. texture_steps: Texture painting steps in [1, 100] when texture=true. seed: Optional seed.

ParametersJSON Schema
NameRequiredDescriptionDefault
seedNo
modelNo
stepsNo
textureNo
image_pathYes
texture_stepsNo
guidance_scaleNo
octree_resolutionNo

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

It discloses server-side execution, the image-compositing behavior, and returns a GLB file path openable in Blender/three.js/Quick Look. With no annotations, this carries the safety/behavior burden reasonably, though it leaves slight ambiguity about whether the default output is textured or untextured given the optional texture flag.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Every sentence adds information: the first line is a crisp summary, then image requirements, return format, and a compact parameter list. It is long only because it carries type/range/default detail that no other structured field provides.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema or annotations, the description is thorough enough to call correctly: input path syntax, defaults, ranges, prerequisite for texture, and output file type are all covered. No critical call-time detail is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the Args block documents all eight parameters with types, defaults, ranges, or conditions (e.g. octree_resolution [64,512] default 256; texture_steps [1,100] when texture=true). This fully compensates for the bare input schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource: 'Generate a textured 3D mesh (GLB) from a subject image on the remote server.' This clearly separates it from sibling tools like text_to_speech, generate_music, generate_video, and generate_image.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives concrete input prerequisites (clean cutout with alpha, opaque photos composited on white) and a hard condition for texture mode (paint weights must be installed, otherwise a named error). It does not explicitly name alternative tools or state when-not-to-use, but the 3D mesh target makes the decision context clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_imageA

Generate an image from a text prompt on the remote server.

The image is saved as a local PNG file; the returned text includes the absolute path of the saved file.

Args: prompt: Text description of the image to generate. model: Model id (from list_models). Defaults to MLX_SERVE_IMAGE_MODEL (or the built-in default if unset). size: Output dimensions, e.g. "512x512" or "1024x1024". seed: Optional random seed for reproducibility. steps: Sampling steps (backend-specific). cfg_scale: Classifier-free guidance scale (SDXL/Flux style). guidance_scale: Guidance scale (MAGE-Flow style).

ParametersJSON Schema
NameRequiredDescriptionDefault
seedNo
sizeNo
modelNo
stepsNo
promptYes
cfg_scaleNo
guidance_scaleNo

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the disclosure burden. It explicitly mentions that the tool saves a PNG file and returns its absolute path. It omits details like overwrite behavior or file lifetime, but the core side effect is visible.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose and output behavior, followed by a compact and structured Args block. Every line adds value and the length is justified by the need to document seven parameters with no schema-level descriptions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that there is no output schema, the description correctly covers both the file-saving behavior and the returned absolute path. It also documents defaults and tuning parameters. It could be slightly more complete on routing to alternatives and file overwrite behavior, but an agent has enough to call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does thoroughly. The Args section explains all seven parameters, including the model default, example sizes, meaning of seed, backend-specific steps, and the distinction between cfg_scale and guidance_scale.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Generate an image from a text prompt on the remote server.' It also states the key output behavior (saved as PNG, returned path), which distinguishes it from siblings like text_to_speech, generate_video, and edit_image.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly frames the text-to-image generation use case and points to list_models as the source for model ids. It does not explicitly say 'use edit_image instead for existing images,' but the context of generating from a text prompt is clear enough for correct tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_musicA

Generate a music track from a style prompt; returns a local WAV path.

Args: prompt_style: Style description, e.g. "lo-fi hip hop, mellow piano". model: Music model id. Defaults to MLX_SERVE_MUSIC_MODEL. lyrics: Optional lyrics for vocal tracks. instrumental: True for no vocals (default true for text2music). duration_seconds: Target length 10..600 (default 60). bpm: Tempo, e.g. 120. keyscale: Musical key, e.g. "C major" / "E minor". timesignature: Time signature, e.g. "4/4". vocal_language: Vocal language code for sung lyrics, e.g. "en", "zh". task: "text2music" (default) | "cover" | "complete". src_audio_path: Local WAV (10-600 s) source for cover/complete tasks; its length becomes the output length. cover_strength: 0..1 how strongly to follow the cover source (default 1). seed: Optional seed for reproducibility. steps: Optional sampling steps (music3 backend only).

ParametersJSON Schema
NameRequiredDescriptionDefault
bpmNo
seedNo
taskNo
modelNo
stepsNo
lyricsNo
keyscaleNo
instrumentalNo
prompt_styleYes
timesignatureNo
cover_strengthNo
src_audio_pathNo
vocal_languageNo
duration_secondsNo

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses the local-WAV side effect, the environment-variable model default, the output-length behavior for cover/complete tasks, the cover_strength range, and the backend-only caveat for steps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The high-level summary is front-loaded, followed by a compact Args block. Each line maps to a parameter and adds unique information; there is no filler or repetition of the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (14 params, no annotations, no output schema), the description is complete enough to call the tool correctly: required prompt_style, optional parameters, task variants, constraints, and return type are all specified. Only minor operational details such as completion time or file cleanup are absent, and they are not essential for selection or invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description compensates fully: every one of the 14 parameters receives meaning, defaults, ranges, examples, or accepted values (e.g. duration_seconds 10..600, task enum, vocal_language examples). The schema alone would be nearly useless without this.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence states a specific action ('Generate'), a resource ('a music track'), the input ('a style prompt'), and the output ('a local WAV path'). This clearly separates it from sibling generation tools such as generate_image, generate_video, and generate_3d.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Use is implied by the music-generation focus and the task parameter values, but the description never explicitly says when to prefer generate_music over siblings like text_to_speech or generate_video. It provides strong internal task guidance (text2music vs cover vs complete), but no when-not-to-use statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_videoA

Generate a short video from a text prompt; returns a local MP4 path.

mlx-serve answers with raw frames (+ optional soundtrack); this tool encodes them into an H.264 MP4 (AAC audio when present) locally via ffmpeg, so the returned file is playable anywhere. Generation is slow — minutes per clip depending on frame count and resolution.

Args: prompt: Scene description for the video. model: Video model id. Defaults to MLX_SERVE_VIDEO_MODEL. num_frames: Frame count. LTX backends use an 8N+1 ladder (default 9; e.g. 9/25/33/49/57/81...); MiniMax-H3 uses 17k+5 (default 56). width: Pixel width (defaults: LTX 384, H3 256). Two-stage pipelines need both dimensions divisible by 64. height: Pixel height (defaults: LTX/H3 256). steps: Sampling steps (backend-specific defaults). turbo: Use the distilled 4-step turbo path where the model pack provides it. seed: Optional seed. cfg_scale: Guidance scale. first_frame_image_path: Optional local image to condition the first frame. last_frame_image_path: Optional local image to condition the final frame. audio_path: Optional local WAV to mix as soundtrack (must match frame duration).

ParametersJSON Schema
NameRequiredDescriptionDefault
seedNo
modelNo
stepsNo
turboNo
widthNo
heightNo
promptYes
cfg_scaleNo
audio_pathNo
num_framesNo
last_frame_image_pathNo
first_frame_image_pathNo

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full transparency burden and does so well. It reveals the ffmpeg/H.264 encoding step, local MP4 output, optional AAC audio, slowness, backend-specific frame ladders, default resolutions, and the 64-divisibility constraint for two-stage pipelines. This is substantial behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and output, then briefly explains the pipeline and performance, and ends with a well-organized Args list. Despite covering many details, every sentence adds information and the structure makes it scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter video generation tool with no annotations and no output schema, this description is remarkably complete. It covers output format, generation behavior, performance expectations, parameter rules, defaults, and optional inputs. An agent has enough to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the Args section compensates fully for all 12 parameters. It gives defaults, backend-specific rules (LTX 8N+1, MiniMax-H3 17k+5), divisibility requirements, optional first/last frame conditioning, and audio duration matching. This is far beyond what the bare schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource: "Generate a short video from a text prompt; returns a local MP4 path." This clearly distinguishes it from sibling generation tools like generate_image or generate_music while stating the output format.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is obvious from the purpose statement and the media-specific wording, but the description never explicitly contrasts this tool with alternatives or states when not to use it. It also warns that generation is slow, which faintly implies a speed tradeoff, but no exclusions or alternative routing are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

health_checkA

Check connectivity to the remote mlx-serve instance.

Pings GET /health on the configured server. Use this first to verify that the ip:port is reachable before running any generation.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full behavioral responsibility. It discloses that the tool performs an HTTP GET to /health and is a non-mutating connectivity probe. It does not describe exact response semantics, but the purpose is clear enough for a health check.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with no filler. The endpoint and primary purpose are front-loaded, followed by practical usage guidance. Every sentence contributes value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity, parameterless probe, the description covers what the tool does, how it does it (GET /health), and when to use it. It does not spell out the success/failure return payload, but the stated goal—reachability verification—makes the expected result reasonably clear even without an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and an empty schema with 100% coverage, so there is no parameter ambiguity. The description correctly adds no parameter details, and the baseline for zero-parameter tools applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Check connectivity'), the target resource ('remote mlx-serve instance'), and the exact mechanism ('GET /health'). This is specific and easily distinguishes it from sibling generation and model-management tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit guidance: 'Use this first to verify that the ip:port is reachable before running any generation.' This clearly tells an agent when to invoke it relative to other operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_modelsA

List models available on the remote mlx-serve server with their capabilities.

Returns each model's id plus capability flags: chat/vision, image engine, speech (TTS) engine, music backend, video engine, and 3D mesh engine. Pick ids from this list for the model argument of generation tools; a media tool without model uses whatever matching model the server has loaded or configured as default.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden of behavioral disclosure. It does this well by describing the return value: each model's id and capability flags for chat/vision, image, speech, music, video, and 3D mesh. The operation is clearly a read-only listing, and the default-model behavior adds useful context beyond the basic action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences with no waste: it states the purpose, details the returned capabilities, and explains how the list is used by other tools. The most important information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter listing tool with no output schema, the description fully covers what the agent needs: what the tool returns, which capabilities are reported, and how to integrate those ids into generation-tool calls. Nothing important is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema is empty with zero parameters, so there is nothing to explain. The description appropriately focuses on output semantics rather than parameter mechanics, matching the baseline for a parameterless tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a clear, specific verb ('List') and resource ('models available on the remote mlx-serve server') and expands on capabilities. It is clearly distinguishable from sibling generation and model-management tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells the agent to pick model ids from this list for the model argument of generation tools, and clarifies that media tools without an explicit model use the server default. This is direct, actionable guidance for when to use the tool and how to use its results.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

load_modelA

Explicitly cold-load a model on the remote mlx-serve server into GPU memory.

Args: model: Model id as returned by list_models (or an absolute path to a model directory on the SERVER machine). make_default: Also promote it to the server-wide default model. Leave false for side-loaded media models so chat traffic keeps its current default.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYes
make_defaultNo

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of behavioral disclosure. It explains the memory target and default-promotion side effect, and warns about chat-traffic implications, but it does not mention whether triggering a load can evict other models, whether it is idempotent, or any permission/error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, front-loaded with the core purpose, and organized with an Args section. Every sentence adds useful information without filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter tool with no output schema, the description is largely complete: parameters are precisely documented and routing/default behavior is clarified. It could go further by describing side effects on currently loaded models, but an agent can likely invoke the tool correctly with the information provided.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 0% schema description coverage, the description fully documents both parameters: model is tied to list_models and server-side paths, and make_default is explained with concrete guidance about default promotion and side-loaded media models. This adds significant meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('cold-load'), a specific resource (model on the remote mlx-serve server), and a specific destination (GPU memory). This clearly distinguishes it from siblings like list_models and unload_model.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives useful parameter-level context, especially the warning to leave make_default false for side-loaded media models. However, it does not explicitly say when to use this tool versus alternatives like unload_model or how it relates to automatic loading behavior.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

text_to_speechA

Synthesize speech from text; returns a local WAV file path.

Args: text: The text to speak. model: TTS model id. Defaults to MLX_SERVE_TTS_MODEL. voice: Voice name or id (backend-specific). speed: Playback speed multiplier (0.25..4.0, default 1.0).

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
modelNo
speedNo
voiceNo

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full behavioral disclosure. It does mention that the tool returns a local WAV file path and provides speed range (0.25..4.0) and default values, which is useful. However, it doesn't disclose potential side effects (e.g., file cleanup, async behavior) or whether a model must be pre-loaded. It adds some context beyond the schema but not comprehensive detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: a one-line purpose, then a compact list of parameters with explanatory details. Each sentence earns its place, and the output format is front-loaded. No unnecessary repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with no output schema and no annotations, the description is nearly complete. It covers all parameters and the return value (WAV file path). It might benefit from noting whether the operation is synchronous or if any model loading is required, but these are minor gaps for a text-to-speech tool. Overall, it provides sufficient information for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description fully compensates by describing each parameter: text (what to speak), model (ID with default), voice (backend-specific), and speed (range and default). This adds significant meaning beyond the bare schema types and is essential for correct invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Synthesize speech from text; returns a local WAV file path,' which specifies a precise verb, resource, and output. It is easily distinguished from sibling tools (generate_music, generate_image, etc.) by the explicit text-to-speech purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly mention when to use this tool over alternatives or provide exclusions. The distinct purpose (speech synthesis) implies usage, but there is no direct guidance such as 'Use this when you need spoken audio' or comparisons to other generation tools. The parameter defaults give some context but not usage conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unload_modelA

Free a model's GPU memory on the remote mlx-serve server.

The model stays registered (it can be reloaded later); only its resident weights are evicted. Useful after heavy media generation to reclaim unified memory.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYes

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden. It goes well beyond the tool name by disclosing that unloading frees GPU memory, does not deregister the model, only evicts resident weights, and that the model can later be reloaded. This gives an agent an accurate mental model of the side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: purpose, behavioral consequence, and usage context appear in three tight sentences. Every sentence adds value and none repeat schema or annotation data.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter unload operation, the description covers what happens, what remains after the operation, and when it is useful. It does not mention return values or error behavior, which could matter without an output schema, but the core information needed to select and invoke the tool is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema only defines a required 'model' string with no description, and schema description coverage is 0%. The description adds some semantics by implying the model is a registered model on the server, but it never specifies how the model identifier should be supplied or where it comes from. Given a single obvious parameter, the description partially compensates but does not fully document the expected value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a specific verb and resource: 'Free a model's GPU memory on the remote mlx-serve server.' It clearly differentiates from siblings like load_model by explaining that the model stays registered and only resident weights are evicted. The behavior is unambiguous and not a tautology.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear usage context: 'Useful after heavy media generation to reclaim unified memory.' It implies the relationship with load_model by noting the model can be reloaded later, but it does not explicitly name when not to use it or provide an alternative tool route. This is clear context without formal exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 10 tool updatesv0.1.0
    • First observededit_image
    • First observedgenerate_3d
    • First observedgenerate_image
    • First observedgenerate_music
    • First observedgenerate_video
    • First observedhealth_check
    • First observedlist_models
    • First observedload_model
    • First observedtext_to_speech
    • First observedunload_model

TDQS

A4.2/5.0

Scored across 10 tools

Disambiguation5/5

Each tool targets a distinct modality or administrative action: TTS, music, video, 3D, image generation, image editing, health check, and model management. No two tools overlap in purpose, and even the two audio tools are clearly separated by speech vs. music.

Naming Consistency4/5

The set mostly follows a verb_noun pattern: generate_music, generate_video, generate_image, edit_image, list_models, load_model, unload_model. text_to_speech breaks the pattern slightly, but it is still readable and the deviation is minor.

Tool Count5/5

Ten tools is well-scoped for a media-generation server: creative generation/edit tools, TTS, and operational tools for health and model management. Each tool earns its place and none feel redundant.

Completeness4/5

Core media generation workflows are well covered: image generation/edit, video, music, TTS, and 3D mesh generation, plus model lifecycle management. The main gap is that list_models advertises chat/vision capability, but no chat or vision tool is exposed, leaving that part of mlx-serve unreachable.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers