Implements the control layer using FastAPI to manage requests between the UI and model layer, handling validation, preprocessing, and error handling.
Provides the presentation layer with Gradio to create an interactive web UI for chat interactions, allowing users to input prompts and select models.
Integrates with Ollama to provide local LLM inferencing capabilities, handling model loading, management, and execution of language model requests in a local environment.
ローカルMCPチャット (Ollama + FastAPI + Gradio)
このプロジェクトは、MCP(Model Control Protocol)のテスト実装として、Ollamaを使用したローカルLLMチャットアプリケーションを構築しています。MCPの各レイヤーの役割と責任を明確に分離し、それぞれのコンポーネントがどのように連携するかを検証するための環境を提供します。
MCPの構成要素と役割
MCPは、LLMアプリケーションを構築する際の標準的なアーキテクチャパターンを提供します。このプロジェクトでは、以下のような構成でMCPを実装しています:
1. モデルレイヤー (Ollama)
役割: 実際のLLMモデルの実行と管理
責任:
モデルのロードと管理
推論の実行
モデル固有のパラメータ管理
モデルのバージョン管理
インターフェース: Ollama API (HTTP/JSON)
特徴:
ローカルでのモデル実行
モデルごとの独立した実行環境
シンプルなAPIインターフェース
2. コントロールレイヤー (FastAPI)
役割: モデルとアプリケーションの間の制御層
責任:
リクエストの検証と前処理
モデル選択の制御
プロンプトの正規化
レスポンスの後処理
エラーハンドリング
ロギングとモニタリング
インターフェース: REST API
特徴:
モデルに依存しない抽象化
統一されたインターフェース
スケーラブルな設計
3. プレゼンテーションレイヤー (Gradio)
役割: ユーザーインターフェースの提供
責任:
ユーザー入力の受付
インタラクションの管理
レスポンスの表示
エラー表示
インターフェース: Web UI
特徴:
直感的なユーザーインターフェース
リアルタイムなインタラクション
デモンストレーションに適した設計
MCPの通信フロー
各レイヤー間の通信
プレゼンテーション → コントロール
HTTPリクエスト(JSON形式)
プロンプトとモデル選択情報
エラーハンドリング情報
コントロール → モデル
Ollama APIリクエスト
正規化されたプロンプト
モデルパラメータ
エラーハンドリング
モデル → コントロール
モデルレスポンス
生成メタデータ
エラー情報
コントロール → プレゼンテーション
整形済みレスポンス
エラーメッセージ
ステータス情報
プロジェクトの目的
MCPの基本的な実装パターンの検証
ローカルLLM(Ollama)との連携方法の確認
チャットインターフェースの実装パターンの検証
バックエンド(FastAPI)とフロントエンド(Gradio)の連携方法の確認
システムアーキテクチャ
各コンポーネントの役割
Gradio UI (app.py)
ユーザーインターフェースの提供
プロンプト入力とモデル選択の受付
FastAPIバックエンドとの通信
レスポンスの表示
FastAPI (main.py)
MCPの実装の中核
リクエストの受付と処理
Ollama APIとの通信
エラーハンドリングとロギング
レスポンスの整形と返却
Ollama
ローカルLLMの実行環境
モデルの管理と推論実行
モデルレスポンスの生成
機能
ローカルで動作するLLMチャットインターフェース
複数のモデル(mistral)に対応
シンプルで使いやすいGradio UI
FastAPIバックエンドによる効率的なAPI処理
MCPの基本的な機能実装
プロンプトの受け付け
モデル選択
レスポンス生成
エラーハンドリング
必要条件
Python 3.8以上
Ollama(ローカルにインストール済み)
必要なPythonパッケージ(requirements.txtに記載)
セットアップ
リポジトリをクローン
仮想環境の作成と有効化
依存パッケージのインストール
Ollamaの起動
使用方法
FastAPIバックエンドの起動
Gradioフロントエンドの起動
ブラウザで http://localhost:7860 にアクセス
アーキテクチャ
main.py
: FastAPIバックエンドサーバーOllama APIとの通信を担当
モデルの選択とプロンプトの処理
app.py
: Gradioフロントエンドユーザーインターフェースの提供
バックエンドAPIとの通信
注意事項
Ollamaがローカルで起動している必要があります(デフォルトポート: 11434)
使用するモデルは事前にOllamaでダウンロードされている必要があります
初回のモデルダウンロードには時間がかかる場合があります
ライセンス
[ライセンス情報を記載]
貢献
[貢献方法を記載]
開発とテスト
開発環境のセットアップ
上記のセットアップ手順に従って環境を構築
開発用の設定
FastAPIのデバッグモード:
uvicorn main:app --reload --log-level debug
Gradioのデバッグモード: 環境変数
GRADIO_DEBUG=1
を設定
テスト項目
基本機能テスト
プロンプト入力と応答生成
モデル選択の動作
エラー時の挙動
MCP実装テスト
APIエンドポイントの動作確認
リクエスト/レスポンスの形式
エラーハンドリング
統合テスト
フロントエンドとバックエンドの連携
Ollamaとの通信
エラー時の全体の挙動
デバッグ
FastAPIのログ:
uvicorn
のログレベルをdebug
に設定Gradioのデバッグ: 環境変数
GRADIO_DEBUG=1
を設定Ollamaのログ:
ollama serve
の出力を確認
今後の展開
より多くのモデルへの対応
ストリーミングレスポンスの実装
チャット履歴の管理機能
より高度なMCP機能の実装
エラーハンドリングの強化
パフォーマンス最適化
注意事項
Ollamaがローカルで起動している必要があります(デフォルトポート: 11434)
使用するモデルは事前にOllamaでダウンロードされている必要があります
初回のモデルダウンロードには時間がかかる場合があります
このプロジェクトはMCPのテスト実装であり、本番環境での使用は想定していません
ライセンス
[ライセンス情報を記載]
貢献
[貢献方法を記載]
MCPの実装詳細
モデルレイヤー(Ollama)の実装
コントロールレイヤー(FastAPI)の実装
プレゼンテーションレイヤー(Gradio)の実装
This server cannot be installed
A local LLM chat application implementing the Model Control Protocol (MCP) architecture with Ollama, FastAPI, and Gradio that demonstrates clear separation of model, control, and presentation layers.
Related MCP Servers
- -securityFlicense-qualityAn interactive chat interface that combines Ollama's LLM capabilities with PostgreSQL database access through the Model Context Protocol (MCP). Ask questions about your data in natural language and get AI-powered responses backed by real SQL queries.Last updated -58
- -securityAlicense-qualityEnables seamless integration between Ollama's local LLM models and MCP-compatible applications, supporting model management and chat interactions.Last updated -75100AGPL 3.0
- -securityAlicense-qualityA server for the Machine Chat Protocol (MCP) that provides a YAML-based configuration system for LLM applications, allowing users to define resources, tools, and prompts without writing code.Last updated -5MIT License
- -securityFlicense-qualityAn MCP server that allows Claude to interact with local LLMs running in LM Studio, providing access to list models, generate text, and use chat completions through local models.Last updated -10