Sponsored by Deepsite.site

MCP Server with Datasaur Sandbox

Created By
ansemina year ago
Content

MCP Server with Datasaur Sandbox

A comprehensive guide for beginners to set up and use a Model Context Protocol (MCP) server with Datasaur Sandbox.

Table of Contents

Introduction

What is MCP?

Model Context Protocol (MCP) is a standardized way for applications to communicate with AI models. It defines a protocol that allows tools to exchange structured data with large language models (LLMs), enabling them to use external functions and tools.

What is a Datasaur Sandbox?

Datasaur Sandbox provides managed API access to various AI models. This project implements an MCP server that acts as a bridge between your applications and Datasaur's API endpoints, allowing your applications to:

  • Process and analyze data
  • Access AI models deployed through Datasaur
  • Build specialized assistants for various tasks

Prerequisites

Before you begin, ensure you have:

  1. Python 3.8+ installed on your system

    • Download from python.org
    • Make sure to check "Add Python to PATH" during installation
  2. A Datasaur account with API access

    • Sign up at datasaur.ai
    • Obtain your API key from your account dashboard
  3. Basic knowledge of command-line operations

Installation

Step 1: Clone or Create the Project

Create a new directory for your project:

mkdir datasaur-mcp-server
cd datasaur-mcp-server

Step 2: Set Up Your Environment

Create a virtual environment (recommended):

# For Windows
python -m venv venv
venv\Scripts\activate

# For macOS/Linux
python -m venv venv
source venv/bin/activate

Step 3: Install Dependencies

Create a requirements.txt file with the following content:

mcp[cli]
httpx
python-dotenv
uv

Install the dependencies:

pip install -r requirements.txt

OR using UV (for faster installation):

pip install uv
uv pip install -r requirements.txt

Step 4: Create Essential Files

1. Create .env file

Create a .env file in your project root to store your API keys and configurations:

DATASAUR_API_KEY=your_api_key_here
DATASAUR_SANDBOX_API_URL=your_sandbox_url

You can add more environment variables for additional sandbox models as needed.

2. Create utils.py

Create a utility file utils.py with helper functions:

# 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. Create main.py

Create the main MCP server file (main.py). This file will contain all the code needed to run your MCP server. You can copy the code from the sample provided or create a simplified version.

The full example is too long to include here, but should contain:

  • Environment loading
  • MCP server setup
  • Tool definitions for various Datasaur API endpoints
  • Main execution code

Configuration

Understanding the Configuration Files

.env File

The .env file contains sensitive information like API keys and service URLs. Never commit this file to public repositories.

Claude Desktop Configuration (for Claude users)

If you're using Claude Desktop, create a claude_desktop_config.json file:

{
  "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"
      }
    }
  }
}

Replace:

  • path\\to\\your\\python.exe with your Python executable path
  • path\\to\\your\\main.py with your main.py file path
  • your-api-key-here with your actual Datasaur API key
  • your-deployment-id and your-model-id with your actual deployment and model IDs from Datasaur

Getting Datasaur API URLs

  1. Log in to your Datasaur account
  2. Navigate to the Deployments section
  3. Create or select your deployment
  4. Note your deployment ID and model ID
  5. The API URL format is typically: https://deployment.datasaur.ai/api/deployment/{deployment_id}/{model_id}/chat/completions

Running Your MCP Server

Running Directly

To run your MCP server directly:

# Activate your virtual environment first if using one
python main.py

Running with Claude Desktop

If you're using Claude Desktop:

  1. Place your claude_desktop_config.json file in the Claude Desktop configuration directory
  2. Open Claude Desktop
  3. Your MCP server will be available to Claude as a tool

Using Your MCP Server

Your MCP server provides a bridge between your applications and Datasaur's AI models. Here are the types of tools you can implement:

  1. Data Processing Tools

    • Convert files between formats (e.g., CSV to JSON)
    • Process and analyze structured data
    • Send data to specialized AI models for analysis
  2. AI Model Access

    • Create functions that send prompts to any AI model you deploy in Datasaur
    • Each function can follow the same pattern, changing only the endpoint URL and any model-specific parameters
    • Examples: language models, code assistants, specialized domain experts
  3. Helper Tools

    • Create purpose-specific tools for common tasks
    • Examples: email drafting, report generation, domain-specific assistants

Example Tool Function Pattern

Here's the general pattern for creating a tool that accesses a Datasaur sandbox model:

@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}"

Example Usage in 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())

Troubleshooting

Common Issues and Solutions

  1. "API key not configured" error

    • Ensure your .env file includes the DATASAUR_API_KEY variable
    • Check that the API key is correctly copied from your Datasaur account
  2. "API URL not configured" error

    • Make sure all needed Datasaur API URLs are set in your .env file
    • Verify the URLs follow the correct format
  3. Connection errors

    • Check your internet connection
    • Verify your Datasaur account is active and has API access
  4. "Module not found" errors

    • Ensure you've installed all dependencies: pip install -r requirements.txt
    • Activate your virtual environment if you're using one
  5. Permission issues

    • Run your terminal or command prompt as administrator/with elevated permissions

Extending Functionality

Adding New Models

To add a new model to your MCP server:

  1. Add a new environment variable in your .env file:
DATASAUR_ANOTHER_MODEL_API_URL=your_another_model_url
  1. Add the environment variable to claude_desktop_config.json (if using Claude Desktop)

  2. Create a new function in main.py following the pattern shown in the "Example Tool Function Pattern" section above:

@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}"

Customizing Response Processing

To customize how responses are processed:

  1. Modify the response processing section of the relevant function
  2. You can parse JSON, extract specific fields, or format the response differently

Adding Authentication

For additional authentication:

  1. Add authentication credentials to your .env file
  2. Modify the headers in your API requests

Resources

License

This project is licensed under the MIT License - see the LICENSE file for details.


Created with ❤️ using Datasaur Sandbox

Recommend Servers
TraeBuild with Free GPT-4.1 & Claude 3.7. Fully MCP-Ready.
Visual Studio Code - Open Source ("Code - OSS")Visual Studio Code
AiimagemultistyleA Model Context Protocol (MCP) server for image generation and manipulation using fal.ai's Stable Diffusion model.
WindsurfThe new purpose-built IDE to harness magic
Y GuiA web-based graphical interface for AI chat interactions with support for multiple AI models and MCP (Model Context Protocol) servers.
Serper MCP ServerA Serper MCP Server
EdgeOne Pages MCPAn MCP service designed for deploying HTML content to EdgeOne Pages and obtaining an accessible public URL.
Zhipu Web SearchZhipu Web Search MCP Server is a search engine specifically designed for large models. It integrates four search engines, allowing users to flexibly compare and switch between them. Building upon the web crawling and ranking capabilities of traditional search engines, it enhances intent recognition capabilities, returning results more suitable for large model processing (such as webpage titles, URLs, summaries, site names, site icons, etc.). This helps AI applications achieve "dynamic knowledge acquisition" and "precise scenario adaptation" capabilities.
Tavily Mcp
Baidu Map百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
BlenderBlenderMCP connects Blender to Claude AI through the Model Context Protocol (MCP), allowing Claude to directly interact with and control Blender. This integration enables prompt assisted 3D modeling, scene creation, and manipulation.
CursorThe AI Code Editor
Jina AI MCP ToolsA Model Context Protocol (MCP) server that integrates with Jina AI Search Foundation APIs.
Playwright McpPlaywright MCP server
MCP AdvisorMCP Advisor & Installation - Use the right MCP server for your needs
RedisA Model Context Protocol server that provides access to Redis databases. This server enables LLMs to interact with Redis key-value stores through a set of standardized tools.
Amap Maps高德地图官方 MCP Server
Howtocook Mcp基于Anduin2017 / HowToCook (程序员在家做饭指南)的mcp server,帮你推荐菜谱、规划膳食,解决“今天吃什么“的世纪难题; Based on Anduin2017/HowToCook (Programmer's Guide to Cooking at Home), MCP Server helps you recommend recipes, plan meals, and solve the century old problem of "what to eat today"
DeepChatYour AI Partner on Desktop
MiniMax MCPOfficial MiniMax Model Context Protocol (MCP) server that enables interaction with powerful Text to Speech, image generation and video generation APIs.
ChatWiseThe second fastest AI chatbot™