MCP Server with Datasaur Sandbox について
Datasaur Sandbox にデプロイした AI モデルへアプリケーションを接続する、MCP サーバーの設定ガイドと実装例です。モデル呼び出しツールの定義や拡張方法も示し、開発者が用途に応じた機能を構築できます。
主な機能
- 01Datasaur モデルエンドポイントへの接続
- 02API キーとサービス URL の設定
- 03モデル呼び出し用 MCP ツールの定義
- 04データ処理ツールの拡張
活用シーン
- 01MCP クライアントへの Datasaur モデル公開
- 02独自のデータ処理ツールの追加
- 03タスク別モデル関数の作成
MCP 対応
Datasaur API エンドポイントを利用するツールを公開する MCP サーバーを実装します。Claude Desktop の設定と Python クライアントからの接続方法も説明しています。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Datasaur Sandbox を使用する MCP サーバー
Datasaur Sandbox で Model Context Protocol(MCP)サーバーをセットアップして使用するための、初心者向け総合ガイドです。
目次
はじめに
MCP とは?
Model Context Protocol(MCP)は、アプリケーションが AI モデルと通信するための標準化された方法です。LLM(大規模言語モデル)が外部の関数やツールを利用できるように、ツールが構造化データを LLM と交換するためのプロトコルを定義します。
Datasaur Sandbox とは?
Datasaur Sandbox は、さまざまな AI モデルへのマネージド API アクセスを提供します。このプロジェクトでは、アプリケーションと Datasaur の API エンドポイントの橋渡しをする MCP サーバーを実装し、アプリケーションで次のことができるようにします。
- データを処理して分析する
- Datasaur を通じてデプロイされた AI モデルにアクセスする
- さまざまなタスクに特化したアシスタントを構築する
前提条件
始める前に、次のものがそろっていることを確認してください。
-
Python 3.8 以降がシステムにインストールされていること
- python.org からダウンロードしてください
- インストール時に「Add Python to PATH」にチェックを入れてください
-
API アクセスが有効な Datasaur アカウント
- datasaur.ai で登録してください
- アカウントダッシュボードから API キーを取得してください
-
コマンドライン操作の基本的な知識
インストール
ステップ 1:プロジェクトをクローンまたは作成する
プロジェクト用の新しいディレクトリを作成します。
mkdir datasaur-mcp-server
cd datasaur-mcp-server
ステップ 2:環境をセットアップする
仮想環境を作成します(推奨)。
# For Windows
python -m venv venv
venv\Scripts\activate
# For macOS/Linux
python -m venv venv
source venv/bin/activate
ステップ 3:依存関係をインストールする
次の内容で requirements.txt ファイルを作成します。
mcp[cli]
httpx
python-dotenv
uv
依存関係をインストールします。
pip install -r requirements.txt
または、UV を使用します(より高速にインストールできます)。
pip install uv
uv pip install -r requirements.txt
ステップ 4:必須ファイルを作成する
1. .env ファイルを作成する
プロジェクトのルートに .env ファイルを作成し、API キーと設定を保存します。
DATASAUR_API_KEY=your_api_key_here
DATASAUR_SANDBOX_API_URL=your_sandbox_url
必要に応じて、追加のサンドボックスモデル用の環境変数も追加できます。
2. utils.py を作成する
ヘルパー関数を含むユーティリティファイル utils.py を作成します。
# Utility functions for mcp-datasaur
import os
import logging
from dotenv import load_dotenv
load_dotenv()
def get_datasaur_api_config():
"""
Returns the Datasaur API URL and API key from environment variables.
"""
api_url = os.getenv("DATASAUR_API_URL")
api_key = os.getenv("DATASAUR_API_KEY")
if not api_url or not api_key:
logging.error("DATASAUR_API_URL or DATASAUR_API_KEY not set in .env")
return None, None
return api_url, api_key
3. main.py を作成する
メインの MCP サーバーファイル(main.py)を作成します。このファイルには、MCP サーバーの実行に必要なすべてのコードを記述します。提示されているサンプルのコードをコピーするか、簡略版を作成できます。
完全なサンプルは長すぎるため、ここには掲載できませんが、次の内容を含めてください。
- 環境変数の読み込み
- MCP サーバーのセットアップ
- さまざまな Datasaur API エンドポイント用のツール定義
- メインの実行コード
設定
設定ファイルについて
.env ファイル
.env ファイルには、API キーやサービス URL などの機密情報が含まれます。このファイルを公開リポジトリにコミットしないでください。
Claude Desktop の設定(Claude ユーザー向け)
Claude Desktop を使用している場合は、claude_desktop_config.json ファイルを作成します。
{
"mcpServers": {
"mcp-datasaur": {
"command": "path\\to\\your\\python.exe",
"args": ["path\\to\\your\\main.py"],
"env": {
"TRANSPORT": "stdio",
"DATASAUR_API_KEY": "your-api-key-here",
"DATASAUR_SANDBOX_API_URL": "https://deployment.datasaur.ai/api/deployment/your-deployment-id/your-model-id/chat/completions"
}
}
}
}
次の値を置き換えてください。
path\\to\\your\\python.exeを Python 実行ファイルのパスに置き換えますpath\\to\\your\\main.pyを main.py ファイルのパスに置き換えますyour-api-key-hereを実際の Datasaur API キーに置き換えますyour-deployment-idとyour-model-idを、Datasaur で取得した実際のデプロイ ID とモデル ID に置き換えます
Datasaur API URL の取得
- Datasaur アカウントにログインします
- Deployments セクションに移動します
- デプロイを作成するか、既存のデプロイを選択します
- デプロイ ID とモデル ID を確認します
- API URL の形式は通常、次のとおりです。
https://deployment.datasaur.ai/api/deployment/{deployment_id}/{model_id}/chat/completions
MCP サーバーの実行
直接実行する
MCP サーバーを直接実行するには、次のコマンドを使用します。
# Activate your virtual environment first if using one
python main.py
Claude Desktop での実行
Claude Desktop を使用している場合:
claude_desktop_config.jsonファイルを Claude Desktop の設定ディレクトリに配置します- Claude Desktop を開きます
- MCP サーバーがツールとして Claude で利用できるようになります
MCP サーバーの使用
MCP サーバーは、アプリケーションと Datasaur の AI モデルとの間をつなぐ役割を果たします。実装できるツールの種類は次のとおりです。
-
データ処理ツール
- ファイルを異なる形式に変換します(例:CSV から JSON)
- 構造化データを処理および分析します
- 分析のために、データを専門の AI モデルに送信します
-
AI モデルへのアクセス
- Datasaur でデプロイした任意の AI モデルにプロンプトを送信する関数を作成します
- 各関数は同じパターンに従い、エンドポイント URL とモデル固有のパラメーターのみを変更できます
- 例:言語モデル、コードアシスタント、特定分野の専門家
-
ヘルパーツール
- よく使うタスク向けの専用ツールを作成します
- 例:メールの下書き、レポートの生成、特定分野向けアシスタント
ツール関数のパターン例
Datasaur サンドボックスモデルにアクセスするツールを作成する一般的なパターンは次のとおりです。
@mcp.tool()
async def call_your_model(prompt: str) -> str:
"""
Sends a given prompt string to your deployed model via Datasaur API sandbox.
Args:
prompt: The text prompt to send to the model.
"""
logging.debug(f"Received prompt: {prompt[:100]}...")
# Check configuration
if not DATASAUR_SANDBOX_API_URL or not DATASAUR_API_KEY:
logging.error("DATASAUR_SANDBOX_API_URL or DATASAUR_API_KEY not configured.")
return "Error: Datasaur API configuration missing on server."
headers = {
'Authorization': f'Bearer {DATASAUR_API_KEY}',
'Content-Type': 'application/json'
}
payload = { "messages": [ {"role": "user", "content": prompt} ] }
try:
async with httpx.AsyncClient(timeout=180.0) as client:
response = await client.post(DATASAUR_SANDBOX_API_URL, headers=headers, json=payload)
response.raise_for_status()
response_json = response.json()
# Process response
if 'choices' in response_json and len(response_json['choices']) > 0:
if 'message' in response_json['choices'][0] and 'content' in response_json['choices'][0]['message']:
return str(response_json['choices'][0]['message']['content'])
return "Error: Unexpected response format"
except Exception as e:
logging.error(f"Error: {e}")
return f"Error: {e}"
Python での使用例
import asyncio
from mcp.client import MCPClient
async def main():
# Connect to your MCP server
client = MCPClient()
await client.connect_process(["python", "main.py"])
# Use your tool
result = await client.call_tool("call_your_model", {"prompt": "Your prompt here"})
print(result)
# Disconnect when done
await client.disconnect()
if __name__ == "__main__":
asyncio.run(main())
トラブルシューティング
よくある問題と解決策
-
「API key not configured」エラー
.envファイルにDATASAUR_API_KEY変数が含まれていることを確認します- Datasaur アカウントから API キーが正しくコピーされていることを確認します
-
「API URL not configured」エラー
- 必要な Datasaur API URL がすべて
.envファイルに設定されていることを確認します - URL の形式が正しいことを確認します
- 必要な Datasaur API URL がすべて
-
接続エラー
- インターネット接続を確認します
- Datasaur アカウントが有効で、API にアクセスできることを確認します
-
「Module not found」エラー
- すべての依存関係がインストールされていることを確認します:
pip install -r requirements.txt - 仮想環境を使用している場合は、有効化します
- すべての依存関係がインストールされていることを確認します:
-
権限の問題
- ターミナルまたはコマンドプロンプトを管理者として、または昇格した権限で実行します
機能の拡張
モデルの追加
MCP サーバーに新しいモデルを追加するには:
.envファイルに新しい環境変数を追加します:
DATASAUR_ANOTHER_MODEL_API_URL=your_another_model_url
-
(Claude Desktop を使用している場合は)環境変数を
claude_desktop_config.jsonに追加します -
上記の「ツール関数のパターン例」セクションに示されているパターンに従って、
main.pyに新しい関数を作成します:
@mcp.tool()
async def call_another_model(prompt: str) -> str:
"""
Documentation for your new model function.
"""
logging.debug(f"Received prompt: {prompt[:100]}...")
# Check configuration
if not DATASAUR_ANOTHER_MODEL_API_URL or not DATASAUR_API_KEY:
logging.error("DATASAUR_ANOTHER_MODEL_API_URL or DATASAUR_API_KEY not configured.")
return "Error: Configuration missing on server."
headers = {
'Authorization': f'Bearer {DATASAUR_API_KEY}',
'Content-Type': 'application/json'
}
payload = { "messages": [ {"role": "user", "content": prompt} ] }
try:
async with httpx.AsyncClient(timeout=180.0) as client:
response = await client.post(DATASAUR_ANOTHER_MODEL_API_URL, headers=headers, json=payload)
response.raise_for_status()
response_json = response.json()
# Process and return response
if 'choices' in response_json and response_json['choices']:
if 'message' in response_json['choices'][0] and 'content' in response_json['choices'][0]['message']:
return str(response_json['choices'][0]['message']['content'])
return "Error: Unexpected response format"
except Exception as e:
logging.error(f"Error: {e}")
return f"Error: {e}"
応答処理のカスタマイズ
応答の処理方法をカスタマイズするには:
- 該当する関数の応答処理部分を変更します
- JSON を解析したり、特定のフィールドを抽出したり、応答の形式を変更したりできます
認証の追加
認証を追加するには:
.envファイルに認証情報を追加します- API リクエストのヘッダーを変更します
リソース
ライセンス
このプロジェクトは MIT ライセンスの下でライセンスされています。詳細については LICENSE ファイルをご覧ください。
Datasaur Sandbox を使用して ❤️ を込めて作成
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。