|
--- |
|
title: Gradio MCP Minimal |
|
emoji: 🌍 |
|
colorFrom: blue |
|
colorTo: blue |
|
sdk: gradio |
|
sdk_version: 5.26.0 |
|
app_file: app.py |
|
pinned: false |
|
--- |
|
|
|
<div align="center"> |
|
|
|
 |
|
|
|
|
|
# 🚀 **Gradio MCP Minimal** |
|
|
|
<p align="center"> |
|
<a href="https://www.python.org"> |
|
<img alt="Python" src="https://img.shields.io/badge/Python-3.12-blue?logo=python&logoColor=white"> |
|
</a> |
|
<a href="https://www.gradio.app"> |
|
<img alt="Gradio" src="https://img.shields.io/badge/Gradio-5.26.0-orange?logo=gradio"> |
|
</a> |
|
<a href="https://github.com/makiai/gradio-mcp-minimal/blob/main/LICENSE"> |
|
<img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-green"> |
|
</a> |
|
<a href="https://github.com/makiai/gradio-mcp-minimal/stargazers"> |
|
<img alt="GitHub Stars" src="https://img.shields.io/github/stars/makiai/gradio-mcp-minimal?style=social"> |
|
</a> |
|
<a href="https://huggingface.co/spaces/MakiAi/gradio-mcp-minimal"> |
|
<img alt="HF Spaces" src="https://img.shields.io/badge/Spaces-Live%20Demo-blueviolet?logo=huggingface&logoColor=white"> |
|
</a> |
|
</p> |
|
</div> |
|
|
|
## ✨ 概要 |
|
このリポジトリは **最小構成** で Gradio アプリを立ち上げ、同時に **MCP (Model Context Protocol) サーバー** として機能させるサンプルです。 |
|
たった 1 つのファイルを実行するだけで、Web UI と MCP SSE エンドポイントの両方が手に入ります。 |
|
|
|
## 📄 ファイル構成 |
|
| ファイル / ディレクトリ | 役割 | |
|
|------------------------|------| |
|
| `app.py` | Gradio UI + MCP サーバー(`letter_counter` ツール) | |
|
| `requirements.txt` | 依存パッケージ(`gradio[mcp]` のみ) | |
|
| `assets/header.svg` | README 用ヘッダー画像(任意) | |
|
|
|
## 📦 セットアップ |
|
|
|
### 🚀 uv を使ったクイックスタート(推奨) |
|
|
|
```bash |
|
# 仮想環境の作成 |
|
uv venv |
|
# 仮想環境の有効化 |
|
source .venv/bin/activate |
|
# 依存インストール |
|
uv pip install -r requirements.txt |
|
``` |
|
|
|
### 🐍 標準 pip のみで実行したい場合 |
|
|
|
```bash |
|
python -m venv .venv |
|
source .venv/bin/activate |
|
pip install -r requirements.txt |
|
``` |
|
|
|
## 🚀 実行 |
|
以下のコマンドを実行でローカルサーバーが起動します。 |
|
```bash |
|
python app.py |
|
``` |
|
|
|
- Web UI: <http://127.0.0.1:7860> |
|
- MCP SSE エンドポイント: <http://127.0.0.1:7860/gradio_api/mcp/sse> |
|
- UI フッター → **View API** → **MCP** をクリックすると、コピペ可能な設定 JSON が表示されます。 |
|
|
|
## ⚙️ MCP クライアント設定例 |
|
Claude Desktop / Cline などで `claude_desktop_config.json` 等に追記: |
|
```jsonc |
|
{ |
|
"mcpServers": { |
|
"gradio-local": { |
|
"url": "http://127.0.0.1:7860/gradio_api/mcp/sse" |
|
} |
|
} |
|
} |
|
``` |
|
クライアントを再起動すると `letter_counter` ツールが利用できるようになります 🎉 |
|
|
|
## 🔧 仕組み |
|
```python |
|
demo.launch(mcp_server=True) |
|
``` |
|
この 1 行で Gradio アプリが SSE ベースの MCP サーバーとして動作します。 |
|
ドキュストリングと型ヒントから自動でスキーマが生成されます。 |
|
|
|
## 🌠 拡張方法 |
|
1. `app.py` に関数を追加し、適切なドキュストリングを記述 |
|
2. `Interface(...)` へ登録(または Blocks を使用) |
|
3. 再起動すれば新しい MCP ツールとして自動公開 |
|
|
|
## 🛫 🤗 Spaces へ無料デプロイ |
|
ファイル一式を Hugging Face Spaces (Gradio テンプレート) へプッシュすると、無料の公開 MCP サーバーになります: |
|
``` |
|
https://<your-space>.hf.space/gradio_api/mcp/sse |
|
``` |
|
例)`https://makiai-gradio-mcp-minimal.hf.space/gradio_api/mcp/sse` |
|
|
|
## 🔗 MCP クライアント設定例 (Spaces) |
|
|
|
Spaces で公開したサーバーを **MCP クライアント(Claude Desktop / Cline など)** から呼び出す手順です。 |
|
|
|
1. **エンドポイント URL** |
|
``` |
|
https://<your-space>.hf.space/gradio_api/mcp/sse |
|
``` |
|
例)`https://makiai-gradio-mcp-minimal.hf.space/gradio_api/mcp/sse` |
|
|
|
2. **config 追記例** (`claude_desktop_config.json` 等) |
|
```jsonc |
|
{ |
|
"mcpServers": { |
|
"gradio-space": { // 任意の名前 |
|
"url": "https://makiai-gradio-mcp-minimal.hf.space/gradio_api/mcp/sse" |
|
} |
|
} |
|
} |
|
``` |
|
|
|
3. **動作確認** |
|
クライアントを再起動 → Tool Palette で `server = gradio-space` を選択 → |
|
`letter_counter` ツールに `text: "hello"` を送信し、`length: 5` が返れば接続完了です 🎉 |
|
|
|
## 📝 ライセンス |
|
MIT |
|
|
|
## Memo |
|
|
|
```bash |
|
codex -a --full-auto -m o3 "まずは codex-rules.md を確認して、その後、gMaL.md を参考にして、app.py で色々なパターンのおみくじアプリ Gradio MCPを作成して" |
|
``` |