mcpField
M
MCP Server with Datasaur Sandbox

MCP Server with Datasaur Sandbox

ローカル
github.com/anseminAI・エージェント077 週間前に更新

MCP Server with Datasaur Sandbox について

Datasaur Sandbox にデプロイした AI モデルへアプリケーションを接続する、MCP サーバーの設定ガイドと実装例です。モデル呼び出しツールの定義や拡張方法も示し、開発者が用途に応じた機能を構築できます。

主な機能

  1. 01Datasaur モデルエンドポイントへの接続
  2. 02API キーとサービス URL の設定
  3. 03モデル呼び出し用 MCP ツールの定義
  4. 04データ処理ツールの拡張

活用シーン

  1. 01MCP クライアントへの Datasaur モデル公開
  2. 02独自のデータ処理ツールの追加
  3. 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 モデルにアクセスする
  • さまざまなタスクに特化したアシスタントを構築する

前提条件

始める前に、次のものがそろっていることを確認してください。

  1. Python 3.8 以降がシステムにインストールされていること

    • python.org からダウンロードしてください
    • インストール時に「Add Python to PATH」にチェックを入れてください
  2. API アクセスが有効な Datasaur アカウント

    • datasaur.ai で登録してください
    • アカウントダッシュボードから API キーを取得してください
  3. コマンドライン操作の基本的な知識

インストール

ステップ 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 の取得
  1. Datasaur アカウントにログインします
  2. Deployments セクションに移動します
  3. デプロイを作成するか、既存のデプロイを選択します
  4. デプロイ ID とモデル ID を確認します
  5. 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 を使用している場合:

  1. claude_desktop_config.json ファイルを Claude Desktop の設定ディレクトリに配置します
  2. Claude Desktop を開きます
  3. MCP サーバーがツールとして Claude で利用できるようになります

MCP サーバーの使用

MCP サーバーは、アプリケーションと Datasaur の AI モデルとの間をつなぐ役割を果たします。実装できるツールの種類は次のとおりです。

  1. データ処理ツール

    • ファイルを異なる形式に変換します(例:CSV から JSON)
    • 構造化データを処理および分析します
    • 分析のために、データを専門の AI モデルに送信します
  2. AI モデルへのアクセス

    • Datasaur でデプロイした任意の AI モデルにプロンプトを送信する関数を作成します
    • 各関数は同じパターンに従い、エンドポイント URL とモデル固有のパラメーターのみを変更できます
    • 例:言語モデル、コードアシスタント、特定分野の専門家
  3. ヘルパーツール

    • よく使うタスク向けの専用ツールを作成します
    • 例:メールの下書き、レポートの生成、特定分野向けアシスタント
ツール関数のパターン例

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())

トラブルシューティング

よくある問題と解決策
  1. 「API key not configured」エラー

    • .env ファイルに DATASAUR_API_KEY 変数が含まれていることを確認します
    • Datasaur アカウントから API キーが正しくコピーされていることを確認します
  2. 「API URL not configured」エラー

    • 必要な Datasaur API URL がすべて .env ファイルに設定されていることを確認します
    • URL の形式が正しいことを確認します
  3. 接続エラー

    • インターネット接続を確認します
    • Datasaur アカウントが有効で、API にアクセスできることを確認します
  4. 「Module not found」エラー

    • すべての依存関係がインストールされていることを確認します:pip install -r requirements.txt
    • 仮想環境を使用している場合は、有効化します
  5. 権限の問題

    • ターミナルまたはコマンドプロンプトを管理者として、または昇格した権限で実行します

機能の拡張

モデルの追加

MCP サーバーに新しいモデルを追加するには:

  1. .env ファイルに新しい環境変数を追加します:
DATASAUR_ANOTHER_MODEL_API_URL=your_another_model_url
  1. (Claude Desktop を使用している場合は)環境変数を claude_desktop_config.json に追加します

  2. 上記の「ツール関数のパターン例」セクションに示されているパターンに従って、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}"
応答処理のカスタマイズ

応答の処理方法をカスタマイズするには:

  1. 該当する関数の応答処理部分を変更します
  2. JSON を解析したり、特定のフィールドを抽出したり、応答の形式を変更したりできます
認証の追加

認証を追加するには:

  1. .env ファイルに認証情報を追加します
  2. API リクエストのヘッダーを変更します

リソース

ライセンス

このプロジェクトは MIT ライセンスの下でライセンスされています。詳細については LICENSE ファイルをご覧ください。


Datasaur Sandbox を使用して ❤️ を込めて作成

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。