Prerequisites

Before we begin, you’ll need:

Installation

First, install the required packages:

pip install together klavis

Setup Environment Variables

import os

# Set environment variables
os.environ["TOGETHER_API_KEY"] = "your-together-api-key-here"  # Replace with your actual Together API key
os.environ["KLAVIS_API_KEY"] = "your-klavis-api-key-here"      # Replace with your actual Klavis API key

Basic Setup

import os
import json
from together import Together
from klavis import Klavis
from klavis.types import McpServerName, ToolFormat

# Initialize clients
together_client = Together(api_key=os.getenv("TOGETHER_API_KEY"))
klavis_client = Klavis(api_key=os.getenv("KLAVIS_API_KEY"))

AI Agent with MCP Integration

Now we’ll create an intelligent agent that uses Together AI’s powerful LLMs with Klavis MCP servers. This agent will:

  1. Discover Tools: Automatically find available tools from MCP servers
  2. Function Calling: Use Together AI’s function calling capabilities
  3. Tool Execution: Execute tools through Klavis API
  4. Smart Responses: Generate intelligent responses based on tool results
class Agent:
    def __init__(self, together_client, klavis_client, mcp_server_url, model="meta-llama/Llama-3.3-70B-Instruct-Turbo"):
        self.together = together_client
        self.klavis = klavis_client
        self.mcp_server_url = mcp_server_url
        self.model = model
        print(f"🤖 Agent initialized with Together AI model: {self.model}")
    
    def process_request(self, user_message):
        # 1. Get available tools
        mcp_tools = self.klavis.mcp_server.list_tools(
            server_url=self.mcp_server_url,
    
            format=ToolFormat.OPENAI,
        )
        
        # 2. Call LLM with tools
        messages = [
            {"role": "system", "content": "You are a helpful AI assistant with access to various tools."},
            {"role": "user", "content": user_message}
        ]
        
        response = self.together.chat.completions.create(
            model=self.model,
            messages=messages,
            tools=mcp_tools.tools
        )
        
        assistant_message = response.choices[0].message
        messages.append(assistant_message)
        
        # 3. If LLM wants to use tools
        if assistant_message.tool_calls:
            
            # Execute each tool call
            for tool_call in assistant_message.tool_calls:
                tool_name = tool_call.function.name
                tool_args = json.loads(tool_call.function.arguments)
                
                print(f"🛠️ Calling tool: {tool_name} with args: {tool_args}")
                # Call tool via Klavis SDK
                tool_result = self.klavis.mcp_server.call_tools(
                    server_url=self.mcp_server_url,
                    tool_name=tool_name,
                    tool_args=tool_args,
                )
                
                messages.append({
                    "role": "tool",
                    "tool_call_id": tool_call.id,
                    "content": str(tool_result)
                })
            
            # 4. Get final response from LLM
            final_response = self.together.chat.completions.create(
                model=self.model,
                messages=messages
            )
            return final_response.choices[0].message.content
        
        # If no tools needed, return the assistant message directly
        return assistant_message.content

Use Case Examples

Example 1: Summarize YouTube Video

1

Initialize Clients

Set up Together AI and Klavis API clients

2

Create MCP Instance

Create a YouTube MCP server instance

3

Process Request

Use the agent to analyze and summarize a YouTube video

# Example YouTube video URL - replace with any video you'd like to analyze
YOUTUBE_VIDEO_URL = "https://www.youtube.com/watch?v=TG6QOa2JJJQ"

# 1. Create YouTube MCP server instance
youtube_mcp_instance = klavis_client.mcp_server.create_server_instance(
    server_name=McpServerName.YOUTUBE,
    user_id="1234",
    platform_name="Klavis",
)

# 2. Create an agent with YouTube MCP server
agent = Agent(
    together_client=together_client, 
    klavis_client=klavis_client, 
    mcp_server_url=youtube_mcp_instance.server_url,
    model="meta-llama/Llama-3.3-70B-Instruct-Turbo"
)

# 3. Process the request
response = agent.process_request(
    f"Please analyze this YouTube video and provide a comprehensive summary with timestamps: {YOUTUBE_VIDEO_URL}"
)

print(response)

Example 2: Send Email via Gmail

Gmail integration requires OAuth authentication, so you’ll need to authorize the application in your browser.

import webbrowser

# Create Gmail MCP server instance
gmail_mcp_instance = klavis_client.mcp_server.create_server_instance(
    server_name=McpServerName.GMAIL,
    user_id="1234",
    platform_name="Klavis",
)

# Redirect to Gmail OAuth page for authorization
webbrowser.open(gmail_mcp_instance.oauth_url)
print(f"🔐 Opening OAuth authorization for Gmail")
print(f"If you are not redirected automatically, please open this URL: {gmail_mcp_instance.oauth_url}")

# Email configuration
EMAIL_RECIPIENT = "recipient@example.com"  # Replace with the recipient's email
EMAIL_SUBJECT = "Greetings from Together AI + Klavis Integration"
EMAIL_BODY = "This is a test email sent using the Together AI and Klavis AI integration. The email was sent automatically by your AI agent!"

# After OAuth authorization is complete, create the Gmail agent
gmail_agent = Agent(
    together_client=together_client,
    klavis_client=klavis_client,
    mcp_server_url=gmail_mcp_instance.server_url,
    model="Qwen/Qwen2.5-72B-Instruct-Turbo"
)

# Send the email
response = gmail_agent.process_request(
    f"Please send an email to {EMAIL_RECIPIENT} with the subject '{EMAIL_SUBJECT}' and the following body: '{EMAIL_BODY}'"
)

print(response)

Next Steps

Explore More MCP Servers

Try other available servers like Slack, Notion, CRM etc.

Experiment with Different Models

Test various Together AI models for different use cases.

Build Multi-Server Workflows

Create sophisticated agents that combine multiple services

Production Deployment

Scale these patterns for production applications

Useful Resources

Happy building with Together AI and Klavis! 🚀