Unichat MCP Server in Python について
Unichat MCP Server は、OpenAI、Anthropic および OpenAI 互換のプロバイダーへリクエストを送信する Python 製の MCP サーバーです。MCP クライアントから複数の LLM を利用したい開発者向けで、UNICHAT_BASE_URL によりカスタムエンドポイントを指定できます。
主な機能
- 01unichat ツールによるリクエスト送信とレスポンス取得
- 02コードレビューや文書化向けのプリセットプロンプト
- 03OpenAI 互換プロバイダー用のカスタムエンドポイント
- 04uvx による公開パッケージのインストール
活用シーン
- 01Claude Desktop から OpenAI や Anthropic のモデルを呼び出す
- 02プリセットプロンプトによるコードのレビューや説明
- 03互換エンドポイント経由での DeepSeek や xAI への接続
MCP 対応
本プロジェクトは MCP サーバーであり、unichat ツールと 4 つのコード関連プロンプトを MCP クライアントに公開し、設定された LLM プロバイダーへリクエストを転送します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Unichat MCP サーバー(Python)
TypeScript版も利用できます。
MCP プロトコルを使用して、ツールまたは定義済みのプロンプト経由で OpenAI、Anthropic、および OpenAI 互換プロバイダーにリクエストを送信します。MistralAI、xAI、Google AI、DeepSeek、Alibaba、Inception などの OpenAI 互換プロバイダーを利用する場合は、UNICHAT_BASE_URL にプロバイダーの互換 API エンドポイントを設定してください。
ベンダー API キーが必要です
ツール
サーバーは1つのツールを実装しています。
unichat:unichat にリクエストを送信します- 必須の文字列引数として「messages」を受け取ります
- 応答を返します
プロンプト
code_review- ベストプラクティス、潜在的な問題、改善点についてコードをレビューします
- 引数:
code(文字列、必須):レビューするコード"
document_code- docstring やコメントを含む、コードのドキュメントを生成します
- 引数:
code(文字列、必須):コメントを追加するコード"
explain_code- コードの動作を詳しく説明します
- 引数:
code(文字列、必須):説明するコード"
code_rework- 提供されたコードに、指定された変更を適用します
- 引数:
changes(文字列、任意):適用する変更"code(文字列、必須):修正するコード"
クイックスタート
インストール
Claude Desktop
MacOS の場合:~/Library/Application\ Support/Claude/claude_desktop_config.json
Windows の場合:%APPDATA%/Claude/claude_desktop_config.json
対応モデル:
"SELECTED_UNICHAT_MODEL"として使用できる、現在対応しているモデルの一覧はこちらにあります。該当するベンダーの API キーを"YOUR_UNICHAT_API_KEY"として追加してください。
例:
"env": {
"UNICHAT_MODEL": "gpt-5.4-mini",
"UNICHAT_API_KEY": "YOUR_OPENAI_API_KEY"
}
カスタムエンドポイントを使用する OpenAI 互換プロバイダーの場合:
"env": {
"UNICHAT_MODEL": "PROVIDER_MODEL",
"UNICHAT_API_KEY": "YOUR_PROVIDER_API_KEY",
"UNICHAT_BASE_URL": "https://provider.example.com/v1"
}
UNICHAT_BASE_URLを設定すると、サーバーは設定されたUNICHAT_MODELを Unichat の組み込みモデル一覧と照合せずに受け入れます。
開発版/未公開サーバーの設定
"mcpServers": {
"unichat-mcp-server": {
"command": "uv",
"args": [
"--directory",
"{{your source code local directory}}/unichat-mcp-server",
"run",
"--locked",
"unichat-mcp-server"
],
"env": {
"UNICHAT_MODEL": "SELECTED_UNICHAT_MODEL",
"UNICHAT_API_KEY": "YOUR_UNICHAT_API_KEY"
}
}
}
公開済みサーバーの設定
"mcpServers": {
"unichat-mcp-server": {
"command": "uvx",
"args": [
"unichat-mcp-server"
],
"env": {
"UNICHAT_MODEL": "SELECTED_UNICHAT_MODEL",
"UNICHAT_API_KEY": "YOUR_UNICHAT_API_KEY"
}
}
}
Smithery 経由でインストール
Smithery経由で Unichat を Claude Desktop に自動インストールするには:
npx -y @smithery/cli install unichat-mcp-server --client claude
開発
ソースからのクリーンインストール
前提条件:Git、Python 3.11 以降(pyproject.toml で宣言)、および PATH から利用できる uv が必要です。Node.js/npm は、以下で任意に使用する MCP Inspector の場合のみ必要です。シェルの例では Bash/Zsh の構文を使用しています。
リポジトリをクローンし、ロック済みの依存関係を復元します。
git clone https://github.com/amidabuddha/unichat-mcp-server.git
cd unichat-mcp-server
uv sync --locked
uv sync --locked は、プロジェクト内に .venv/ を作成し、プロジェクトを編集可能モードでインストールして、uv.lock から依存関係を復元します。ロックファイルの更新が必要な場合は、暗黙に変更するのではなく、処理に失敗します。uv run を使用する場合、仮想環境の有効化やグローバルな Python 依存関係のインストールは不要です。
Claude Desktop の例と同じ環境変数を設定し、プレースホルダーをプロバイダーの値に置き換えます。
export UNICHAT_MODEL="SELECTED_UNICHAT_MODEL"
export UNICHAT_API_KEY="YOUR_UNICHAT_API_KEY"
# Optional, for an OpenAI-compatible provider with a custom endpoint:
# export UNICHAT_BASE_URL="https://provider.example.com/v1"
サーバーは環境変数を読み込みますが、.env ファイル自体は読み込みません。Claude Desktop では、これらの値を上記のサーバーの env 設定に記述してください。
ローカルサーバーを実行します。
uv run --locked unichat-mcp-server
これは stdio MCP サーバーです。接続して操作するには、Claude Desktop または以下の Inspector を使用してください。ウェブページや対話型チャットプロンプトは起動しません。実行には編集可能モードでのインストールで十分です。設定済みの Hatchling バックエンドを使ってソース配布物と wheel 配布物も作成するには、次を実行します。
uv build
パッケージは dist/ に出力されます。uv build は隔離された環境でビルドバックエンドを用意するため、グローバルにインストールした build フロントエンドは不要です。実行時の依存関係は uv.lock でロックされていますが、pyproject.toml では hatchling のビルド要件のバージョンは固定されていません。
通常の開発
src/ 以下のファイルを編集した後、サーバーを再起動するか、MCP クライアントで再接続します。
uv run --locked unichat-mcp-server
編集可能モードでインストールされているため、現在のソースが使用されます。通常のソース変更では、.venv/ の削除、依存関係の再インストール、配布パッケージの再ビルドは不要です。更新されたパッケージ成果物が必要な場合にのみ、uv build を再実行してください。依存関係マニフェストとロックファイルへの変更を取得した後は、uv sync --locked を実行して、環境をそれらの内容に合わせて更新してください。
このリポジトリには、設定済みの自動テストスイートやウォッチコマンドはありません。以下の Inspector を使ってツールとプロンプトを手動で試し、変更後にサーバーを再起動してください。
既存のチェックアウトをクリーンに再ビルドする
実行中のサーバーを停止し、リポジトリのルート(pyproject.toml と uv.lock があるディレクトリ)から次のコマンドを実行します。以下のパスは、uv のデフォルトであるプロジェクト内環境を前提としています。.venv/ にはインストール済みの依存関係と編集可能モードのプロジェクトが含まれ、dist/ には生成されたソース/wheel アーカイブが含まれます。
rm -rf .venv dist
uv sync --locked
uv build
これにより、環境と配布パッケージが再作成されます。uv.lock、ソース、設定、.env ファイル、ユーザーデータは保持してください。build/ や wheels/ など、ほかの無視対象の名前は、このプロジェクトのビルドワークフローで生成物として定められていないため、クリーンアップ対象ではありません。グローバルな uv キャッシュと Python のインストールは再利用できます。再度実行するには、上記の環境変数を保持または再設定し、uv run --locked unichat-mcp-server を使用してください。
意図的な依存関係の更新
依存関係の更新は、復元とは別の作業です。pyproject.toml の要件を意図的に変更する場合は、uv lock を実行して、変更された uv.lock の内容を確認し、その後 uv sync --locked を実行してください。既存の依存関係を宣言済みの制約内で意図的にアップグレードするには、たとえば次のようにします。
uv lock --upgrade-package unichat
uv sync --locked
ロックファイルの変更内容を確認し、更新を受け入れる前にサーバーの動作を確認してください。通常のインストールと再ビルドでは、既存のロックファイルを使用してください。
公開
公開はメンテナーが別途行う作業であり、ローカルへのインストールや再ビルドには含まれません。上記のクリーンな再ビルドの手順で新しい配布物を準備し、PyPI にアップロードする前に、dist/ に意図したリリースの内容だけが含まれていることを確認してください。
uv publish --token "YOUR_PYPI_API_TOKEN"
このリポジトリには .github/workflows/publish.yml に公開ワークフローもあり、main ブランチ上の pyproject.toml の変更、または手動実行を契機として実行されます。
デバッグ
MCP サーバーは stdio 経由で実行されるため、デバッグが難しい場合があります。最適なデバッグ環境を利用するには、MCP Inspector の使用を強くおすすめします。
次のコマンドを使って、npm 経由で MCP Inspector を起動できます。
npx @modelcontextprotocol/inspector uv --directory "/path/to/unichat-mcp-server" run --locked unichat-mcp-server
起動すると、Inspector に URL が表示されます。その URL にブラウザーからアクセスすると、デバッグを開始できます。
ホスト型デプロイ
Frontier AI でホスト型デプロイを利用できます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。