Unichat MCP Server in TypeScript について
Unichat は、共通ツールや定義済みプロンプトを通じて複数の AI サービスへリクエストを送る MCP サーバーです。MCP ワークフローで複数ベンダーを利用する用途向けで、各社の API キーが必要です。
主な機能
- 01複数の AI サービスへのリクエスト
- 02共通の `unichat` ツール
- 03コード関連のプロンプト
- 04STDIO と SSE のトランスポート
活用シーン
- 01MCP 経由で異なるベンダーのモデルを呼び出す
- 02プロンプトによるコードレビューや説明
MCP 対応
MCP を通じて `unichat` ツールとコード関連のプロンプトを提供し、STDIO または SSE で通信します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
TypeScript 版 Unichat MCP サーバー
Python 版も利用できます。
ツールまたは事前定義されたプロンプトを使い、MCP プロトコル経由で OpenAI、MistralAI、Anthropic、xAI、Google AI、DeepSeek にリクエストを送信します。各ベンダーの API キーが必要です。
引数を介して、STDIO と SSE の両方のトランスポート方式に対応しています。
ツール
サーバーは次のツールを実装しています。
unichat:unichat にリクエストを送信します- 必須の文字列引数として「messages」を受け取ります
- レスポンスを返します
プロンプト
code_review- ベストプラクティス、潜在的な問題、改善点についてコードをレビューします
- 引数:
code(文字列、必須):レビューするコード"
document_code- docstring とコメントを含むコードのドキュメントを生成します
- 引数:
code(文字列、必須):コメントを付けるコード"
explain_code- コードの一部がどのように動作するかを詳しく説明します
- 引数:
code(文字列、必須):説明するコード"
code_rework- 指定された変更をコードに適用します
- 引数:
changes(文字列、任意):適用する変更"code(文字列、必須):変更するコード"
開発
ソースからのクリーンインストール
前提条件:Git、Node.js、npm。リポジトリの公開ワークフローに合わせるため、Node.js 24 を使用してください。package.json にはサポート対象の Node.js バージョン範囲が宣言されていません。ビルドには TypeScript が必要なため、インストール時に開発依存関係を含めてください。
リポジトリをクローンし、コミット済みの package-lock.json から依存関係を復元します。
git clone https://github.com/amidabuddha/unichat-ts-mcp-server.git
cd unichat-ts-mcp-server
npm ci
npm ci は自動的に prepare を実行し、npm run build を呼び出します。このスクリプトは生成された build/ ディレクトリを削除し、tsconfig.json を使って src/ を build/ にコンパイルした後、build/index.js に実行権限を付与します。ライフサイクルスクリプトが有効(デフォルト)であれば、初回ビルドを別途行う必要はありません。このワークフローでは package-lock.json を保持し、開発依存関係をインストールしてください。--ignore-scripts や --omit=dev は使用しないでください。
実行前に、プロセス環境で UNICHAT_MODEL と UNICHAT_API_KEY を設定するか、手動インストールに記載されている MCP クライアントの env 設定を使用してください。両方のプレースホルダーを、サポート対象のモデルとそのベンダーの API キーに置き換えてください。POSIX シェルでの例:
export UNICHAT_MODEL="YOUR_PREFERRED_MODEL_NAME"
export UNICHAT_API_KEY="YOUR_VENDOR_API_KEY"
node build/index.js --stdio
サーバーはプロセス環境を読み取ります。.env ファイルは自動的には読み込みません。STDIO では、MCP クライアントがプロセスと通信することを想定しています。代わりにローカルビルドを SSE で実行するには、node build/index.js --sse を使用します(デフォルトのエンドポイント:http://localhost:3001/sse)。リモートアクセスについては、以下の SSE ホスト設定を参照してください。
通常の開発
すべてのコマンドはリポジトリのルートから実行します。ソースファイルの変更に合わせて自動的に再コンパイルするには、次を実行します。
npm run watch
これにより tsc --watch が実行され、監視中に変更されたファイルが再コンパイルされます。サーバーの起動や再起動は行われません。コンパイル後、上記の環境設定を使用してサーバーを再起動するか、MCP クライアントに再接続し、更新後のビルドを起動してください。
一度だけビルドする場合:
npm run build
このスクリプトは毎回 build/ を再作成します。編集中の差分コンパイルにはウォッチモードを使用してください。通常のソース変更では、依存関係を削除したり、すべてを再インストールしたりする必要はありません。更新の取得後に依存関係のマニフェストとロックファイルが変更された場合は、npm ci を再実行してください。
package.json に自動テスト用のスクリプトはありません。ビルド時に TypeScript のチェックが行われます。ビルド後に手動で MCP の動作を確認するには、デバッグの説明に従って必要な環境変数を設定し、npm run inspector を実行してください。
既存のチェックアウトのクリーンビルド
実行中のウォッチャーとサーバーがあれば、まず停止してください。リポジトリのルートから、ロックファイルに基づいて依存関係を復元し、最初からビルドします。
npm ci
npm ci は node_modules/ 自体を置き換え、その後 prepare によってビルドスクリプトが実行され、build/ のみを削除して再生成します。どちらか、または両方のディレクトリがすでに削除されている場合も、この方法で実行できます。別途削除したり、ビルドコマンドをもう一度実行したりする必要はありません。
依存関係がすでにインストール済みでロックファイルと一致しており、生成済みの出力のみをクリーンビルドする場合は、次を実行します。
npm run build
これらの手順では、src/、設定、.env ファイル、生成ディレクトリの外部にあるユーザーデータ、および package-lock.json は保持されます。build/ には生成ファイルのみを置いてください。プロジェクトのビルドのために git clean を使用したり、グローバルな npm キャッシュやツールチェーンを消去したりしないでください。
公開
公開は独立したリリース作業です。リポジトリの公開ワークフローでは、インストールとビルドの後に npm publish を使用します。ローカルでのインストール、開発、クリーンビルドには、公開は必要ありません。
インストール
Smithery 経由でのインストール
Smithery を使用して、Unichat MCP Server を Claude Desktop に自動でインストールするには、次を実行します。
npx -y @smithery/cli install unichat-ts-mcp-server --client claude
手動でのインストール
Claude Desktop で使用するには、サーバー設定を追加します。
MacOS の場合:~/Library/Application Support/Claude/claude_desktop_config.json
Windows の場合:%APPDATA%/Claude/claude_desktop_config.json
ローカルで実行:
{
"mcpServers": {
"unichat-ts-mcp-server": {
"command": "node",
"args": [
"{{/path/to}}/unichat-ts-mcp-server/build/index.js"
],
"env": {
"UNICHAT_MODEL": "YOUR_PREFERRED_MODEL_NAME",
"UNICHAT_API_KEY": "YOUR_VENDOR_API_KEY"
}
}
}
公開済みのものを実行:
{
"mcpServers": {
"unichat-ts-mcp-server": {
"command": "npx",
"args": [
"-y",
"unichat-ts-mcp-server"
],
"env": {
"UNICHAT_MODEL": "YOUR_PREFERRED_MODEL_NAME",
"UNICHAT_API_KEY": "YOUR_VENDOR_API_KEY"
}
}
}
デフォルトでは STDIO で実行されます。引数
--stdioを指定して実行することもできます。SSE で実行するには、引数--sseを指定してください。
npx -y unichat-ts-mcp-server --sse
SSE トランスポートでは、デフォルトで Host ヘッダーが localhost、127.0.0.1、[::1] のいずれかであることを検証します。リモート SSE 環境にデプロイする場合は、許可するホスト名をカンマ区切りで MCP_ALLOWED_HOSTS に設定してください。
対応モデル:
"YOUR_PREFERRED_MODEL_NAME"として指定できる、現在対応しているモデルの一覧はこちらにあります。該当するベンダーの API キーを"YOUR_VENDOR_API_KEY"として追加してください。
例:
"env": {
"UNICHAT_MODEL": "gpt-5.4-mini",
"UNICHAT_API_KEY": "YOUR_OPENAI_API_KEY"
}
デバッグ
MCP サーバーは標準入出力経由で通信するため、デバッグが難しい場合があります。パッケージスクリプトとして利用できる MCP Inspector の使用をおすすめします。
npm run inspector
Inspector に、ブラウザーでデバッグツールにアクセスするための URL が表示されます。
SSE モードでのテスト中にタイムアウトが発生する場合は、Inspector の画面でリクエスト URL を次のように変更してください:http://localhost:3001/sse?timeout=600000
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
