Skip to main content
Glama

mcp-six-eyes

テキストのみのAIエージェントに画像理解能力を与えるMCPサーバーです。「画像1と2を参照して」「これらのスクリーンショットを比較して」といった複数画像チャットにも対応します。

テキストのみのモデルはピクセルを見ることができません。このサーバーはそのギャップを埋めます。エージェントがビジョンツールを呼び出し、サーバーがマルチモーダルAPIと通信し、エージェントはプレーンテキストを受け取ります。

Agent (text-only)
   │  tool call: analyze / compare / refer / ocr / …
   ▼
mcp-six-eyes (this server)
   │  1..N images: path | URL | base64  (labels: 1, 2, before, …)
   ▼
Vision API (OpenAI / Anthropic / Gemini / OpenRouter / custom)
   │
   ▼
Plain-text description / OCR / comparison / structured extract
   │
   ▼
Agent continues reasoning with text

これが機能する仕組み

MCPはエージェントが呼び出せるツールを公開します。エージェントはネイティブな視覚能力を必要としません。

  1. ユーザーが1つ以上の画像をアップロードまたは指定します

  2. エージェントがそれらのソース(および任意のラベル)を指定してビジョンツールを呼び出します

  3. サーバーが画像を読み込み、マルチモーダルモデルに送信します

  4. サーバーは安定した画像ラベル付きでテキストのみを返します

  5. テキストのみのエージェントは、そのテキストを他のツール結果と同様に使用します

Related MCP server: MCP Vision Server

ツール

ツール

目的

analyze_image

1つ以上の画像に対する一般的なQ&A

describe_image

詳細なシーン/UIの説明(エージェント向けの優れた「コンテキストダンプ」)

ocr_image

表示されているテキストを抽出(複数画像時は画像ごとのセクション)

compare_images

2枚以上の画像を差分比較(before/after、A/B、バリアント)

refer_images

「画像1」「両方の図」などを引用する質問に回答

inspect_ui

UI/UXスクリーンショットのレビューと複数ステップのフロー

read_chart

チャート、プロット、テーブル、ダッシュボード

explain_diagram

アーキテクチャ/フローチャート/ERD/ホワイトボードの説明者

extract_from_images

フォーム、レシート、テーブル、ラベルから構造化JSONを抽出

vision_status

設定済みプロバイダー/モデルと制限を表示

画像入力

すべての画像ツールは以下を受け付けます:

  • 単一: image: ローカルパス、file://http(s)、データURL、またはbase64

  • 複数: images: ソースの配列 または { source, label?, mimeType? } オブジェクト

  • 両方を渡すことも可能です。それらはマージされます

ラベルはデフォルトで "1""2"、… となり、「画像1と画像2を比較」のようなエージェントプロンプトがきれいにマッピングされます。カスタムラベル("before""after""fig-a")も機能します。

# one image
analyze_image({ image: "./shot.png", prompt: "What failed?" })

# multi-image with default labels 1..n
compare_images({
  images: ["./a.png", "./b.png"],
  prompt: "What changed in the error state?"
})

# multi-image with explicit labels (best for long threads)
refer_images({
  images: [
    { source: "./login.png", label: "1" },
    { source: "./dashboard.png", label: "2" }
  ],
  prompt: "Using image 1 and image 2, is the user authenticated?"
})

サポートされるソース形式:

  • ローカルファイルパス(/path/to/image.png または C:\path\to\image.png

  • file:// URI

  • http(s) URL

  • データURL(data:image/png;base64,...

  • 生のbase64(可能な場合は mimeType を渡してください)

要件

  • Node.js 20以上

  • ビジョン対応APIキー(OpenAI、Anthropic、Google、OpenRouter、またはOpenAI互換の任意のエンドポイント)

インストール

npmにmcp-six-eyesとして公開されています。

npx -y mcp-six-eyes

または、グローバル/プロジェクトの依存関係としてインストール:

npm install -g mcp-six-eyes
# or
npm install mcp-six-eyes

ほとんどのユーザーは手動で実行する代わりにMCPクライアントに組み込みます。Claude Desktop / Cursorの設定例:

{
  "mcpServers": {
    "mcp-six-eyes": {
      "command": "npx",
      "args": ["-y", "mcp-six-eyes"],
      "env": {
        "VISION_PROVIDER": "openai",
        "OPENAI_API_KEY": "sk-..."
      }
    }
  }
}

ここで npx が人気の理由:

  • グローバルインストール不要

  • クライアントがオンデマンドでサーバーを起動

  • -y で初回実行時のインストールプロンプトをスキップ

  • npmがパッケージをキャッシュして次回以降の起動を高速化

ローカル開発

npm install
npm run build

次に、以下のいずれか:

{
  "mcpServers": {
    "mcp-six-eyes": {
      "command": "npx",
      "args": ["-y", "."],
      "env": {
        "VISION_PROVIDER": "openai",
        "OPENAI_API_KEY": "sk-..."
      }
    }
  }
}

またはNodeをビルド済みエントリポイントに向ける:

{
  "mcpServers": {
    "mcp-six-eyes": {
      "command": "node",
      "args": ["./build/index.js"],
      "env": {
        "VISION_PROVIDER": "openai",
        "OPENAI_API_KEY": "sk-..."
      }
    }
  }
}

環境変数

プロバイダーキーはMCPクライアントの env ブロック(推奨)または開発用のローカル .env に設定します。

最小限のOpenAI設定:

VISION_PROVIDER=openai
OPENAI_API_KEY=sk-...

オプションのモデル/制限:

VISION_MODEL=gpt-4o-mini
VISION_MAX_IMAGES=10
VISION_MAX_IMAGE_BYTES=20971520
VISION_CACHE_MAX_ENTRIES=200

サーバーはstdio上でMCPを話します。アプリケーションログをstdoutに書き込まないでください。

キャッシュ

ビジョン呼び出しはコンテンツごとにメモリ内でメモ化されます。キャッシュキーは実際の画像バイトに加えてタスク、プロンプト、ラベル、トークン上限をハッシュします(ソース文字列ではありません)。そのため、モデルが同じ画像に対して describe_image(または任意のビジョンツール)を再呼び出しすると、前回の回答が即座に返され、Cached: yes とマークされ、ビジョンAPIへの再課金は発生しません。

  • デフォルト: VISION_CACHE_MAX_ENTRIES=200(上限付き、最も古いものから削除)

  • VISION_CACHE_MAX_ENTRIES=0 で無効化

  • 特定のキーに対して最初の回答が優先されます。変更されたファイルやURLは新しいキーを生成します

  • 失敗した応答とフォールバック応答はキャッシュされません

  • キャッシュはプロセス存続期間のみ有効(ディスク永続化なし)

クライアントの注意点

Claude Desktop

設定ファイル:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %AppData%\Claude\claude_desktop_config.json

Quick start with npxnpx ブロックを使用します。

Cursor

同じサーバーブロックを .cursor/mcp.json(プロジェクト)またはグローバルCursor MCP設定に追加します。

その他のstdio MCPホスト

以下を起動できるホスト:

npx -y mcp-six-eyes

環境変数を渡せるホストなら動作します。

プロバイダー

プロバイダー

VISION_PROVIDER

キー環境変数

デフォルトモデル

OpenAI

openai

OPENAI_API_KEY

gpt-4o-mini

Anthropic

anthropic

ANTHROPIC_API_KEY

claude-sonnet-4-5

Google Gemini

google

GOOGLE_API_KEY

gemini-2.0-flash

OpenRouter

openrouter

OPENROUTER_API_KEY

openai/gpt-4o-mini

カスタムOpenAI互換

custom

VISION_API_KEY + VISION_BASE_URL

VISION_MODEL を設定

オプションのフォールバック:

VISION_FALLBACK_PROVIDER=anthropic
ANTHROPIC_API_KEY=sk-ant-...

エージェント使用例

単一スクリーンショット

User: What's wrong in this screenshot? ./screenshots/build-error.png

Agent → ocr_image({ image: "./screenshots/build-error.png" })
Agent → analyze_image({
  image: "./screenshots/build-error.png",
  prompt: "Explain the error and suggest a fix"
})
Agent → answers in plain text

複数画像: 参照/比較

User: I uploaded two shots. Compare image 1 and 2. Did the fix work?

Agent → compare_images({
  images: [
    { source: "./before.png", label: "1" },
    { source: "./after.png", label: "2" }
  ],
  prompt: "Did the red error banner disappear after the fix?"
})
User: Refer image 1 and image 2. Which CTA is primary?

Agent → refer_images({
  images: [
    { source: "./landing-a.png", label: "1" },
    { source: "./landing-b.png", label: "2" }
  ],
  prompt: "Which image has the stronger primary CTA and why?"
})

UIフロー、チャート、ダイアグラム、構造化抽出

inspect_ui({
  images: ["./step1.png", "./step2.png", "./step3.png"],
  prompt: "Describe the checkout flow and any friction"
})

read_chart({
  image: "https://example.com/revenue.png",
  prompt: "Summarize the trend and call out outliers"
})

explain_diagram({
  image: "./architecture.png",
  prompt: "List services and data flow"
})

extract_from_images({
  image: "./receipt.jpg",
  schema: "{\"merchant\":string,\"date\":string,\"total\":number,\"items\":[{\"name\":string,\"price\":number}]}"
})

アーキテクチャ

src/
  index.ts                 MCP server + tools
  config.ts                env/provider config
  image.ts                 path/URL/base64 loader + multi-image labels
  prompts.ts               task prompts (analyze/describe/ocr/compare/...)
  providers/
    index.ts               provider router + fallback
    openai-compatible.ts   OpenAI / OpenRouter / custom (multi-image)
    anthropic.ts           Claude vision (multi-image)
    google.ts              Gemini vision (multi-image)
    types.ts               shared contracts
test/                      unit tests (node:test, mocked providers)
assets/
  logo.png                 project logo

設計ノート

  • ツールでありリソースではない: 画像理解は副作用(APIコスト)を伴うアクションであるため、ツールとして公開されます。

  • テキストのみの出力: ビジョンを持たないホストモデルはテキストコンテンツブロックのみを必要とします。

  • ラベル付き複数画像: チャットUIのエージェントは「画像1/2」について話します。ラベルはそのグラウンディングを安定させます。

  • タスク固有のツール: 比較/参照/UI/チャート/ダイアグラム/抽出は、ツール選択のための1つの巨大なプロンプトに勝ります。

  • stdioトランスポート: デスクトップエージェントのための最もシンプルなローカル統合。

  • stdoutログなし: stdoutはJSON-RPC用に予約されています。診断はstderrに送られます。

  • プロバイダー抽象化: エージェントが学習するツール名を変更せずにバックエンドを交換できます。

開発

npm install
npm test
npm start

スクリプト

目的

npm run build

TypeScriptを build/ にコンパイル

npm run typecheck

型チェックのみ

npm test

ビルド + 完全な単体テストスイート

npm run test:unit

現在の build/ に対してテストを実行

npm run smoke

クイック画像ローダースモークスクリプト

npm start

stdio上でMCPサーバーを実行

MCP Inspector でデバッグ:

npx @modelcontextprotocol/inspector node ./build/index.js

PRとコーディングガイドラインについては CONTRIBUTING.md を参照してください。

リンク

リリースワークフロー

ローカル変更後のメンテナー手順:

# one-time
npm login

# bump version + CHANGELOG, then ship
npm test
npm publish --access public

オプションのヘルパー(テスト後、npm公開):

npm run release

セキュリティ

  • APIキーは環境変数/クライアント設定に留まり、ツール応答には決して含まれません

  • リモートURLフェッチは明示的なツール入力です。信頼できないURLは慎重に扱ってください

  • 大きな画像は VISION_MAX_IMAGE_BYTES(デフォルト20MB)で拒否されます

  • 1回の呼び出しあたりの画像数は VISION_MAX_IMAGES(デフォルト10)で制限されます

  • 応答キャッシュはコンテンツハッシュと結果テキストのみをメモリ内に保持します。ディスクには何も永続化されません

完全なポリシー: SECURITY.md

コントリビューション

Issueとプルリクエストを歓迎します。PRを開く前に npm test を実行し、CONTRIBUTING.md をお読みください。

ライセンス

MIT

Install Server
A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
Response time
1wRelease cycle
2Releases (12mo)
Commit activity

Related MCP Servers

View all related MCP servers

Related MCP Connectors

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

  • MCP server for Flux AI image generation

  • MCP server for NanoBanana AI image generation and editing

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/RimunAce/mcp-six-eyes'

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