Logo.dev MCP について
Logo.dev MCP は logo.dev のロゴ取得とブランド情報を MCP クライアントに提供します。複数の識別子でブランドを検索でき、設定された API キーに応じてツールを登録します。
主な機能
- 01ドメインや識別子からロゴ取得
- 02ブランド検索とドメイン特定
- 03企業説明とブランドカラーの取得
- 04ブランドプロフィール全体の取得
- 05APIキーに応じたツール登録
活用シーン
- 01企業名やティッカーからロゴを取得
- 02ブランド名からドメインを特定
- 03企業の色やソーシャルリンクを確認
- 04ロゴやバナーを含むブランド情報を取得
MCP 対応
logo.dev のロゴ取得とブランドデータ機能を MCP クライアント向けのツールとして公開します。利用可能なツールは publishable key と secret key の設定に応じて決まります。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx logodev-mcpFASTMCP_LOG_LEVELLog level (DEBUG, INFO, WARNING, ERROR)LOGODEV_MCP_SERVER_NAMEMCP server name shown to clientsLOGODEV_MCP_BEARER_TOKENシークレットBearer token for authenticationLOGODEV_MCP_AUTH_MODEシークレットOIDC auth mode: 'remote' (JWKS validation) or 'oidc-proxy' (OAuth proxy). Auto-detected if not set.LOGODEV_MCP_BASE_URLPublic base URL of this server (required for OIDC)LOGODEV_MCP_OIDC_CONFIG_URLOIDC discovery endpoint URLLOGODEV_MCP_OIDC_CLIENT_IDOIDC client IDLOGODEV_MCP_OIDC_CLIENT_SECRETシークレットOIDC client secretLOGODEV_MCP_OIDC_JWT_SIGNING_KEYシークレットSigning key for OIDC session JWTs (critical on Linux/Docker)LOGODEV_MCP_OIDC_AUDIENCEExpected OIDC token audienceLOGODEV_MCP_OIDC_REQUIRED_SCOPESSpace-separated required OIDC scopesLOGODEV_MCP_KV_STORE_URLPersistent-state backend URL for pvl-core subsystems. Schemes: file:///path (survives restarts), memory:// (dev/ephemeral).PUIDRun as this UID (Docker entrypoint)PGIDRun as this GID (Docker entrypoint)ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Logo.dev MCP
logo.dev API を介して、企業のロゴやブランドデータを検索します。
ドキュメント | 設定ウィザード | PyPI | Docker
機能
- ロゴの取得(
get_logo)— ドメイン、ティッカー、ISIN、暗号資産シンボル、またはブランド名を指定して、企業のロゴを画像と URL で取得します。サイズ、形式、テーマ、グレースケール、Retina、フォールバックの各オプションに対応しています。公開可能キー(pk_…)が必要です。 - ブランド検索(
search_brands)— 入力補完検索または完全一致検索を使って、ブランド名や企業名から候補となるドメインとロゴ URL を特定します。シークレットキー(sk_…)が必要です。 - 企業の説明(
describe_company)— ドメインについて、企業データ(名前、説明、ブランドカラー、ソーシャルリンク)を構造化して返します。シークレットキー(sk_…)が必要です。 - ブランドプロフィール全体(
get_brand)— ドメインについて、完全なブランドプロフィール(ロゴ、ブランドマーク、バナー、カラー、説明)を返します。describe_companyより多くの情報を含みます。シークレットキー(sk_…)が必要です。 - 適切な縮退動作 — 対応する API キーがある場合にのみツールを登録します。キーが不足しているツールは登録されて呼び出し時に失敗するのではなく、MCP クライアントから非表示になります。
できること
このサーバーを MCP クライアント(Claude など)に接続すると、次のことができます。
- ロゴを取得する — 「stripe.com のロゴを取得して。」
get_logoを使用します(公開可能キーが必要です)。 - ブランドのドメインを特定する — 「『Stripe』ブランドのドメインは何ですか?」
search_brandsを使用します(シークレットキーが必要です)。 - 企業情報を調べる — 「Stripe のブランドカラーは何ですか?」
describe_companyを使用します(シークレットキーが必要です)。 - ブランドキット全体を取得する — 「shopify.com の完全なブランドプロフィールを表示して。」
get_brandを使用します(シークレットキーが必要です)。 - ティッカーからロゴを取得する — 「AAPL のロゴを取得して。」
identifier_type=tickerを指定してget_logoを使用します(公開可能キーが必要です)。
インストール
PyPI から
pip install logodev-mcp
pyproject.toml の PROJECT-EXTRAS-START / PROJECT-EXTRAS-END センチネルを使ってオプションの追加機能を追加する場合は、以下に記載してください。
ソースから
git clone https://github.com/pvliesdonk/logodev-mcp.git
cd logodev-mcp
uv sync --all-extras --all-groups
Docker
docker pull ghcr.io/pvliesdonk/logodev-mcp:latest
リポジトリのルートには、出発点として compose.yml が用意されています。.env.example を .env にコピーして編集し、docker compose up -d を実行してください。
リモートの Python デバッガーを接続する方法(開発時のみ。プロトコルは認証されません)については、リモートデバッグを参照してください。
Linux パッケージ(.deb/.rpm)
GitHub Releases ページから .deb または .rpm パッケージをダウンロードします。どちらも強化された systemd ユニットをインストールします。環境設定は /etc/logodev-mcp/env から読み込まれます(同梱されている /etc/logodev-mcp/env.example をコピーしてください)。
Claude Desktop(.mcpb バンドル)
GitHub Releases ページから .mcpb バンドルをダウンロードしてダブルクリックでインストールするか、次のコマンドを実行します。
mcpb install logodev-mcp-<version>.mcpb
Claude Desktop では、GUI ウィザードを通じて必須の環境変数を入力できます。JSON を手動で編集する必要はありません。
Claude Desktop の手動設定とセットアップのオプションについては、Claude Desktop のデプロイをご覧ください。
クイックスタート
logodev-mcp serve # stdio transport
logodev-mcp serve --transport http --port 8000 # streamable HTTP
ライブラリとして使用する場合(MCP トランスポートを使わずにドメインロジックを組み込む場合)は、logodev_mcp パッケージから直接インポートしてください。エントリーポイントについては、プロジェクトの src/logodev_mcp/ 以下にあるドメインモジュールをご覧ください。
サーバー情報
サーバーには組み込みの get_server_info ツールが登録されています(fastmcp_pvl_core.register_server_info_tool 経由)。これにより、運用担当者は MCP 呼び出しを 1 回行うだけでデプロイ済みのバージョンを確認できます。デフォルトの応答には server_name、server_version、core_version が含まれます。リモート上流と通信するサーバーでは、src/logodev_mcp/server.py の DOMAIN-UPSTREAM-START/DOMAIN-UPSTREAM-END センチネル内で上流のバージョン報告を設定します。設定方法については、CLAUDE.mdをご覧ください。
設定
fastmcp-pvl-core ベースのすべてのサービスで共通する、コア環境変数:
| 変数 | デフォルト | 説明 |
|---|---|---|
FASTMCP_LOG_LEVEL | INFO | FastMCP 内部とアプリのロガーのログレベル(DEBUG/INFO/WARNING/ERROR)。-v CLI フラグを指定すると DEBUG に上書きされます。 |
FASTMCP_ENABLE_RICH_LOGGING | true | プレーンまたは構造化 JSON 形式のログ出力にする場合は、false に設定します。 |
LOGODEV_MCP_KV_STORE_URL | file:///data/state | pvl-core サブシステムの永続状態バックエンド URL。file:///path(再起動後も保持)、memory://(開発用/一時的)を指定できます。 |
ドメイン固有の変数は、以下のドメイン設定をご覧ください。
認証
呼び出し元はベアラートークンまたは OIDC で認証します(併用不可)。設定、複数サブジェクトにマッピングされたトークン、OIDC、トラブルシューティングについては、認証ガイドをご覧ください。
スキャフォールド後のチェックリスト
copier copy と gh repo create --push の実行後:
- この README(Features、What you can do with it、Domain configuration、Key design decisions)と
CLAUDE.mdの DOMAIN ブロックを埋めます。 - GitHub シークレットを設定します。以下をご覧ください。
- 開発・ドキュメント用ツールをインストールします:
uv sync --all-extras --all-groups。 - pre-commit フックをインストールします:
uv run pre-commit install。 - ローカルでゲートを実行します:
uv run pytest -x -q && uv run ruff check --fix . && uv run ruff format . && uv run mypy src/ tests/。 - 最初のコミットをプッシュします。CI が成功するはずです。
GitHub シークレット
CI ワークフローでは 3 つのリポジトリシークレットを参照します。Settings → Secrets and variables → Actions から設定するか、gh secret set を使用してください。
| シークレット | 使用先 | 生成方法 |
|---|---|---|
RELEASE_TOKEN | release.yml、copier-update.yml | contents: write と pull_requests: write の権限を持つ、https://github.com/settings/personal-access-tokens/new で作成したファイングレインド PAT(copier-update の cron が PR を作成します)。このリポジトリにスコープを限定します。 |
CODECOV_TOKEN | ci.yml | https://codecov.io に GitHub アカウントでサインインしてリポジトリを追加し、リポジトリ設定ページからアップロードトークンをコピーします。 |
CLAUDE_CODE_OAUTH_TOKEN | claude.yml、claude-code-review.yml | ローカルで claude setup-token を実行し、表示された結果を貼り付けます。 |
gh secret set RELEASE_TOKEN
gh secret set CODECOV_TOKEN
gh secret set CLAUDE_CODE_OAUTH_TOKEN
GITHUB_TOKEN は自動的に提供されるため、操作は不要です。
ローカル開発
PR ゲート(CI と同じ):
uv run pytest -x -q # tests
uv run ruff check --fix . && uv run ruff format . # lint + format
uv run mypy src/ tests/ # type-check
pre-commit は各コミット時にゲートの一部を実行します。詳細は .pre-commit-config.yaml、Hard PR Acceptance Gates 全体については CLAUDE.mdをご覧ください。
トラブルシューティング
スキャフォールド済みプロジェクトの移動
uv sync は、仮想環境の Python を指す絶対パスのシバンを持つ .venv/bin/* スクリプトを作成します。スキャフォールド後にリポジトリを移動すると(mv /old/path /new/path)、古いシバンが仮想環境の site-packages とは異なるインタープリターを参照するため、uv run pytest は ModuleNotFoundError: No module named 'fastmcp' で失敗します。
修正方法:
rm -rf .venv
uv sync --all-extras --all-groups
uv run python -m pytest も、一時的な回避策として使用できます(古いエントリースクリプトのシムを回避します)。
copier update 後の uv.lock の更新
copier update によって新しい依存関係(たとえば、pyproject.toml.jinja に新しいエクストラが追加される場合)が導入されると、CI で実行される uv sync --frozen が古いロックファイルを使って失敗します。ローカルで uv lock を実行し、copier-update の PR を受け入れる際に更新した uv.lock もコミットしてください。
リンク
ドメインの設定
ドメイン環境変数には LOGODEV_MCP_ 接頭辞を使用します。
| 変数 | デフォルト | 必須 | 説明 |
|---|---|---|---|
LOGODEV_MCP_PUBLISHABLE_KEY | — | 条件付き | logo.dev のパブリッシャブルキー(pk_…)です。get_logo ツールを有効にします。このツールを非表示にするには省略します。 |
LOGODEV_MCP_SECRET_KEY | — | 条件付き | logo.dev のシークレットキー(sk_…)です。search_brands、describe_company、get_brand を有効にします。これらのツールを非表示にするには省略します。 |
LOGODEV_MCP_DETECT_PLAN | true | いいえ | 起動時に describe/brand の利用権を確認し、プランで許可されていないツールを非表示にします。確認を省略して、すべてのシークレットキー用ツールを登録するには false を設定します。 |
LOGODEV_MCP_STATE_DIR | /data/state | いいえ | キャッシュされたプラン検出結果(entitlements.json)を保存するディレクトリです。 |
API ツールを登録するには、少なくとも 1 つのキーを設定する必要があります。両方のキーを同時に設定すると、4 つすべてのツールが有効になります。
各 logo.dev プランで利用できるツール(無料プランでは get_logo/search_brands、有料プランでは describe_company、Pro/Enterprise では get_brand)については、プランと機能の一覧に記載されています。
主な設計上の決定
- 2 つのキーによる制御 —
LOGODEV_MCP_PUBLISHABLE_KEYはget_logoを制御し、LOGODEV_MCP_SECRET_KEYはsearch_brands、describe_company、get_brandを制御します。キーが設定されていない場合、そのキーに対応するツールは呼び出し時に制限されるのではなく、登録されません。 - プラン検出による利用権のないツールの非表示 —
describe_companyには有料プランが必要で、get_brandには Pro/Enterprise が必要です。logo.dev にはプラン照会用エンドポイントがないため、サーバーは起動時に logo.dev でそれぞれを確認し、401/403の場合はツールを無効にします。search_brandsは利用制限の対象外です。確認結果が不確定な場合(タイムアウト、5xx、404、429)は利用可能とみなし、ツールを有効なままにします。結果はLOGODEV_MCP_STATE_DIRに 7 日間キャッシュされます(キーのローテーション時には再確認されます)。無効にするにはLOGODEV_MCP_DETECT_PLAN=falseを設定します。 - ドメインロジックを FastMCP から分離 —
src/logodev_mcp/domain.pyには FastMCP のインポートを含めずにServiceクラスとLogoDevErrorを定義します。FastMCP レイヤーはsrc/logodev_mcp/tools.pyのみです。 - エラーは文字列として返す — ドメインコードで発生した
LogoDevErrorは各ツールのラッパーで捕捉され、プレーンテキストのメッセージとして返されるため、MCP クライアントにはサーバー例外ではなく、読みやすいエラーが表示されます。 - ロゴツールは URL と画像を返す —
get_logoは、url_only=Trueが指定されない限り、CDN URL(テキスト)と画像データ(画像コンテンツブロック)の両方を返します。その場合は URL 文字列のみを返します。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。