hf-mcp-server packages について
Hugging Face 公式の MCP サーバーで、互換クライアントを使う開発者向けに Hub と Gradio AI アプリを LLM に接続します。複数のトランスポートに対応し、設定に応じて Hub、Spaces、Jobs のツールを公開します。
主な機能
- 01Hub API と検索へのアクセス
- 02Space の動的ツール提供
- 03リポジトリ作成と Jobs ツール
- 04STDIO と Streamable HTTP 対応
- 05MCP 管理・アクティビティ指標ページ
活用シーン
- 01MCP クライアントから Hugging Face Hub を検索
- 02設定済み Gradio Spaces の呼び出し
- 03認証後のリポジトリ作成や Jobs 実行
MCP 対応
MCP サーバーとして、Hub API、検索、設定された Hugging Face 機能のツールを公開します。STDIO とステートレス Streamable HTTP JSON のトランスポートに対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
4掲載時のツール一覧 · 3 週間前に更新
このツールにパラメーターはありません。
詳細
Hugging Face 公式 MCP サーバー
Hugging Face 公式 MCP サーバーへようこそ 🤗。LLM を Hugging Face Hub および数千の Gradio AI アプリケーションに接続できます。
MCP サーバーのインストール
以下の手順に従って、利用を開始してください。
Claude Desktop または claude.ai にインストール
こちらをクリックして、Hugging Face コネクターをアカウントに追加してください。
または、https://claude.ai/settings/connectorsに移動し、ギャラリーから「Hugging Face」を追加してください。
Claude Code にインストール
以下のコマンドを入力して、Claude Codeにインストールしてください。
claude mcp add hf-mcp-server -t http https://huggingface.co/mcp?login
次にclaudeを起動し、認証を完了するための手順に従ってください。
claude mcp add hf-mcp-server \
-t http https://huggingface.co/mcp \
-H "Authorization: Bearer <YOUR_HF_TOKEN>"
Gemini CLI にインストール
以下のコマンドを入力して、Gemini CLIにインストールしてください。
gemini mcp add -t http huggingface https://huggingface.co/mcp?login
次にgeminiを起動し、認証を完了するための手順に従ってください。
VSCode にインストール
こちらをクリックすると、Hugging Face コネクターをVSCodeに直接追加できます。または、https://code.visualstudio.com/mcpのギャラリーからインストールしてください。
手動で設定する場合や認証トークンを使用する場合は、以下のスニペットをmcp.json設定に追加してください。
"huggingface": {
"url": "https://huggingface.co/mcp",
"headers": {
"Authorization": "Bearer <YOUR_HF_TOKEN>"
}
Cursor にインストール
こちらをクリックすると、Hugging Face MCP サーバーをCursorに直接インストールできます。
手動で設定する場合や認証トークンを指定する場合は、以下のスニペットを使用してください。
"huggingface": {
"url": "https://huggingface.co/mcp",
"headers": {
"Authorization": "Bearer <YOUR_HF_TOKEN>"
}
インストール後、https://huggingface.co/settings/mcp に移動して、ツールとSpacesを設定してください。
ヒント
URLに?no_image_content=trueを追加すると、Gradio サーバーからImageContentブロックを削除できます。
クイックガイド(リポジトリのパッケージ)
このリポジトリには以下が含まれています。
- (
/mcp) MCP サーバーとの統合に使用する、Hub API と検索エンドポイントのMCP実装。 - (
/app) エンドポイントをデプロイするためのMCP サーバーとWebアプリケーション。
MCP サーバー
以下のトランスポートに対応しています。
- STDIO
- ステートレス JSON モードの StreamableHTTP(StreamableHTTPJson)
Web アプリケーションと HTTP トランスポートは、デフォルトでポート 3000 で起動します。
StreamableHTTP サービスは /mcp で利用できます。仕様で厳密に定められているわけではありませんが、一般的な慣例です。
公開されている Streamable HTTP のデプロイでは、MCP サーバーカードを /mcp/server-card で提供します。公開カードでは、認証固有のクエリパラメーターを含まない標準の https://huggingface.co/mcp エンドポイントを案内します。ループバック環境および MCP_ALLOWED_HOSTS に明示された Hugging Face 以外のホストでは、それぞれの /mcp エンドポイントを案内します。カードのレスポンスは、ETag によるキャッシュ再検証に対応しています。
/metrics の Web アプリケーションでは、サーバーのステータスと MCP メソッドのメトリクスを確認できます。
Skills タブでは、プロセス内のカタログの健全性と Skills のライブアクティビティを確認できます。期間(15m/1h/24h)、クライアント名/バージョン、メソッド、結果で絞り込めます。メタデータの照会(skills/list、skills/get、ディレクトリの読み取り)と、成功した SKILL.md および補助ファイルのコンテンツ読み取りを区別します。取得されたことは、実行されたことやインストールが完了したことを証明するものではありません。クライアント名/バージョンは自己申告です。アクティビティは 10,000 件、24 時間を上限とし、再起動時にリセットされ、網羅性が不完全な場合はその旨を示します。LOG_SKILL_EVENTS とは独立しており、過去のイベントは設定されたデータセットの skills/YYYY-MM-DD/ ログに残ります。現在、ライブアクティビティが対象とするのは streamableHttpJson トランスポートです。健全性のポーリングによってカタログが読み込まれたり更新されたりすることはなく、マニフェストのバイトサイズ検証がまだ実装されていないことを明示的に警告します。Skills ダッシュボードのテレメトリには、対象 URI、ユーザーハッシュ、セッション ID、ファイル内容は含まれません。
管理用 Web インターフェースは、METRICS_PAGE_PASSWORD を使用して、任意の簡易共有パスワードゲートの背後に配置できます。ブラウザーで / にアクセスすると、/mcp の MCP ウェルカムページにリダイレクトされます。ツールの選択は、任意の Hugging Face ユーザー設定 API と bouquet/mix クエリパラメーターに基づいて、各リクエストごとに個別に解決されます。セキュリティ研究者とボットへの注意:これは意図的に簡易的なものであり、機密データや保護対象データとは見なされません。
?bouquet=openai を使用すると、Hub のファイルシステム、リポジトリの検索、詳細表示と作成、動的 Space、Jobs、サンドボックスの各ツールが利用可能になります。リポジトリの作成、Jobs、動的 Space、サンドボックスの各ツールには Hugging Face 認証が必要です。
ローカルでの実行
npx または docker を使って、MCP サーバーをローカルで実行できます。
npx @llmindset/hf-mcp-server # Start in STDIO mode
npx @llmindset/hf-mcp-server-http # Start in stateless Streamable HTTP JSON mode
docker で実行するには:
docker pull ghcr.io/evalstate/hf-mcp-server:latest
docker run --rm -p 3000:3000 ghcr.io/evalstate/hf-mcp-server:latest
上記のすべてのコマンドは、管理用 Web インターフェースを http://localhost:3000/metrics で起動します。ブラウザーで http://localhost:3000/ にアクセスすると、http://localhost:3000/mcp の MCP ウェルカムページにリダイレクトされます。設定オプションについては、[環境変数](#Environment Variables) を参照してください。Docker はデフォルトで Streamable HTTP(JSON RPC)モードになります。
開発
このプロジェクトでは、ビルドと開発に pnpm を使用します。全員が同じ pnpm バージョン(10.12.3)を使うように、Corepack を使用します。
OAuth の検出、動的登録、または Client ID Metadata Document の診断については、
docs/oauth-diagnostics.md を参照し、pnpm oauth:diagnose を実行してください。
ベンチマーク用ハーネス、過去の結果、最適化計画は、別の hf-mcp-optimise ワークスペースで管理されています。
# Install dependencies
pnpm install
# Build all packages
pnpm build
ビルドコマンド
pnpm run clean -> ビルド成果物をクリーンアップ
pnpm run build -> パッケージをビルド
pnpm run start -> MCP サーバーアプリケーションを起動
pnpm run buildrun -> クリーンアップ、ビルド、起動
pnpm run dev -> mcp を監視しながら並行して HMR 対応の開発サーバーを起動
Docker ビルド
イメージをビルドします:
docker build -t hf-mcp-server .
デフォルト設定(ストリーミング HTTP JSON モード)で実行します。ダッシュボードはポート 3000 の /metrics で利用できます。
HTTP クライアントは、Authorization: Bearer ヘッダーに Hugging Face トークンを含める必要があります:
docker run --rm -p 3000:3000 hf-mcp-server
STDIO MCP サーバーを実行します:
docker run -i --rm -e TRANSPORT=stdio -p 3000:3000 -e DEFAULT_HF_TOKEN=hf_xxx hf-mcp-server
TRANSPORT には stdio または streamableHttpJson を指定できます(デフォルト)。
トランスポートエンドポイント
トランスポートの種類ごとに、以下のエンドポイントを使用します:
- ステートレス Streamable HTTP JSON:
/mcp - Streamable HTTP JSON 用 MCP サーバーカード:
/mcp/server-card - STDIO:stdin/stdout を直接使用し、HTTP エンドポイントはありません
環境変数
サーバーは、以下の環境変数に対応しています。
TRANSPORT:使用するトランスポートの種類(stdioまたはstreamableHttpJson)DEFAULT_HF_TOKEN:ローカルの STDIO デプロイで使用するデフォルトトークンです。HTTP トランスポートでは、Authorization: Bearerヘッダーがないリクエストのフォールバックとして使用されません。stdioトランスポートで実行する場合、DEFAULT_HF_TOKENが設定されていなければHF_TOKENが使用されます。MCP_ALLOWED_HOSTS:MCP と API のルートで許可する追加の Host のカンマ区切り許可リストです。ループバックホストlocalhost,127.0.0.1,::1は常に許可されます。ホスト名を完全一致で指定するか、*.example.comのように先頭にワイルドカードを付けて指定します。HF_API_TIMEOUT:Hugging Face API リクエストのタイムアウト(ミリ秒、デフォルト:12500ms / 12.5 秒)USER_CONFIG_API:設定済みの Space を含む、tools/listが返すユーザーごとのディスカバリー投影用のオプション URL です。これらの設定で制御するのは、公開するデプロイ済みツールであり、既知のツールへの直接のtools/callを実行できるかどうかではありません。生成された Gradio エイリアスには、引き続き設定済みの Space マッピングが使用されます。未設定の場合は、変更不能な組み込みデフォルトが使用されます。ALLOW_INTERNAL_ADDRESS_HOSTS:アウトバウンドチェック時に、信頼されたドメインの内部/予約済み DNS 解決を許可する、オプションのホスト名カンマ区切り許可リストです(完全一致のホスト名と*.ワイルドカードに対応。例:huggingface.co,*.hf.space)。MCP_STRICT_COMPLIANCE:JSON Mode で GET リクエストを 405 で拒否するにはTrueに設定します(デフォルトではウェルカムページを表示します)。MCP_STRICT_TOKEN:Streamable HTTP 接続でトークンがない場合、サーバーインスタンスを構築する前に401で拒否するにはtrueに設定します。デフォルト(未設定またはその他の値)では、現在の動作が維持され、トークンのないリクエストは匿名のツールセットで続行します。指定されたトークンはwhoamiによる検証に合格する必要があります。無効なトークンは401を返し、検証が利用できない場合(ネットワークエラーや上流の障害など)は、リクエストの続行を許可せずに503を返します。厳格モードが無効の場合、401以外の検証失敗では、従来どおりフェイルオープンの動作が維持されます。DISABLE_TOOLS:tools/listで非表示にし、呼び出された場合は拒否するツール名のオプションのカンマ区切りリストです。例:hub_repo_search,hf_fs。拒否された呼び出しは、MCP ダッシュボードのツール呼び出し統計ではエラーとして引き続き表示されます。DEFINITION_TAGS:定義タグ、タグチェック、および関連するキャッシュヒントを無効にするにはoffに設定します。対象となる HTTP リクエストではデフォルトで有効です。定義タグを参照してください。DEFINITION_TAGS_TTL_MS:対象となるツールリストおよびディスカバリー結果のキャッシュヒント TTL(デフォルト:300000、0も指定可能)。キャッシュのスコープは常にプライベートです。DEFINITION_TAGS_SALT:デプロイ全体で使用するオプションのタグソルトです。変更すると既知のタグが無効になるため、レプリカ間で同じ値を使用してください。DEFINITION_TAGS_TEST:ダッシュボードの Caching タブと、/api/definition-tags配下のランタイムソルト/統計コントロールを有効にするにはtrueに設定します。本番環境では無効のままにしてください。コントロールはプロセスごとに適用され、保護されるのはMETRICS_PAGE_PASSWORDが設定されている場合のみです。PROXY_TOOLS_CSV:Streamable HTTP プロキシツールのソースを定義するオプションの CSV です(以下を参照)。PROXY_TOKEN:PROXY_TOOLS_CSVのスキーマを検出する際の起動時認証にのみ使用するオプションのトークンです。GRADIO_SKIP_INITIALIZE:trueに設定すると、Gradio MCP 呼び出しではinitializeハンドシェイクをスキップし、tools/callを直接実行します。METRICS_PAGE_PASSWORD:/metricsの管理 Web インターフェースと、その/api/*エンドポイントで使用するオプションの共有パスワードです。未設定または空の場合、インターフェースは公開されたままです。/mcpや/mcp/server-cardは保護されません。HF_SKILLS_DIR:ビルド済みの SEP-2640 スキルスナップショットを格納するローカルディレクトリです。skills.jsonには、各スキルのuri、完全なfrontmatter、およびファイルごとの{uri,digest}リソースマニフェストが含まれ、展開済みのスキルディレクトリとともに配置されます。HTTP トランスポートでは、サーバーがすべての生 SHA-256 ダイジェストを検証し、実際のSKILL.mdの frontmatter を確認してから、すべてのファイルをメモリにアトミックに保持します。各スキルのファイル数は最大 512 個、生コンテンツのサイズはSKILL.mdとネストされたファイル/共有ファイルを含めて最大 16 MiB です。いずれかの上限を超えるスナップショットは、最後に検証済みのスナップショットを置き換えずに拒否されます。ディレクトリの読み取りでは空のディレクトリも取得されます。スナップショットの鮮度 TTL は 3 時間です。古くなったスナップショットへのリクエストでは、バックグラウンドでスナップショットを 1 つ読み込み、検証している間、最後に有効だったスナップショットが引き続き使用されます。更新に失敗した場合は、検証済みのスナップショットを保持し、5 分間の再試行待機時間を設けます。HTTP サーバーはskills/list、skills/get、resources/read、およびオプションのresources/directory/readを実装し、有効なスナップショットが利用可能な場合に限り、directoryRead: trueを指定してio.modelcontextprotocol/skillsを通知します。スキルは、長時間接続する STDIO トランスポートでは公開されません。デフォルトは/mnt/hf-skills/distribution/latestで、hf://buckets/huggingface/skillsからマウントされた Hugging Face Space ボリュームでの使用を想定しています。LOG_SKILL_EVENTS:LOGGING_DATASET_IDとロギングトークンが設定されている場合、SEP-2640 Skills のプローブについて過去の製品利用状況のログ記録を有効にします(デフォルト:true)。イベントはツールクエリとは別にskills/YYYY-MM-DD/配下へ書き込まれ、クライアント/プロトコルの相関情報、成功の有無、所要時間、カーソルの有無、結果数の集計、対象を指定した get/read 操作で要求されたskill://URI が含まれます。カーソル値、frontmatter、リソースコンテンツ、レスポンス本文、エラーメッセージは記録されません。SHUTDOWN_GRACE_MS:SIGTERM/SIGINTを受けてからの正常なシャットダウンに許される上限時間(デフォルト:25000)。サーバーは最大min(5s, grace/3)の間、処理中の HTTP リクエストの完了を待ってから、バッファーされたデータセットログをフラッシュし、その後終了します。プラットフォームの停止タイムアウトより短い値にしてください。RUNTIME_METRICS_LOG_INTERVAL_MS:runtime_sampleレコード(イベントループの稼働率、CPU、イベントループの遅延、メモリ、接続の再利用、X-Forwarded-Forのホップ数)を System データセットストリームに書き込む間隔(デフォルト:60000、0で無効)。システムイベントのログ記録を有効にする必要があります。同じデータは、ダッシュボードの Process runtime カードにもリアルタイムで表示されます。
管理インターフェースのパスワード(任意)
METRICS_PAGE_PASSWORD に空でない値を設定すると、管理 Web インターフェースとその API エンドポイントで、簡易的な共有パスワードによる保護が有効になります。
/へのブラウザーアクセスは/mcpにリダイレクトされます。パスワードが受け入れられるまで、/metricsへのアクセスは/metrics/loginにリダイレクトされます。- ログインに成功すると、
/metricsにリダイレクトされます。 - ログインに成功すると、署名付きの
HttpOnly、SameSite=Lax属性を持つ 30 日間有効な Cookie が保存されます。HTTPS リクエストでは、SecureCookie 属性も付与されます。 /api/transport、/api/sessions、/api/transport-metrics、/api/skills-metricsへのアクセスには、Cookie または有効なスクレイパー認証情報が必要です。/mcpと公開されている/mcp/server-cardには影響しません。
これは、気軽な閲覧を防ぐことのみを目的としています。ユーザー、ロール、レート制限、監査証跡はありません。また、実際の認証、HTTPS、またはプラットフォーム/リバースプロキシ層でのアクセス制御の代わりにはなりません。
HTTPS がリバースプロキシで終端される場合、アプリケーションが Cookie の Secure 属性を正しく適用できるよう、プロキシは X-Forwarded-Proto を実際のクライアントプロトコルで上書きする必要があります。
Hugging Face Space では、Space の設定でこれを Space secret として設定してください。GitHub Actions のシークレットは、このリポジトリのワークフローから実行中の Space に自動的に渡されません。Hugging Face CLI で設定する場合は、次のコマンドを使用します。
hf spaces secrets add <org>/<space> -s METRICS_PAGE_PASSWORD='<shared-password>'
自動スクレイパーは、ヘッダーでパスワードを送信できます。
curl --fail-with-body --silent --show-error \
-H "X-Metrics-Password: ${METRICS_PAGE_PASSWORD}" \
https://your-space.hf.space/api/transport-metrics
簡単な URL ベースのジョブでは、URL エンコードされたクエリパラメーターも使用できます。
curl --fail-with-body --silent --show-error --get \
--data-urlencode "metrics_password=${METRICS_PAGE_PASSWORD}" \
https://your-space.hf.space/api/transport-metrics
可能な場合はヘッダーを使用してください。アプリケーション自体は認証情報をログに記録しませんが、クエリー文字列内のパスワードは、リバースプロキシやアクセスログ、監視システム、シェルのプロセス一覧、ブラウザー履歴に保存される可能性があります。
Space から共有 Hugging Face スキルカタログを公開するには、バケットをマウントし、HF_SKILLS_DIR が最新の配布ディレクトリを指すようにします。
hf spaces volumes set <org>/<space> -v hf://buckets/huggingface/skills:/mnt/hf-skills:ro
hf spaces variables add <org>/<space> -e HF_SKILLS_DIR=/mnt/hf-skills/distribution/latest
プロキシツール(CSV 経由の Streamable HTTP)
起動時にプロキシツール定義を読み込むには、PROXY_TOOLS_CSV に HTTPS URL またはローカルファイルパスを設定します。
これらのプロキシサーバーで認証が必要な場合は、PROXY_TOKEN を設定します。ユーザー、デフォルト、ロギング用のトークンは、起動時のプロキシスキーマ検出には使用されません。
サーバーは起動時に各 MCP エンドポイントを 1 回取得し、initialize と tools/list(タイムアウト 10 秒)を実行して、返されたツールを登録します。
ソースの取得に失敗した場合や、ツールが返されなかった場合は、そのソースはスキップされます(起動は失敗しません)。
CSV 形式
tool_name,url,response_type
papers,https://evalstate-hf-papers.hf.space/mcp,SSE
news,https://example.com/mcp,JSON
tool_name:単一ツールを提供するアップストリームではローカルのツール名、複数のツールを提供するアップストリームではプロキシソースの識別子です。url:Streamable HTTP MCP エンドポイントです。response_type:旧バージョンとの互換性のためのフィールドです。SSEとJSONのどちらも受け付けます。プロキシ呼び出しでは引き続きアップストリームの Streamable HTTP レスポンスを利用できますが、このサーバーは常にクライアントへ直接 JSON-RPC レスポンスを返します。
ツール名
ツール名は、アップストリームの MCP エンドポイントが返すツール数によって異なります。
- アップストリームのツールが 1 つの場合:公開されるツール名は CSV の 1 列目の値です。
- アップストリームのツールが複数の場合:公開されるツール名はアップストリームのツール名です。
公開するプロキシツール名が登録済みのツール名と重複する場合、そのプロキシツールはスキップされ、警告がログに記録されます。
これらのツール名をブーケやミックスに含めると、tools/list を通じて公開できます。
bouquet=proxy または mix=proxy を指定すると、ベースとなる組み込みツールに加えて、PROXY_TOOLS_CSV から読み込まれたすべてのプロキシツールが公開されます。起動時に設定された既知のプロキシツールへの直接呼び出しは、この検出対象の選択に左右されません。
Dynamic Space のヘルスチェック
monitor/distribution/bin/monitor.py --check は、DYNAMIC_SPACE_DATA で設定されたカタログを対象とする、読み取り専用の CSV ヘルスチェックです。Hub の実行時状態と、実行可能な各 Space の Gradio MCP スキーマをチェックしますが、ツールの呼び出し、Space の再起動、PR の作成は行いません。ローカルで次のように実行します。
pnpm health:dynamic-spaces
Python 3 と標準ライブラリを使用します。カタログの URL は公開されている必要があります。非公開の Space のメタデータとスキーマのリクエストには、まず HF_TOKEN、次に DEFAULT_HF_TOKEN を使用します。スリープ状態の Space は、HEALTH_PROBE_SLEEPING=true にしない限り、起動せずに Hub のメタデータから正常と判断します。
8 時間ごとの修復スケジュールと読み取り専用ダッシュボードについては、monitor/README.md を参照してください。Bucket はレポートとアトミックな台帳を保持します。
HF_TOKEN(設定されていない場合は DEFAULT_HF_TOKEN)は、ヘルスチェックの読み取り、再起動、PR 作成に使用する親 Hub 認証情報です。設定されている場合、両方の修復アクションが有効になります。RESPONSES_API_KEY(またはそのフォールバックである OPENAI_API_KEY)は Doctor モデルの認証情報です。MONITOR_HF_TOKEN が設定されている場合、Doctor にのみ渡される別個の読み取り専用トークンです。公開情報のみを対象とする読み取り専用モニターでは、HF_TOKEN を省略してください。ジョブログには Space ごとに 1 行のステータスと、最後にサマリーが出力されます。
終了コード 0 はすべての Space が正常であることを示し、1 は少なくとも 1 つの Space が異常または劣化していることを示します。カタログまたは設定が無効な場合は、終了コード 2 が返されます。任意の調整用変数は HEALTH_TIMEOUT_SECONDS、HEALTH_ATTEMPTS、HEALTH_RETRY_DELAY_SECONDS、HEALTH_PROBE_SLEEPING です。リトライと手動リセットのポリシーについては、monitor/README.md を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。