SM

stepanogil/mcp-sse-demo

Developer tools
37 stars 7 forks Quality 43 Trend 27

This repository demonstrates using the Model Context Protocol (MCP) with Server-Sent Events (SSE) to interact with a Zapier MCP server, enabling access to Gmail functionalities through an AI agent.

Overview

This repository demonstrates using the Model Context Protocol (MCP) with Server-Sent Events (SSE) to interact with a Zapier MCP server, enabling access to Gmail functionalities through an AI agent. It illustrates integrating a remotely hosted MCP server with your LLM of choice (i.e. not via the Claude desktop app or Cursor) Update: SSE is being deprecated in favor of Stremable HTTP. I've added an example using this via FastMCP. Notebook here The project uses an OpenAI model (gpt-4o-mini) to understand user requests, determine if a Gmail action (tool) is needed, and execute it via the Zapier MCP server. * mcp_clients/zapier_mcp_client.py: Contains the GmailMCPClient class responsible for connecting to the Zapier MCP server over SSE, listing available tools, and managing the connection. * chat.py: The chat application logic. It initializes the GmailMCPClient, connects to the Zapier server, retrieves tools, execute the tool call and pass the tool output to the LLM for synthesis. (i.

README

MCP SSE Demo

This repository demonstrates using the Model Context Protocol (MCP) with Server-Sent Events (SSE) to interact with a Zapier MCP server, enabling access to Gmail functionalities through an AI agent.

It illustrates integrating a remotely hosted MCP server with your LLM of choice (i.e. not via the Claude desktop app or Cursor)

Update: SSE is being deprecated in favor of Stremable HTTP. I’ve added an example using this via FastMCP. Notebook here

Overview

The project uses an OpenAI model (gpt-4o-mini) to understand user requests, determine if a Gmail action (tool) is needed, and execute it via the Zapier MCP server.

Key Files

  • mcp_clients/zapier_mcp_client.py: Contains the GmailMCPClient class responsible for connecting to the Zapier MCP server over SSE, listing available tools, and managing the connection.
  • chat.py: The chat application logic. It initializes the GmailMCPClient, connects to the Zapier server, retrieves tools, execute the tool call and pass the tool output to the LLM for synthesis. (i.e. the familiar function calling pattern)

Prerequisites

  • Python 3.8+
  • OpenAI API key
  • Zapier account with MCP access

Setup

  1. Clone the repository:

    git clone 
    cd 
    
  2. Create a virtual environment and install dependencies:

    python -m venv .venv
    source .venv/bin/activate
    pip install openai python-dotenv mcp nest_asyncio fastmcp
    
  3. Create a .env file:

    touch .env
    
  4. Add your credentials to the .env file:

    OPENAI_API_KEY="sk-proj-..."
    ZAPIER_URL="https://actions.zapier.com/mcp/YOUR_SECRET_KEY/sse"
    ZAPIER_URL_FASTMCP="https://mcp.zapier.com/api/mcp/s/your-secret-key/mcp"
    
    
  5. Enable the Zapier actions you want to call as tools

    via https://actions.zapier.com/settings/mcp/

    This demo uses Gmail: Find Email

Usage

The chat.py script provides an async chat(user_input) function. You can import and use this function in your own script or an interactive environment i.e. Jupyter notebook to interact with the chatbot.

Example in a Python script):

import asyncio
from chat import chat

async def main():
    user_query = "Check my latest email."
    response = await chat(user_query)
    print(response)

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

Example in Jupyter notebook

Example using the FastMCP framework (tool discovery and invocation)

View this README on GitHub

Install

This server does not publish a one-line install command.

Open the repository installation guide