Pular para o conteúdo principal

Guia do servidor Gradio MCP: construa, teste, faça deploy e integre

Um tutorial passo a passo sobre como criar, testar, fazer deploy e integrar um servidor MCP do Gradio com Tavily, Hugging Face Spaces, Cursor AI e Claude Desktop.
Atualizado 17 de set. de 2026  · 7 min lido

Explorar com IA

ChatGPTClaudePerplexity

O Model Context Protocol (MCP) é um padrão aberto para conectar modelos de IA a ferramentas, APIs e fontes de dados externas. Ele fornece uma forma padronizada para grandes modelos de linguagem (LLMs) interagirem com sistemas externos. 

À medida que o mundo avança para fluxos de trabalho agentic, em que sistemas de IA atuam como agentes autônomos, aprender MCP se torna cada vez mais importante. O ecossistema do Gradio oferece a forma mais simples e eficiente de criar servidores MCP, permitindo que desenvolvedores construam ferramentas de IA poderosas com o mínimo de esforço.

Neste tutorial, vamos:

  1. Configurar um servidor Gradio MCP simples localmente e testá-lo.
  2. Criar um servidor MCP pronto para produção com várias ferramentas.
  3. Fazer deploy no Hugging Face Spaces.
  4. Testá-lo com Cursor AI e Claude Desktop.

Se você quer colocar a mão na massa com Designing Agentic Systems with LangChain, vale conferir nosso curso. 

primeiros passos com o Gradio MCP

A versão mais recente do Gradio (5.32.0) agora oferece suporte nativo ao MCP, tornando incrivelmente fácil criar e executar servidores MCP. Tudo o que você precisa fazer é ativar o suporte a MCP por um argumento simples no código ou por variável de ambiente. 

Servidores MCP no Gradio usam o protocolo Server-Sent Events (SSE), que fornece comunicação em tempo real, unidirecional, do servidor para o cliente — perfeito para transmitir respostas de LLMs.

1. Instale a versão mais recente do Gradio com suporte a MCP.

pip install -U "gradio[mcp]"

2. Crie um app Gradio que receba o nome de uma cidade como entrada e retorne dados de clima (neste caso, dados simulados). É um ótimo ponto de partida, especialmente se você já conhece o framework Gradio.

import gradio as gr


def check_weather(city):
    """
    Simple weather checker function (mock data for demonstration).

    Args:
        city (str): The city name to check weather for

    Returns:
        str: Weather information for the city
    """
    # Mock weather data for demonstration
    weather_data = {
        "london": "Cloudy, 15°C",
        "paris": "Sunny, 22°C",
        "tokyo": "Rainy, 18°C",
        "new york": "Partly cloudy, 20°C",
        "sydney": "Sunny, 25°C",
    }

    city_lower = city.lower().strip()

    if city_lower in weather_data:
        return f"Weather in {city.title()}: {weather_data[city_lower]}"
    else:
        return f"Weather data not available for {city}. Try: London, Paris, Tokyo, New York, or Sydney"


demo = gr.Interface(
    fn=check_weather,
    inputs=[gr.Textbox("London", label="Enter city name")],
    outputs=[gr.Textbox(label="Weather Info")],
    title="Simple Weather Checker",
    description="Enter a city name to check the weather (demo with mock data).",
)

if __name__ == "__main__":
    demo.launch(mcp_server=True)

3. Existem duas formas de ativar o suporte a MCP no Gradio:

  • Usando o argumento mcp_server: demo.launch(mcp_server=True)
  • Usando uma variável de ambiente: export GRADIO_MCP_SERVER=True

4. Salve o arquivo Python test.py e execute-o. 

$ python test.py                                            
* Running on local URL:  http://127.0.0.1:7860
* To create a public link, set `share=True` in `launch()`.

🔨 MCP server (using SSE) running at: http://127.0.0.1:7860/gradio_api/mcp/sse

Você verá dois URLs no output do terminal:

  • URL do app: http://127.0.0.1:7860 (abre o app Gradio no seu navegador).
  • URL do servidor MCP: http://127.0.0.1:7860/gradio_api/mcp/sse (usado por clientes compatíveis com MCP).

5. Abra o URL do app (http://127.0.0.1:7860) no navegador. Digite o nome de uma cidade (por exemplo, Tokyo) e confira o clima.

Testando o app Gradio localmente

6. No rodapé do app, clique no botão "Use via API or MCP". Isso exibirá informações extras sobre a API do seu app e o servidor MCP.

Documentação do app Gradio com informações de MCP.

7. Para testar o servidor MCP com o Cursor AI, abra as configurações do Cursor, vá até a aba “MCP” e clique em “+ Add new global MCP server”.

Configurações de MCP no Cursor

8. Adicione a seguinte configuração JSON ao arquivo de configurações do MCP:

{
  "mcpServers": {
    "gradio": {
      "url": "http://127.0.0.1:7860/gradio_api/mcp/sse"
    }
  }
}

9. Salve o arquivo. Agora você verá um servidor MCP ativo chamado gradio com a ferramenta check_weather.

Servidor MCP no Cursor

Para testar este servidor MCP, vamos criar um novo chat no modo agent do Cursor usando (CTRL + T) e perguntar sobre o clima em Tokyo. O Cursor pedirá permissão para executar a ferramenta MCP. Aprove.

Testando o servidor MCP no modo agent do Cursor

Como resultado, o servidor MCP buscará os dados de clima e retornará o resultado:

Testando o servidor MCP no modo agent do Cursor

construindo um servidor MCP com múltiplas ferramentas no Gradio

Vamos criar algo prático e pronto para produção. Neste projeto, construiremos um servidor MCP com múltiplas ferramentas usando Gradio

O servidor terá duas ferramentas:

  1. Ferramenta de clima ao vivo: busca dados de clima em tempo real usando a API do Tavily.
  2. Ferramenta de notícias da cidade: recupera as 5 manchetes mais recentes sobre uma cidade usando a API do Tavily.

Esse servidor ajuda usuários a planejarem viagens, reunindo atualizações do clima e notícias relevantes. 

Vamos configurar o servidor MCP, testá-lo localmente, fazer deploy no Hugging Face Spaces e testar o servidor publicado usando Cursor AI e Claude Desktop.

1. configuração

Precisamos criar um novo Space acessando https://huggingface.co/new-space, adicionando o nome do app, uma breve descrição e selecionando Gradio como template.

Criando o novo Hugging Face Space

Fonte: new-space

Depois de criado, você será redirecionado para o seu novo Space. Siga as instruções para configurá-lo.

Clone o repositório para o diretório local do seu projeto

git clone https://huggingface.co/spaces/kingabzpro/live-city-mcp

Para este projeto, usaremos a API do Tavily para busca na web. Crie uma conta no Tavily AI e gere uma chave de API.

Gerando a chave da API do Tavily

Fonte: Tavily AI

Em seguida, salve a chave de API como variável de ambiente no seu sistema local

TAVILY_API_KEY="API-KEY"

Depois, instale o SDK Python do Tavily

pip install tavily-python

2. criando o servidor MCP

Este servidor MCP tem duas ferramentas, ambas usando a API do Tavily para acessar as informações mais recentes da web. A primeira recebe o nome de uma cidade e gera um relatório detalhado do clima; a segunda recebe a cidade e lista as manchetes das cinco principais notícias da região. Criamos uma interface gráfica para cada ferramenta e depois as combinamos usando uma interface com abas (Tabbed Interface).

app.py:

import gradio as gr
from tavily import TavilyClient


def get_city_weather_info(city_name):
    """
    Search for current weather information about a city using Tavily search API

    Args:
        city_name (str): Name of the city
        api_key (str): Your Tavily API key

    Returns:
        dict: Search results containing weather information
    """
    # Initialize Tavily client
    client = TavilyClient()

    # Search for current weather information
    search_query = f"current weather in {city_name} temperature humidity conditions"

    try:
        # Perform the search
        response = client.search(
            query=search_query, search_depth="basic", max_results=5
        )

        # Extract relevant information from search results
        weather_info = {"city": city_name, "search_query": search_query, "results": []}

        # Process each search result
        for result in response.get("results", []):
            weather_info["results"].append(
                {
                    "title": result.get("title", ""),
                    "content": result.get("content", ""),
                    "url": result.get("url", ""),
                }
            )

        # Add the answer if available
        if "answer" in response:
            weather_info["summary"] = response["answer"]

        return weather_info

    except Exception as e:
        return {
            "city": city_name,
            "error": f"Failed to fetch weather information: {str(e)}",
        }


def get_city_news(city_name):
    """
    Fetches the top 5 news articles for a given city using the Tavily API.

    Args:
        city_name (str): Name of the city

    Returns:
        dict: News results containing the top 5 articles or an error message
    """
    # Initialize Tavily client
    client = TavilyClient()

    # Search query for news about the city
    search_query = f"Top 5 latest news articles about {city_name}, including major events, politics, economy, and local updates."

    try:
        # Perform the search
        response = client.search(
            query=search_query,
            search_depth="advanced",
            max_results=5,
        )

        # Extract relevant information from search results
        news_info = {"city": city_name, "search_query": search_query, "articles": []}

        # Process each search result
        for result in response.get("results", []):
            news_info["articles"].append(
                {
                    "title": result.get("title", ""),
                    "content": result.get("content", ""),
                    "url": result.get("url", ""),
                }
            )

        # Add the answer if available
        if "answer" in response:
            news_info["summary"] = response["answer"]

        return news_info

    except Exception as e:
        return {"city": city_name, "error": f"Failed to fetch news: {str(e)}"}


# Create Gradio interfaces
weather_demo = gr.Interface(
    fn=get_city_weather_info,
    inputs=gr.Textbox(label="Enter City Name", placeholder="e.g., New York"),
    outputs=gr.JSON(label="Weather Information"),
    description="Get current weather details for a city.",
)

news_demo = gr.Interface(
    fn=get_city_news,
    inputs=gr.Textbox(label="Enter City Name", placeholder="e.g., London"),
    outputs=gr.JSON(label="News Articles"),
    description="Get the latest news articles for a city.",
)

# Create tabbed interface
demo = gr.TabbedInterface(
    [weather_demo, news_demo], ["Weather", "News"], title="City Information Hub"
)

if __name__ == "__main__":
    # Launch without MCP server to avoid initialization issues
    demo.launch(share=False, mcp_server=True, debug=True)

3. testando o servidor MCP localmente

Antes de fazer o deploy do servidor MCP, é essencial testá-lo localmente. Inicie o servidor executando o comando abaixo no terminal: 

python app.py

Saída:

* Running on local URL:  http://127.0.0.1:7860
* To create a public link, set `share=True` in `launch()`.

🔨 MCP server (using SSE) running at: http://127.0.0.1:7860/gradio_api/mcp/sse

Abra o navegador e acesse http://127.0.0.1:7860 e digite o nome de uma cidade no campo de entrada. O servidor retornará informações detalhadas de clima em formato JSON.

Testando o app Gradio localmente.

O aplicativo deve funcionar sem problemas, trazendo dados de clima e notícias precisos para a cidade informada.

4. fazendo deploy do servidor MCP no Hugging Face Spaces

Para fazer o deploy do servidor, siga estes passos:

1. Crie o arquivo requirements.txt e adicione a seguinte dependência:

tavily-python==0.7.3

2. Faça o commit das alterações e depois envie para o Hugging Face Space.

git add .                                                                                                
live-city-mcp  git commit -m "weather and news MCP"                                                                     
git push  

Assim que você fizer o push, o Hugging Face Space começará a buildar. 

Enviando as mudanças para o Hugging Face Spaces.

Fonte: Live City Mcp

Depois de cerca de um minuto, o servidor MCP estará no ar e acessível em Live City Mcp.

App City Information Hub no Hugging Face Spaces

Fonte: Live City Mcp

3. Antes de usá-lo como servidor MCP, precisamos definir a variável de ambiente com o token de acesso do Tavily. Para isso, vá em configurações do Space, role a página e clique em "New Secret". Depois, adicione a chave de API e o nome da API do Tavily.

Definindo a variável de ambiente no Hugging Face Space

Fonte: live-city-mcp/settings

5. testando o servidor MCP publicado com o Cursor AI

Nosso MCP está publicado e funcionando direitinho. Agora, vamos configurar o cliente MCP. Primeiro, vamos ajustar o Cursor AI. Vá até as configurações do Cursor, clique na aba MCP e depois no botão "+Add new global MCP server". Insira o código abaixo:

{
  "mcpServers": {
    "weather-news": {
      "url": "https://kingabzpro-live-city-mcp.hf.space/gradio_api/mcp/sse"
    }
  }
}

Você verá que o weather-news está rodando bem com duas ferramentas. Vamos perguntar sobre o clima em Islamabad. 

Como dá para ver, a resposta veio rápida e precisa.

Testando o servidor MCP publicado com o Cursor AI

Podemos validar conferindo online e checando o clima no AccuWeather. 

Fonte: AccuWeather

Agora, vamos testar a segunda ferramenta perguntando sobre as notícias de Islamabad.

Como resultado, recebemos uma lista com quatro manchetes sobre o Paquistão. Se a API do Tavily não encontrar nada muito recente sobre Islamabad, ela muda para notícias em nível de país.

Testando o servidor MCP publicado com o Cursor AI

6. testando o servidor MCP publicado com o Claude Desktop

Vamos configurar o Claude Desktop acessando as configurações, clicando em “Developer” e depois em “Edit Config”. Isso abrirá a pasta onde você precisa editar o arquivo claude_desktop_config.json.

Definindo as configs do servidor MCP publicado no Claude Desktop

O Claude Desktop atualmente não oferece suporte a servidores MCP baseados em SSE. Nesses casos, você pode usar a ferramenta mcp-remote

Para executar o mcp-remote, primeiro instale o Node.js acessando a página Download Node.js®. Depois, adicione o código abaixo ao seu arquivo claude_desktop_config.json:

 "Live City MCP": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://kingabzpro-live-city-mcp.hf.space/gradio_api/mcp/sse",
        "--transport",
        "sse-only"
      ]
    }

Veja um exemplo de como adicionar a configuração do servidor MCP.

Depois disso, feche o aplicativo Claude Desktop e abra novamente. Você verá acesso ao novo servidor MCP “Live City MCP”, com duas ferramentas disponíveis.

Testando o servidor MCP publicado com o Claude Desktop

Estou viajando para a Irlanda em breve, então perguntei sobre o clima em Dublin e recebi resultados muito bons.

Testando o servidor MCP publicado com o Claude Desktop

A melhor forma de acessar o servidor MCP é pelo Claude Desktop. Ele é interativo e oferece recursos extras para uso de ferramentas e exibição clara das informações.

conclusão

Se você já tem experiência criando aplicações Gradio para projetos de machine learning, transformar seu app em um servidor MCP nunca foi tão fácil. Com um único argumento (mcp_server=True), seu app Gradio também passa a funcionar como servidor MCP, permitindo integração fluida com ferramentas como Cursor AI e Claude Desktop. Isso abre possibilidades interessantes para conectar suas aplicações de IA a sistemas e fluxos de trabalho externos.

Neste tutorial prático, exploramos o básico do Gradio MCP, aprendemos a criar e testar um servidor MCP e trabalhamos em um projeto útil usando a API do Tavily para buscar clima ao vivo e notícias da cidade. No final, fizemos o deploy no Hugging Face Spaces e testamos com clientes populares compatíveis com MCP.

Se você quer se aprofundar em IA agentic e outros conceitos que abordamos aqui, recomendo os recursos abaixo: 


Abid Ali Awan's photo
Author
Abid Ali Awan
LinkedIn
Twitter

Sou um cientista de dados certificado que gosta de criar aplicativos de aprendizado de máquina e escrever blogs sobre ciência de dados. No momento, estou me concentrando na criação e edição de conteúdo e no trabalho com modelos de linguagem de grande porte.

Tópicos
Inteligência Artificial
Modelos de idiomas grandes

Principais cursos da DataCamp

Curso

Desenvolvimento de aplicativos de LLM com LangChain

3 h
50.6K
Descubra como criar aplicativos com tecnologia de IA usando LLMs, prompts, cadeias e agentes no LangChain.
Ver detalhesRight Arrow
Iniciar Curso
Ver maisRight Arrow
Relacionado

blog

10 dos melhores plug-ins do ChatGPT para você obter o máximo da IA em 2024

Desbloqueie todo o potencial do ChatGPT com nosso guia especializado sobre os 10 principais plug-ins para 2023. Aumente a produtividade, simplifique os fluxos de trabalho e descubra novas funcionalidades para elevar sua experiência com o ChatGPT.
Matt Crabtree's photo

Matt Crabtree

12 min

Tutorial

Guia para iniciantes no uso da API do ChatGPT

Este guia o orienta sobre os conceitos básicos da API ChatGPT, demonstrando seu potencial no processamento de linguagem natural e na comunicação orientada por IA.
Moez Ali's photo

Moez Ali

11 min

Tutorial

Guia de torchchat do PyTorch: Configuração local com Python

Saiba como configurar o torchchat do PyTorch localmente com Python neste tutorial prático, que fornece orientação e exemplos passo a passo.

Tutorial

Um guia para iniciantes na engenharia de prompts do ChatGPT

Descubra como fazer com que o ChatGPT forneça os resultados que você deseja, fornecendo a ele as entradas necessárias.
Matt Crabtree's photo

Matt Crabtree

6 min

Tutorial

Tutorial do DeepChecks: Automatizando os testes de machine learning

Saiba como realizar a validação de dados e modelos para garantir um desempenho robusto de machine learning usando nosso guia passo a passo para automatizar testes com o DeepChecks.
Abid Ali Awan's photo

Abid Ali Awan

12 min

cursor ai code editor

Tutorial

AI do cursor: Um guia com 10 exemplos práticos

Saiba como instalar o Cursor AI no Windows, macOS e Linux e descubra como usá-lo em 10 casos de uso diferentes.
Ver MaisVer Mais