Skip to main content
Glama

mcp-qmedia

テキストのみのエージェントがメディア(画像、音声、動画)について質問できるようにする自作のMCPサーバー。エージェントはファイルパス(またはURL)と質問を渡し、サーバーはそれらをOpenCode Zenエンドポイント経由でXiaomi MiMo-V2.5(ネイティブに全モーダル:テキスト/画像/音声/動画入力、テキスト出力)に送信し、回答をテキストで返します。opencodeとClaude Codeの両方から使用されます。

プロバイダー

すべて同じコードパス(OpenAI互換の/chat/completions、base64コンテンツパーツ)。2つが組み込まれており、Web UI(下記)で追加、削除、デフォルトの切り替えが可能です。またはストア~/.config/mcp-qmedia/providers.json(0600、リポジトリ外、キーを保持する可能性あり)を編集することでも可能です。呼び出しごとに:backend="<name>"QMEDIA_BACKENDで保存されたデフォルトを上書きします。

プロバイダー

エンドポイント

モデル

コスト/制限

opencodeのauth.jsonでのキーエントリ

mimo-v2.5 - opencode go (デフォルト)

https://opencode.ai/zen/go/v1

mimo-v2.5

~$0.14/M入力、1Mコンテキスト

opencode-go

mimo-v2.5-free - opencode zen

https://opencode.ai/zen/v1

mimo-v2.5-free

無料、200kコンテキスト、レート制限あり(枯渇時に429 FreeUsageLimitError

opencode

Related MCP server: Vision MCP Server

APIキー — このリポジトリには決して含めない

プロバイダーごとに、解決順序:ストア内のプロバイダー自身のキー(UIで設定)→ QMEDIA_API_KEYOPENCODE_API_KEY~/.local/share/opencode/auth.jsonQMEDIA_AUTH_JSON):プロバイダーのauth_entry、次にキーを持つ他のエントリ。したがって、opencode go / zenにログインしている場合(opencode auth login)、設定するものは何もありません。deploy/env.exampleは秘密でない設定のみを保持します。ストアは0600で書き込まれ、~/.config以下にあり、どのリポジトリにもありません。

セットアップウィザード + プローブ(オンデマンド、デーモンではない)

mcp-qmedia ui(= server.py ui [port])は、実行中に**http://127.0.0.1:8938を提供します。起動して設定し、閉じます(mcp-imapのセットアップウィザードと同様):プロバイダーのリスト(デフォルトがマークされ、キーのステータスとキーの取得元が表示されます — キー自体はブラウザに送信されません)、追加/編集/削除(組み込みはリセット可能、削除不可)、デフォルト設定、およびプローブ**パネル:http(s) URLまたはローカルパスを貼り付け(1行に1つ)、質問(空の場合はdescribeプロンプト)、プロバイダーを選択、質問 — 回答 + タイミング + ページごとの履歴。背後にJSON API:GET/POST /api/providersDELETE /api/providers/<name>POST /api/defaultPOST /api/ask {files, question, provider}、およびGET /api/status(CORS *、メッセージングデーモンのステータスと同じ形状 — ハブページ(ai-agent-setup mcp-hub.servicehttp://127.0.0.1:8930/)がポーリングします。デーモンと同じフィールドセット — ただしqmediaはデーモンではなく、ハブカードはありません。ハブのBridgeカードに表示されます)。ページは「すべてのデーモン ↗」(http://127.0.0.1:8930/)にリンクしています。ページ自体はweb/page.htmlです。MCPサーバーは呼び出しごとに同じストアを読み取るため、変更は再起動なしですぐに適用されます。

ツール(opencodeでは接頭辞qmedia_、Claude Codeではmcp__qmedia__

  • ask(files, question, backend="", system="") — メインツール。files絶対パスのローカルパス(~/…も可。サーバーは共有デーモンであり、そのcwdはプロジェクトではありません)またはhttp(s):// URLのリスト。1回の呼び出しで複数のファイルを指定できるため、モデルはそれらを関連付けることができます。短いヘッダー([mimo-v2.5 - opencode go/mimo-v2.5 · 2 file(s) · 8.8s] + ファイルごとのタイプ/サイズ)と回答を返します。

  • describe(files, backend="") — 質問は不要:詳細な説明。画像はすべての可視テキストをそのまま含み、音声はそのままの文字起こし、動画はタイムスタンプと文字起こし付きのシーンごとの説明。

  • backends() — プロバイダー:エンドポイント、モデル、デフォルト、各プロバイダーにキーが解決するかどうか(キーは決して表示しない)、ffmpegの可用性、制限、ストアパス。

権限:3つすべて読み取り専用で低コスト → 両方のエージェントで許可。注意:ask/describeは指定されたファイルを設定されたプロバイダー(デフォルトは有料API)にアップロードします — ワイルドカードの許可リストは、エージェントが許可なくそれを行うことができることを意味します(プランモードも含む)。それが気になる場合は、デフォルトを無料プロバイダーにしておいてください。

メディア処理

種類

送信方法

備考

画像(png/jpg/gif/webp/heic/avif…)

image_url data URI

> QMEDIA_MAX_BYTES → ffmpegで2000px以下のjpegにダウンスケール

音声(wav/mp3直接;m4a/ogg/opus/flac/…トランスコード)

input_audio {data, format}

wav/mp3以外またはサイズ超過 → ffmpegでmp3モノラル16kHz 48kbpsに変換

動画(mp4/webm直接;mov/mkv/avi/…再エンコード)

video_url data URI + サウンドトラックのinput_audio

エンドポイントはvideo_urlのフレームのみを見るため、オーディオトラックを抽出(ffprobe/ffmpeg)して2番目のパーツとして送信。サイズ超過/その他のコンテナ → 480p/15fps h264

その他(pdf, docx…)

サポートされているものをリストするエラー

タイプ検出:拡張子テーブル → mimetypes → HTTP Content-Type → マジックバイト。 ffmpegはオプションですが強く推奨します(dnf install ffmpeg)。ffmpegがない場合、トランスコード不要のファイルのみが機能します。

2026-08-17にmimo-v2.5 - opencode goで確認済み:画像OCR、wav文字起こし(espeakサンプル)、3秒のmp4ビープ音(フレーム+サウンドトラック)、および1回の呼び出しでの画像+音声。

セットアップ

レイアウト:server.py(stdio MCPサーバー + uiウィザードモード)、web/page.html(ウィザードページ)、deploy/bin/mcp-qmedia(ランチャー)、deploy/env.example(オプションの非秘密設定)。systemdユニットなし:複数のエージェントセッションがある1台のマシンでは、mcp-proxy(ai-agent-setupのmcp-bridge.service)を介して1回実行するか、各クライアントに起動させます。シンボリックリンクで配線すると、git pullでマシンが更新されます。

git clone git@github.com:spookysys/mcp-qmedia.git ~/.local/src/mcp-qmedia
cd ~/.local/src/mcp-qmedia
uv venv .venv --python 3.14 && uv pip install --python .venv/bin/python 'mcp>=1.9,<2' httpx
ln -s "$PWD/deploy/bin/mcp-qmedia" ~/.local/bin/          # launcher
# setup: mcp-qmedia ui   -> http://127.0.0.1:8938 (close it when done)
# optional: mkdir -p ~/.config/mcp-qmedia && cp deploy/env.example ~/.config/mcp-qmedia/env

opencode(opencode.jsonc):

"qmedia": { "type": "local", "command": ["/home/YOU/.local/bin/mcp-qmedia"], "enabled": true }
// or, shared through mcp-bridge: { "type": "remote", "url": "http://127.0.0.1:8939/servers/qmedia/sse" }
// permission: "qmedia_*": "allow"

Claude Code(ユーザースコープ):

claude mcp add -s user qmedia --transport stdio -- ~/.local/bin/mcp-qmedia
# or, shared through mcp-bridge: claude mcp add -s user qmedia --transport sse http://127.0.0.1:8939/servers/qmedia/sse
# settings.json permissions.allow: "mcp__qmedia__*"

環境変数

変数

デフォルト

意味

QMEDIA_BACKEND

ストアデフォルト(mimo-v2.5 - opencode go

デフォルトプロバイダーの上書き。未知の名前はエラー(有料の組み込みへのサイレントフォールバックはしない)

QMEDIA_STORE

~/.config/mcp-qmedia/providers.json

プロバイダーストア(0600、キーを保持する可能性あり)

QMEDIA_UI_PORT

8938

オンデマンドセットアップウィザードのポート(mcp-qmedia ui、127.0.0.1)

QMEDIA_API_KEYOPENCODE_API_KEY

保存されたキーがないプロバイダー用のキー上書き(それ以外はopencodeのauth.json内のプロバイダー自身のauth_entry — 他のエントリのキーは決して使用しない)

QMEDIA_AUTH_JSON

~/.local/share/opencode/auth.json

opencodeがプロバイダーキーを保存する場所

QMEDIA_MAX_BYTES

20000000

ffmpegトランスコード前のファイルごとの上限

QMEDIA_TIMEOUT

300

モデル呼び出しのタイムアウト(秒)

MCP_QMEDIA_PYTHON

チェックアウト内の.venv/bin/python

ランチャー:インタプリタの上書き

MCP_QMEDIA_ENV

~/.config/mcp-qmedia/env

ランチャー:ソースする設定ファイル(オプション)

MCP_QMEDIA_DIR

チェックアウト

systemdユニット:server.pyがある場所

F
license - not found
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • OCR, transcription, file extraction, and image generation for AI agents via MCP.

  • 15 media & data tools for AI agents: search, transcribe, subtitles, voiceover, translate & more.

  • Generate images, video, and audio with Glif's media-generation agent

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/spookysys/mcp-qmedia'

If you have feedback or need assistance with the MCP directory API, please join our Discord server