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 theGmailMCPClientclass 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 theGmailMCPClient, 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
-
Clone the repository:
git clone cd -
Create a virtual environment and install dependencies:
python -m venv .venv source .venv/bin/activate pip install openai python-dotenv mcp nest_asyncio fastmcp -
Create a
.envfile:touch .env -
Add your credentials to the
.envfile: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" -
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)
Install
This server does not publish a one-line install command.
Open the repository installation guide