Skip to main content
Glama

VLM-MCP

GitHub License: MIT Python 3.11+ MCP

English | 中文

VLMベースの画像理解MCPサーバー。統一されたOpenAI互換APIを介して、ローカルのllama.cppとオンラインVLM(例:Qwen3-VL-Flash)をサポートします。


English

特徴

  • デュアルバックエンド:ローカルllama.cpp + オンラインQwen3-VL-Flash、統一OpenAI互換API

  • 3層キャッシュ:L1画像エンコードキャッシュ、L2レスポンスキャッシュ(TTL付き)、L3 llama-server KVキャッシュ

  • セッション管理:マルチターン会話コンテキスト、自動退避とタイムアウトクリーンアップ

  • プロンプトテンプレート:組み込みのdescribe / ocr / chart / translate / qa

  • ライフサイクル管理:llama-serverサブプロセスがMCPと連動して自動起動・停止、手動管理不要

  • バックエンドヘルス:APIキーエラー時にバックエンドを自動無効化、手動での有効化・無効化をサポート

  • マルチソース画像:ローカルパス、HTTP URL、Base64 Data URI、生のBase64フォールバック

アーキテクチャ

MCP Client (SSE :11432)
       │
       ▼
  server.py ── tool layer (analyze_image / create_session / ...)
       │
       ├── session_manager.py ── session lifecycle
       ├── cache.py ── L1 image cache + L2 response cache
       ├── image_utils.py ── image parsing (path/URL/Base64)
       │
       ▼
  providers/ ── OpenAI-compatible interface
       │
       ├── llama-cpp (localhost:11433) ← auto-launched by llama_launcher.py
       └── qwen-vl (dashscope API)

クイックスタート

環境要件

コンポーネント

備考

Python 3.11+

ランタイム

uv

パッケージマネージャー

llama.cpp

ネイティブバイナリ(llama-server)、CUDAビルドが必要

Qwen3-VL-8B GGUF

言語モデル + ビジョンプロジェクター

注意:このプロジェクトはllama.cppネイティブバイナリ(llama-server)を使用し、llama-cpp-pythonは使用しません。 Pythonバインディングは不要です。llama.cpp実行ファイルをダウンロードするだけです。

推奨モデルQwen3-VL-8B-Instruct-GGUFから2つのファイルをダウンロード:

ファイル

推奨

備考

ビジョンモデル

Qwen3VL-8B-Instruct-Q4_K_M.gguf

Q4_K_M量子化、速度と精度のバランス

ビジョンプロジェクター

mmproj-Qwen3VL-8B-Instruct-F16.gguf

F16である必要があります。量子化しないでください

8GBのVRAMで十分です。オンライン専用モード(qwen-vlバックエンドのみ)では、llama.cppとGGUFモデルをスキップできます。

インストール

git clone https://github.com/YC-CLT/VLM-mcp.git
cd VLM-mcp
uv sync

設定

cp config.example.json config.json

config.jsonを編集:

{
  "backends": {
    "llama-cpp": {
      "enabled": true,
      "base_url": "http://localhost:11433/v1",
      "api_key": "sk-no-key-required",
      "model_name": "qwen3-vl"
    },
    "qwen-vl": {
      "enabled": false,
      "base_url": "https://dashscope.aliyuncs.com/compatible-mode/v1",
      "api_key": "your-dashscope-api-key",
      "model_name": "qwen-vl-flash"
    }
  },
  "default_backend": "llama-cpp",
  "cache_enabled": true,
  "llama": {
    "server_exe": "llama-server",
    "model": "D:/path/to/Qwen3VL-8B-Instruct-Q4_K_M.gguf",
    "mmproj": "D:/path/to/mmproj-Qwen3VL-8B-Instruct-F16.gguf",
    "ngl": 99
  }
}

主要フィールド:

  • backends.<name>.enabledfalseに設定するとバックエンドを手動で無効化

  • llama.model / llama.mmproj:モデルファイルの絶対パス(必須)

  • llama.ngl:GPUレイヤー数、99 = 全GPU、0 = CPUのみ

  • llama.server_exe:llama-server実行ファイル、デフォルトはPATHから検索

実行

uv run main.py

llama-serverサブプロセスはMCPと連動して自動起動・停止します。手動管理は不要です。

MCP SSEエンドポイント:http://127.0.0.1:11432/sse

任意のディレクトリから実行:uv run --directory D:\CodeFile\VLM-mcp main.py

MCPクライアント設定

MCPクライアント設定に追加:

{
  "mcpServers": {
    "vlm-mcp": {
      "url": "http://127.0.0.1:11432/sse"
    }
  }
}

MCPツール

ツール

パラメータ

説明

analyze_image

image, prompt, template, params, backend, session_id

テンプレートとセッションをサポートした画像分析

create_session

backend

マルチターン会話セッションを作成

close_session

session_id

セッションを閉じる

list_sessions

すべてのアクティブなセッションを一覧表示

list_backends

バックエンドとそのステータスを一覧表示

list_templates

利用可能なプロンプトテンプレートを一覧表示

テンプレート

テンプレート

パラメータ

説明

describe

一般的な画像説明

ocr

テキスト抽出

chart

チャート分析

translate

target_lang

画像翻訳(デフォルト:zh)

qa

question

画像Q&A

使用例

// Single analysis
{
  "tool": "analyze_image",
  "args": {
    "image": "D:/photos/cat.png",
    "prompt": "What is in this image?"
  }
}

// Using template
{
  "tool": "analyze_image",
  "args": {
    "image": "https://example.com/chart.png",
    "template": "chart"
  }
}

// Multi-turn session
{ "tool": "create_session", "args": { "backend": "llama-cpp" } }
// → { "session_id": "xxx" }
{ "tool": "analyze_image", "args": { "image": "...", "prompt": "...", "session_id": "xxx" } }
{ "tool": "analyze_image", "args": { "prompt": "Tell me more", "session_id": "xxx" } }
{ "tool": "close_session", "args": { "session_id": "xxx" } }

設定定数

config.py内の非機密定数:

定数

デフォルト

説明

IMAGE_MAX_SIZE_MB

20

画像の最大サイズ

IMAGE_DOWNLOAD_TIMEOUT

10

画像ダウンロードタイムアウト(秒)

CACHE_IMAGE_MAX_ENTRIES

100

L1キャッシュ上限

CACHE_RESPONSE_MAX_ENTRIES

500

L2キャッシュ上限

CACHE_RESPONSE_TTL_ONLINE

3600

オンラインバックエンドキャッシュTTL(秒)

CACHE_RESPONSE_TTL_LOCAL

1800

ローカルバックエンドキャッシュTTL(秒)

SESSION_TTL

1800

セッションタイムアウト(秒)

SESSION_MAX

5

バックエンドあたりの最大セッション数

LOG_LEVEL

"INFO"

ログレベル

開発

uv sync --dev
uv run pytest tests/ -v

よくある質問

llama-serverがCPUで動作していますか?
config.jsonllama.nglを確認してください。99 = 全GPU、0 = CPUのみ。

llama-serverが起動に失敗しますか?
server_exeが実行可能であることと、model/mmprojのパスが存在することを確認してください。llama_server.logを確認してください。

オンラインバックエンドが401を返しますか?
無効なAPIキーはバックエンドを自動無効化します。有効なキーを設定して再起動してください。または"enabled": falseに設定してスキップしてください。

ポート競合?
MCPポート11432、llama-serverポート11433。config.jsonllama.portまたはserver.pyのポートを変更してください。


Related MCP server: MCP Vision Server

中文

特徴

  • デュアルバックエンドサポート:ローカルllama.cpp + オンラインQwen3-VL-Flash、統一OpenAI互換API

  • 3層キャッシュ:L1画像エンコードキャッシュ、L2レスポンスキャッシュ(TTL付き)、L3 llama-server KVキャッシュ

  • セッション管理:マルチターン会話コンテキスト保持、自動退避とタイムアウトクリーンアップ

  • プロンプトテンプレート:組み込みのdescribe / ocr / chart / translate / qaテンプレート

  • ライフサイクル管理:llama-serverサブプロセスがMCPと同時に起動・停止、起動後すぐに使用可能、手動管理不要

  • バックエンドヘルス:APIキーエラー時にバックエンドを自動無効化、手動での有効化・無効化をサポート

  • マルチソース画像:ローカルパス、HTTP URL、Base64 Data URI、純粋なBase64フォールバック

アーキテクチャ

MCP Client (SSE :11432)
       │
       ▼
  server.py ── 工具层 (analyze_image / create_session / ...)
       │
       ├── session_manager.py ── 会话生命周期
       ├── cache.py ── L1 图片缓存 + L2 响应缓存
       ├── image_utils.py ── 图片解析 (路径/URL/Base64)
       │
       ▼
  providers/ ── OpenAI 兼容接口
       │
       ├── llama-cpp (localhost:11433) ← llama_launcher.py 自动启动
       └── qwen-vl (dashscope API)

クイックスタート

環境要件

コンポーネント

説明

Python 3.11+

ランタイム環境

uv

パッケージ管理

llama.cpp

ネイティブバイナリ(llama-server)、CUDA版が必要

Qwen3-VL-8B GGUF

言語モデル + ビジョンプロジェクター

注意:このプロジェクトはllama.cppネイティブバイナリ(llama-server)を使用し、llama-cpp-pythonではありません。 Pythonバインディングのインストールは不要です(llama-cpp-pythonは不要で、これは単体のllama.cppとは独立しています)。llama.cpp実行ファイルをダウンロードするだけでOKです。

推奨モデルのダウンロードQwen3-VL-8B-Instruct-GGUFから2つのファイルをダウンロード:

ファイル

推奨

説明

ビジョンモデル

Qwen3VL-8B-Instruct-Q4_K_M.gguf

Q4_K_M量子化、速度と精度のバランス

画像エンコーダー

mmproj-Qwen3VL-8B-Instruct-F16.gguf

F16を推奨、量子化不要

これで8GBのVRAMで動作します

純オンラインモード(qwen-vlバックエンドのみ)では、llama.cppとGGUFモデルをスキップできます。

インストール

git clone https://github.com/YC-CLT/VLM-mcp.git
cd VLM-mcp
uv sync

設定

cp config.example.json config.json

config.jsonを編集:

{
  "backends": {
    "llama-cpp": {
      "enabled": true,
      "base_url": "http://localhost:11433/v1",
      "api_key": "sk-no-key-required",
      "model_name": "qwen3-vl"
    },
    "qwen-vl": {
      "enabled": false,
      "base_url": "https://dashscope.aliyuncs.com/compatible-mode/v1",
      "api_key": "your-dashscope-api-key",
      "model_name": "qwen-vl-flash"
    }
  },
  "default_backend": "llama-cpp",
  "cache_enabled": true,
  "llama": {
    "server_exe": "llama-server",
    "model": "D:/path/to/Qwen3VL-8B-Instruct-Q4_K_M.gguf",
    "mmproj": "D:/path/to/mmproj-Qwen3VL-8B-Instruct-F16.gguf",
    "ngl": 99
  }
}

主要フィールド:

  • backends.<name>.enabledfalseに設定するとバックエンドを手動で無効化

  • llama.model / llama.mmproj:ローカルモデルファイルの絶対パス(必須)

  • llama.ngl:GPUレイヤー数、99はすべてGPUにオフロード、0は純CPU

  • llama.server_exe:llama-server実行ファイル、デフォルトはPATHから検索

実行

uv run main.py

起動後、llama-serverサブプロセスが自動的に起動し、MCP終了時に自動停止します。llama-serverの手動管理は不要です。

MCP SSEエンドポイント:http://127.0.0.1:11432/sse

任意のディレクトリから実行:uv run --directory D:\CodeFile\VLM-mcp main.py

MCPクライアント設定

MCPクライアント設定ファイルに追加:

{
  "mcpServers": {
    "vlm-mcp": {
      "url": "http://127.0.0.1:11432/sse"
    }
  }
}

MCPツール

ツール

パラメータ

説明

analyze_image

image, prompt, template, params, backend, session_id

画像分析、テンプレートとセッションをサポート

create_session

backend

マルチターン会話セッションを作成

close_session

session_id

セッションを閉じる

list_sessions

すべてのアクティブなセッションを一覧表示

list_backends

バックエンドとそのステータスを一覧表示

list_templates

利用可能なプロンプトテンプレートを一覧表示

テンプレート

テンプレート

パラメータ

説明

describe

一般的な画像説明

ocr

テキスト抽出

chart

チャート分析

translate

target_lang

画像翻訳(デフォルト:中国語)

qa

question

画像Q&A

使用例

// 单次分析
{
  "tool": "analyze_image",
  "args": {
    "image": "D:/photos/cat.png",
    "prompt": "这张图片里有什么?"
  }
}

// 使用模板
{
  "tool": "analyze_image",
  "args": {
    "image": "https://example.com/chart.png",
    "template": "chart"
  }
}

// 多轮会话
{ "tool": "create_session", "args": { "backend": "llama-cpp" } }
// → { "session_id": "xxx" }
{ "tool": "analyze_image", "args": { "image": "...", "prompt": "...", "session_id": "xxx" } }
{ "tool": "analyze_image", "args": { "prompt": "继续分析", "session_id": "xxx" } }
{ "tool": "close_session", "args": { "session_id": "xxx" } }

設定定数

非機密定数はconfig.pyに集約されており、コード内で直接変更できます:

定数

デフォルト

説明

IMAGE_MAX_SIZE_MB

20

画像の最大サイズ

IMAGE_DOWNLOAD_TIMEOUT

10

画像ダウンロードタイムアウト(秒)

CACHE_IMAGE_MAX_ENTRIES

100

L1キャッシュ上限

CACHE_RESPONSE_MAX_ENTRIES

500

L2キャッシュ上限

CACHE_RESPONSE_TTL_ONLINE

3600

オンラインバックエンドキャッシュTTL(秒)

CACHE_RESPONSE_TTL_LOCAL

1800

ローカルバックエンドキャッシュTTL(秒)

SESSION_TTL

1800

セッションタイムアウト(秒)

SESSION_MAX

5

バックエンドあたりの最大セッション数

LOG_LEVEL

"INFO"

ログレベル

開発

uv sync --dev
uv run pytest tests/ -v

よくある質問

llama-serverがCPUで動作していますか?
config.jsonllama.ngl99(全GPU)かどうか確認してください。0は純CPUです。

llama-serverの起動に失敗しましたか?
server_exeが実行可能(PATH内または絶対パス)であることと、model/mmprojのパスが存在することを確認してください。llama_server.logを確認してください。

オンラインバックエンドの401エラー?
APIキーが無効な場合、そのバックエンドは自動的に無効化されます。キーを設定して再起動すると復元できます。手動で"enabled": falseに設定してスキップすることもできます。

ポートが使用中?
MCPポート11432、llama-serverポート11433。config.jsonllama.portまたはserver.pyのポート番号を変更してください。

ライセンス

MIT

A
license - permissive license
Not graded
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

  • A
    license
    A
    quality
    D
    maintenance
    Provides advanced image analysis capabilities including object recognition, OCR text extraction, and multi-turn visual dialogues using OpenAI-compatible APIs. It supports both local files and Base64 inputs with additional features for session persistence and web-based configuration management.
    3
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to analyze images using any OpenAI-compatible vision API, providing tools for image analysis, OCR, error diagnosis, diagram understanding, and chart analysis.
    MIT

View all related MCP servers

Related MCP Connectors

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/YC-CLT/VLM-mcp'

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