How to integrate Make MCP with Autogen

Connect Autogen to Make MCP. Get all available make operations, show supported languages for make automations, and more using natural language, with authentication handled for you.

Make logoMake
Api Key

Make is an automation platform that connects your favorite apps and services. Build powerful, custom workflows without writing code.

53 Tools

Introduction

This guide walks you through connecting Make to AutoGen using the Composio tool router. By the end, you'll have a working Make agent that can get all available make operations, show supported languages for make automations, list all timezones used in make through natural language commands.

This guide will help you understand how to give your AutoGen agent real control over a Make account through Composio's Make MCP server.

Before we dive in, let's take a quick look at the key ideas and tools involved.

Also integrate Make with

TL;DR

Here's what you'll learn:
  • Get and set up your OpenAI and Composio API keys
  • Install the required dependencies for Autogen and Composio
  • Initialize Composio and create a Tool Router session for Make
  • Wire that MCP URL into Autogen using McpWorkbench and StreamableHttpServerParams
  • Configure an Autogen AssistantAgent that can call Make tools
  • Run a live chat loop where you ask the agent to perform Make operations

What is AutoGen?

Autogen is a framework for building multi-agent conversational AI systems from Microsoft. It enables you to create agents that can collaborate, use tools, and maintain complex workflows.

Key features include:

  • Multi-Agent Systems: Build collaborative agent workflows
  • MCP Workbench: Native support for Model Context Protocol tools
  • Streaming HTTP: Connect to external services through streamable HTTP
  • AssistantAgent: Pre-built agent class for tool-using assistants

What is the Make MCP server, and what's possible with it?

The Make MCP server is an implementation of the Model Context Protocol that connects your AI agent and assistants like Claude, Cursor, etc directly to your Make account. It provides structured and secure access to your Make workspace, so your agent can retrieve available operations, list supported languages, and fetch timezone data on your behalf.

  • Discover available operations: Let your agent fetch all possible workflow operations, making it easy to automate tasks and explore integration options.
  • Populate language selectors: Effortlessly retrieve a comprehensive list of supported language codes and names to use in multilingual workflows or app settings.
  • Fetch timezone information: Instantly obtain a list of supported timezone codes and names for accurate scheduling and automation across regions.
  • Seamless workflow setup: Enable your agent to gather essential configuration data before creating or customizing automations in Make.

What is the Composio tool router, and how does it fit here?

What is Composio SDK?

Composio's Composio SDK helps agents find the right tools for a task at runtime. You can plug in multiple toolkits (like Gmail, HubSpot, and GitHub), and the agent will identify the relevant app and action to complete multi-step workflows. This can reduce token usage and improve the reliability of tool calls. Read more here: Getting started with Composio SDK

The tool router generates a secure MCP URL that your agents can access to perform actions.

How the Composio SDK works

The Composio SDK follows a three-phase workflow:

  1. Discovery: Searches for tools matching your task and returns relevant toolkits with their details.
  2. Authentication: Checks for active connections. If missing, creates an auth config and returns a connection URL via Auth Link.
  3. Execution: Executes the action using the authenticated connection.

Step-by-step Guide

Step by step08 STEPS
1

Prerequisites

You will need:

  • A Composio API key
  • An OpenAI API key (used by Autogen's OpenAIChatCompletionClient)
  • A Make account you can connect to Composio
  • Some basic familiarity with Autogen and Python async
2

Getting API Keys for OpenAI and Composio

OpenAI API Key
  • Go to the OpenAI dashboard and create an API key. You'll need credits to use the models, or you can connect to another model provider.
  • Keep the API key safe.
Composio API Key
  • Log in to the Composio dashboard.
  • Navigate to your API settings and generate a new API key.
  • Store this key securely as you'll need it for authentication.
3

Install dependencies

bash
pip install composio python-dotenv
pip install autogen-agentchat autogen-ext-openai autogen-ext-tools

Install Composio, Autogen extensions, and dotenv.

What's happening:

  • composio connects your agent to Make via MCP
  • autogen-agentchat provides the AssistantAgent class
  • autogen-ext-openai provides the OpenAI model client
  • autogen-ext-tools provides MCP workbench support

4

Set up environment variables

bash
COMPOSIO_API_KEY=your-composio-api-key
OPENAI_API_KEY=your-openai-api-key
USER_ID=your-user-identifier@example.com

Create a .env file in your project folder.

What's happening:

  • COMPOSIO_API_KEY is required to talk to Composio
  • OPENAI_API_KEY is used by Autogen's OpenAI client
  • USER_ID is how Composio identifies which user's Make connections to use
5

Import dependencies and create Tool Router session

python
import asyncio
import os
from dotenv import load_dotenv
from composio import Composio

from autogen_agentchat.agents import AssistantAgent
from autogen_ext.models.openai import OpenAIChatCompletionClient
from autogen_ext.tools.mcp import McpWorkbench, StreamableHttpServerParams

load_dotenv()

async def main():
    # Initialize Composio and create a Make session
    composio = Composio(api_key=os.getenv("COMPOSIO_API_KEY"))
    session = composio.create(
        user_id=os.getenv("USER_ID"),
        toolkits=["make"]
    )
    url = session.mcp.url
What's happening:
  • load_dotenv() reads your .env file
  • Composio(api_key=...) initializes the SDK
  • create(...) creates a Tool Router session that exposes Make tools
  • session.mcp.url is the MCP endpoint that Autogen will connect to
6

Configure MCP parameters for Autogen

python
# Configure MCP server parameters for Streamable HTTP
server_params = StreamableHttpServerParams(
    url=url,
    timeout=30.0,
    sse_read_timeout=300.0,
    terminate_on_close=True,
    headers={"x-api-key": os.getenv("COMPOSIO_API_KEY")}
)

Autogen expects parameters describing how to talk to the MCP server. That is what StreamableHttpServerParams is for.

What's happening:

  • url points to the Tool Router MCP endpoint from Composio
  • timeout is the HTTP timeout for requests
  • sse_read_timeout controls how long to wait when streaming responses
  • terminate_on_close=True cleans up the MCP server process when the workbench is closed
7

Create the model client and agent

python
# Create model client
model_client = OpenAIChatCompletionClient(
    model="gpt-5",
    api_key=os.getenv("OPENAI_API_KEY")
)

# Use McpWorkbench as context manager
async with McpWorkbench(server_params) as workbench:
    # Create Make assistant agent with MCP tools
    agent = AssistantAgent(
        name="make_assistant",
        description="An AI assistant that helps with Make operations.",
        model_client=model_client,
        workbench=workbench,
        model_client_stream=True,
        max_tool_iterations=10
    )

What's happening:

  • OpenAIChatCompletionClient wraps the OpenAI model for Autogen
  • McpWorkbench connects the agent to the MCP tools
  • AssistantAgent is configured with the Make tools from the workbench
8

Run the interactive chat loop

python
print("Chat started! Type 'exit' or 'quit' to end the conversation.\n")
print("Ask any Make related question or task to the agent.\n")

# Conversation loop
while True:
    user_input = input("You: ").strip()

    if user_input.lower() in ["exit", "quit", "bye"]:
        print("\nGoodbye!")
        break

    if not user_input:
        continue

    print("\nAgent is thinking...\n")

    # Run the agent with streaming
    try:
        response_text = ""
        async for message in agent.run_stream(task=user_input):
            if hasattr(message, "content") and message.content:
                response_text = message.content

        # Print the final response
        if response_text:
            print(f"Agent: {response_text}\n")
        else:
            print("Agent: I encountered an issue processing your request.\n")

    except Exception as e:
        print(f"Agent: Sorry, I encountered an error: {str(e)}\n")
What's happening:
  • The script prompts you in a loop with You:
  • Autogen passes your input to the model, which decides which Make tools to call via MCP
  • agent.run_stream(...) yields streaming messages as the agent thinks and calls tools
  • Typing exit, quit, or bye ends the loop

Complete Code

Here's the complete code to get you started with Make and AutoGen:

python
import asyncio
import os
from dotenv import load_dotenv
from composio import Composio

from autogen_agentchat.agents import AssistantAgent
from autogen_ext.models.openai import OpenAIChatCompletionClient
from autogen_ext.tools.mcp import McpWorkbench, StreamableHttpServerParams

load_dotenv()

async def main():
    # Initialize Composio and create a Make session
    composio = Composio(api_key=os.getenv("COMPOSIO_API_KEY"))
    session = composio.create(
        user_id=os.getenv("USER_ID"),
        toolkits=["make"]
    )
    url = session.mcp.url

    # Configure MCP server parameters for Streamable HTTP
    server_params = StreamableHttpServerParams(
        url=url,
        timeout=30.0,
        sse_read_timeout=300.0,
        terminate_on_close=True,
        headers={"x-api-key": os.getenv("COMPOSIO_API_KEY")}
    )

    # Create model client
    model_client = OpenAIChatCompletionClient(
        model="gpt-5",
        api_key=os.getenv("OPENAI_API_KEY")
    )

    # Use McpWorkbench as context manager
    async with McpWorkbench(server_params) as workbench:
        # Create Make assistant agent with MCP tools
        agent = AssistantAgent(
            name="make_assistant",
            description="An AI assistant that helps with Make operations.",
            model_client=model_client,
            workbench=workbench,
            model_client_stream=True,
            max_tool_iterations=10
        )

        print("Chat started! Type 'exit' or 'quit' to end the conversation.\n")
        print("Ask any Make related question or task to the agent.\n")

        # Conversation loop
        while True:
            user_input = input("You: ").strip()

            if user_input.lower() in ['exit', 'quit', 'bye']:
                print("\nGoodbye!")
                break

            if not user_input:
                continue

            print("\nAgent is thinking...\n")

            # Run the agent with streaming
            try:
                response_text = ""
                async for message in agent.run_stream(task=user_input):
                    if hasattr(message, 'content') and message.content:
                        response_text = message.content

                # Print the final response
                if response_text:
                    print(f"Agent: {response_text}\n")
                else:
                    print("Agent: I encountered an issue processing your request.\n")

            except Exception as e:
                print(f"Agent: Sorry, I encountered an error: {str(e)}\n")

if __name__ == "__main__":
    asyncio.run(main())

Conclusion

You now have an Autogen assistant wired into Make through Composio's Tool Router and MCP. From here you can:
  • Add more toolkits to the toolkits list, for example notion or hubspot
  • Refine the agent description to point it at specific workflows
  • Wrap this script behind a UI, Slack bot, or internal tool
Once the pattern is clear for Make, you can reuse the same structure for other MCP-enabled apps with minimal code changes.
TOOLS

Supported Tools

Every Make action and event your agent gets out of the box.

Activate Scenario

Activate a Make scenario; a regularly scheduled scenario may run immediately, executing its configured automation and external effects.

Create Hook

Create a hook without exposing its bearer-like URL, UDID, or relay data.

Create Organization

Tool to create a new organization in Make.

Create Scenario

Create a Make scenario from JSON-encoded blueprint and scheduling data.

Create Password Reset Demand

Tool to create a password reset demand for a user by their email address.

Deactivate Scenario

Deactivate a Make scenario and stop it if it is currently running.

Delete Scenario

Move a Make scenario to trash, where it can be restored for 30 days.

Get Cashier Prices

Tool to retrieve a specific cashier price by its identifier.

Get Cashier Products

Tool to retrieve available cashier products from Make.

Get Connection

Retrieve one Make connection by ID.

Get Current Authorization

Tool to retrieve current authorization details for the authenticated user.

Get Enums Apps Review Statuses

Tool to retrieve available app review statuses in Make.

Get Enums IMT Regions

Tool to retrieve the list of Make regions and their regionId values.

Get Enums IMT Zones

Tool to retrieve available IMT zones in Make.

Get Enums LLM Models

Tool to retrieve available Large Language Models from Make.

Get Enums Module Types

Tool to retrieve available module types in Make.

Get Enums Organization Features

Tool to retrieve available organization features in Make.

Get Enums User API Token Scopes

Tool to retrieve all available API token scopes in Make.

Get Enums User Email Notifications

Tool to retrieve available email notification types for Make users.

Get Enums User Features

Retrieve the list of all existing user features and their descriptions.

Get Enums Variable Types

Tool to retrieve available variable types in Make.

Get Hook

Retrieve a hook without exposing its bearer-like URL, UDID, or relay data.

Get Hook Incoming Activity

Get hook queue statistics or safe metadata for one incoming event; payload values are not returned.

Get Hook Log

Retrieve safe status and timing diagnostics for one Make webhook execution log.

Get Operations

Retrieve daily operations usage for an organization over the past 30 days.

Get Organization

Retrieve detailed information about one Make organization by ID.

Get Public Template Blueprint

Retrieve the complete blueprint for a public approved Make template.

Get Scenario

Retrieve one Make scenario by ID with optional selected columns.

Get Scenario Blueprint

Retrieve a sanitized current, draft, or historical scenario blueprint; credential-bearing URL, auth, header, query, password, secret, and token fields are omitted.

Get Scenario Execution

Retrieve the status, outputs, pause metadata, or error for one execution.

Get Scenario Interface

Retrieve a Make scenario's declared input and output interface.

Get Scenario Logs

List scenario logs, list one module's operation logs, or retrieve one execution log according to the identifiers supplied.

Get Scenario Trigger

Retrieve safe trigger details without exposing its URL or UDID.

Get Team

Retrieve detailed information about a specific team by its ID.

Get Current User

Tool to retrieve information about the current authenticated user.

List Connections

List the connections belonging to a Make team.

List Enums Countries

Retrieve all supported countries in Make.

List Enums Languages

Tool to retrieve a list of language codes and names.

List Enums LLM Builtin Tiers

Retrieve all predefined LLM tiers (small, medium, large) with their associated models, providers, and pricing coefficients.

List Enums Locales

Retrieve all supported locales in Make.

List Enums Timezones

Retrieve all supported timezones in Make.

List Hook Logs

List safe summary metadata for a Make webhook's retained execution logs.

List Incomplete Executions

List failed or unfinished executions for a Make scenario.

List Organizations

Tool to list organizations the authenticated user belongs to (including organizationId, name, and timezoneId).

List Public Templates

Browse public approved Make templates with filters and offset pagination.

List Scenarios

List scenarios belonging to a Make team with offset pagination.

List Teams

Tool to list all teams within an organization.

Ping API

Tool to ping the Make API to verify connectivity and service availability.

Run Scenario

Run an already active Make scenario, executing its configured automation and external effects.

Set SDK Connection API

Replace the complete API definition for a Make SDK app connection.

Update Scenario

Partially update a Make scenario, leaving omitted properties unchanged; optionally authorize installation of an app newly used by the organization.

Update Scenario Interface

Replace an on-demand scenario's input specification; requires Make Pro+.

Verify Connection

Test whether a Make connection's saved credentials can reach its provider.

FAQ

Frequently asked questions

With a standalone Make MCP server, the agents and LLMs can only access a fixed set of Make tools tied to that server. However, with the Composio Tool Router, agents can dynamically load tools from Make and many other apps based on the task at hand, all through a single MCP endpoint.

Yes, you can. Autogen fully supports MCP integration. You get structured tool calling, message history handling, and model orchestration while Tool Router takes care of discovering and serving the right Make tools.

Yes, absolutely. You can configure which Make scopes and actions are allowed when connecting your account to Composio. You can also bring your own OAuth credentials or API configuration so you keep full control over what the agent can do.

All sensitive data such as tokens, keys, and configuration is fully encrypted at rest and in transit. Composio is SOC 2 Type 2 compliant and follows strict security practices so your Make data and credentials are handled as safely as possible.

Start with Make.It takes 30 seconds.

Managed auth, hosted MCP servers, and every Make tool your agent needs.Free to start.

Start building