SerpApi

Fornece capacidades de busca e recuperação de dados do SerpAPI e YouTube para assistentes de IA.

Documentação

Servidor MCP SerpApi - Python

Uma coleção de servidores Model Context Protocol (MCP) que se integram com SerpAPI e YouTube para fornecer capacidades de busca e recuperação de dados para assistentes de IA.

License: MIT

Visão Geral

Este projeto fornece vários servidores MCP que permitem que assistentes de IA como Claude realizem várias operações de busca e recuperem dados de:

  • Google Search
  • Google News
  • Google Scholar
  • Google Trends
  • Google Finance
  • Google Maps
  • Google Images
  • YouTube Search
  • YouTube Transcripts

Cada servidor é projetado para funcionar com o Model Context Protocol (MCP), facilitando a integração com assistentes de IA que suportam esse protocolo, como Claude for Desktop ou Grok.

Recursos

  • Google Search (serpapi_google_search.py)
  • Google News (serpapi_google_news.py)
  • Google Scholar (serpapi_google_scholar.py)
  • Google Trends (serpapi_google_trend.py)
  • Google Finance (serpapi_google_finance.py)
  • Google Maps (serpapi_google_maps.py)
  • Google Images (serpapi_google_images.py)
  • YouTube Search (serpapi_youtube_search.py)
  • YouTube Transcript (youtube_transcript.py)

Instalação

Pré-requisitos

  • Python 3.8 ou superior
  • Uma chave de API SerpAPI (obtenha uma em serpapi.com)

Configuração

  1. Clone o repositório:
git clone https://github.com/yourusername/serpapi-mcp-server.git
cd serpapi-mcp-server
  1. Crie um ambiente virtual e instale as dependências:
python -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
pip install -r requirements.txt
  1. Crie um arquivo .env na raiz do projeto com base no .env.example fornecido:
cp .env.example .env
  1. Edite o arquivo .env e adicione sua chave de API SerpAPI:
SERPAPI_API_KEY=your_api_key_here

Início Rápido

  1. Salve o Código do Servidor: Coloque o código do servidor em um arquivo, por exemplo, server.py.

  2. Configure a Chave de API: Crie um arquivo .env no mesmo diretório com sua chave de API SerpApi:

SERPAPI_API_KEY=your_api_key_here
  1. Execute o Servidor: Inicie o servidor com:
python src/serpapi_google_search.py  # Or any other server file
  1. Integre com um Cliente MCP: Conecte o servidor a um cliente ou host MCP (por exemplo, Claude for Desktop).

Uso com Claude for Desktop

  1. Configure o Claude for Desktop para usar esses servidores MCP adicionando-os ao seu arquivo claude_desktop_config.json:
{
  "mcpServers": {
    "serpapi-google-search": {
      "type": "stdio",
      "command": "path/to/python",
      "args": [
        "path/to/serpapi-mcp-server/src/serpapi_google_search.py"
      ],
      "env": {
        "PYTHONPATH": "path/to/site-packages"
      }
    },
    "serpapi-youtube-search": {
      "type": "stdio",
      "command": "path/to/python",
      "args": [
        "path/to/serpapi-mcp-server/src/serpapi_youtube_search.py"
      ],
      "env": {
        "PYTHONPATH": "path/to/site-packages"
      }
    },
    "serpapi-google-news": {
      "type": "stdio",
      "command": "path/to/python",
      "args": [
        "path/to/serpapi-mcp-server/src/serpapi_google_news.py"
      ],
      "env": {
        "PYTHONPATH": "path/to/site-packages"
      }
    },
    "serpapi-google-trend": {
      "type": "stdio",
      "command": "path/to/python",
      "args": [
        "path/to/serpapi-mcp-server/src/serpapi_google_trend.py"
      ],
      "env": {
        "PYTHONPATH": "path/to/site-packages"
      }
    },
    "serpapi-google-scholar": {
      "type": "stdio",
      "command": "path/to/python",
      "args": [
        "path/to/serpapi-mcp-server/src/serpapi_google_scholar.py"
      ],
      "env": {
        "PYTHONPATH": "path/to/site-packages"
      }
    },
    "serpapi-google-finance": {
      "type": "stdio",
      "command": "path/to/python",
      "args": [
        "path/to/serpapi-mcp-server/src/serpapi_google_finance.py"
      ],
      "env": {
        "PYTHONPATH": "path/to/site-packages"
      }
    },
    "serpapi-google-maps": {
      "type": "stdio",
      "command": "path/to/python",
      "args": [
        "path/to/serpapi-mcp-server/src/serpapi_google_maps.py"
      ],
      "env": {
        "PYTHONPATH": "path/to/site-packages"
      }
    },
    "serpapi-google-images": {
      "type": "stdio",
      "command": "path/to/python",
      "args": [
        "path/to/serpapi-mcp-server/src/serpapi_google_images.py"
      ],
      "env": {
        "PYTHONPATH": "path/to/site-packages"
      }
    },
    "youtube-transcript": {
      "type": "stdio",
      "command": "path/to/python",
      "args": [
        "path/to/serpapi-mcp-server/src/youtube_transcript.py"
      ],
      "env": {
        "PYTHONPATH": "path/to/site-packages"
      }
    }
  }
}
  1. Certifique-se de que sua chave SerpAPI esteja definida no arquivo .env no diretório raiz do projeto.

  2. Reinicie o Claude for Desktop para carregar a nova configuração.

  3. Agora você pode usar essas capacidades de busca diretamente em suas conversas com o Claude.

Exemplos de Consultas

Aqui estão alguns exemplos de como usar esses servidores com o Claude Desktop:

Google Search

Please search for "climate change solutions" and summarize the top results.

Google News

Find the latest news about artificial intelligence.

Google Scholar

Find recent academic papers on quantum computing.

Google Trends

What are the trending topics in technology right now?

Google Finance

Look up the current stock price and financial information for Apple (AAPL).

Google Maps

Find coffee shops near Central Park, New York.

Google Images

Search for images of "northern lights" and describe what you see.

YouTube Search

Search for tutorial videos on Python programming.

YouTube Transcript

Get the transcript of this YouTube video: https://www.youtube.com/watch?v=dQw4w9WgXcQ

Parâmetros da API

Cada servidor suporta vários parâmetros para ajustar suas buscas. Aqui estão todos os parâmetros para cada um:

Google Search

  • q: Consulta de busca
  • num: Número de resultados (1-100)
  • start: Deslocamento de resultados para paginação (indexação baseada em 1)
  • location: Localização para buscar
  • gl: Código do país para busca no Google (ex.: 'us', 'uk')
  • hl: Código do idioma (ex.: 'en', 'es')
  • device: Tipo de dispositivo ('desktop', 'mobile', 'tablet')
  • safe: Configuração de busca segura ('active', 'off')
  • filter: Filtrar conteúdo duplicado ('0' para desligado, '1' para ligado)
  • time_period: Filtrar por recência (ex.: 'd' para o dia anterior)
  • exactTerms: Palavras ou frases que devem aparecer exatamente
  • include_domains: Lista de domínios para incluir nos resultados de busca
  • exclude_domains: Lista de domínios para excluir dos resultados de busca
  • raw_json: Retornar resposta JSON bruta completa (booleano)
  • readable_json: Retornar resultados em texto formatado em markdown (booleano)

Documentação Completa dos Parâmetros da API do Google Search

Google News

  • q: Consulta de busca
  • gl: Código do país (ex.: 'us', 'uk')
  • hl: Código do idioma (ex.: 'en', 'es')
  • publication_token: Buscar dentro de uma publicação específica
  • topic_token: Buscar dentro de um tópico específico
  • story_token: Obter cobertura completa de uma história específica
  • section_token: Buscar dentro de uma seção específica
  • so: Método de ordenação ('0' para relevância, '1' para data)
  • raw_json: Retornar resposta JSON bruta completa (booleano)
  • readable_json: Retornar resultados em texto formatado em markdown (booleano)

Documentação Completa dos Parâmetros da API do Google News

Google Scholar

  • q: Consulta de busca
  • hl: Código do idioma (ex.: 'en', 'es')
  • lr: Restrição de idioma (ex.: 'lang_fr|lang_de')
  • start: Deslocamento de resultados para paginação
  • num: Número de resultados (1-20)
  • cites: ID para buscas de citações
  • as_ylo: Ano inicial para intervalo de tempo
  • as_yhi: Ano final para intervalo de tempo
  • scisbd: Ordenar por data (0 para relevância, 1 para resumos, 2 para tudo)
  • cluster: ID para buscas de todas as versões
  • as_sdt: Tipo de busca ou filtro
  • safe: Configuração de busca segura ('active', 'off')
  • filter: Filtrar resultados semelhantes/omitidos ('0' para desligado, '1' para ligado)
  • as_vis: Incluir citações ('0' para incluir, '1' para excluir)
  • as_rr: Mostrar apenas artigos de revisão ('0' para todos, '1' apenas revisões)
  • raw_json: Retornar resposta JSON bruta completa (booleano)
  • readable_json: Retornar resultados em texto formatado em markdown (booleano)

Documentação Completa dos Parâmetros da API do Google Scholar

Google Trends

  • q: Consulta de busca (pode ser múltiplas consultas separadas por vírgulas)
  • geo: Localização geográfica (ex.: 'US', 'GB')
  • date: Intervalo de tempo (ex.: 'now 1-d', 'now 7-d', 'today 12-m')
  • tz: Deslocamento de fuso horário em minutos
  • data_type: Tipo de busca (ex.: 'TIMESERIES', 'GEO_MAP')
  • cat: ID da categoria
  • gprop: Filtro de propriedade (ex.: 'web', 'news', 'images')
  • raw_json: Retornar resposta JSON bruta completa (booleano)
  • readable_json: Retornar resultados em texto formatado em markdown (booleano)

Documentação Completa dos Parâmetros da API do Google Trends

Google Finance

  • q: Consulta de busca para uma ação, índice, fundo mútuo, moeda ou futuros
  • hl: Código do idioma (ex.: 'en', 'es')
  • window: Intervalo de tempo para o gráfico (ex.: '1D', '5D', '1M', '6M', 'YTD', '1Y', '5Y', 'MAX')
  • raw_json: Retornar resposta JSON bruta completa (booleano)
  • readable_json: Retornar resultados em texto formatado em markdown (booleano)

Documentação Completa dos Parâmetros da API do Google Finance

Google Maps

  • q: Consulta de busca
  • type: Tipo de busca ('search' ou 'place')
  • place_id: Referência única para um lugar no Google Maps
  • data: Filtrar resultados de busca ou buscar um lugar específico
  • ll: Coordenadas GPS no formato '@latitude,longitude,zoom'
  • google_domain: Domínio do Google a usar (padrão: google.com)
  • hl: Código do idioma (ex.: 'en', 'es')
  • gl: Código do país (ex.: 'us', 'uk')
  • start: Deslocamento de resultados para paginação (inteiro)
  • raw_json: Retornar resposta JSON bruta completa (booleano)
  • readable_json: Retornar resultados em texto formatado em markdown (booleano)

Documentação Completa dos Parâmetros da API do Google Maps

Google Images

  • q: Consulta de busca
  • location: Localização para buscar
  • uule: Localização codificada do Google (não pode ser usada com localização)
  • google_domain: Domínio do Google a usar (padrão: google.com)
  • hl: Código do idioma (ex.: 'en', 'es')
  • gl: Código do país (ex.: 'us', 'uk')
  • cr: Restrição de país (ex.: 'countryUS')
  • device: Tipo de dispositivo ('desktop', 'tablet', 'mobile')
  • ijn: Número da página (índice baseado em zero)
  • chips: String de filtro fornecida pelo Google como busca sugerida
  • tbs: Parâmetros de busca avançada
  • imgar: Proporção de aspecto das imagens ('s' - Quadrada, 't' - Alta, 'w' - Larga, 'xw' - Panorâmica)
  • imgsz: Tamanho das imagens ('l' - Grande, 'm' - Média, 'i' - Ícone, etc.)
  • image_color: Cor das imagens ('red', 'blue', 'green', 'black', 'white', etc.)
  • image_type: Tipo de imagens ('face', 'photo', 'clipart', 'lineart', 'animated')
  • licenses: Escopo de licenças ('f' - Uso gratuito, 'fc' - Uso comercial gratuito, etc.)
  • safe: Configuração de busca segura ('active', 'off')
  • nfpr: Excluir resultados corrigidos automaticamente ('1' para excluir, '0' para incluir)
  • filter: Ativar/desativar filtros de 'Resultados Semelhantes' e 'Resultados Omitidos'
  • time_period: Filtrar por recência (ex.: 'd' para o dia anterior)
  • raw_json: Retornar resposta JSON bruta completa (booleano)
  • readable_json: Retornar resultados em texto formatado em markdown (booleano)

Documentação Completa dos Parâmetros da API do Google Images

YouTube Search

  • search_query: Consulta de busca
  • gl: Código do país (ex.: 'us', 'uk')
  • hl: Código do idioma (ex.: 'en', 'es')
  • sp: Parâmetros de filtro (ex.: 'CAISAhAB' para vídeos enviados hoje)
  • raw_json: Retornar resposta JSON bruta completa (booleano)
  • readable_json: Retornar resultados em texto formatado em markdown (booleano)

Documentação Completa dos Parâmetros da API do YouTube Search

YouTube Video

  • v: ID do vídeo do YouTube
  • gl: Código do país (ex.: 'us', 'uk')
  • hl: Código do idioma (ex.: 'en', 'es')
  • next_page_token: Token para recuperar a próxima página de vídeos relacionados, comentários ou respostas
  • raw_json: Retornar resposta JSON bruta completa (booleano)
  • readable_json: Retornar resultados em texto formatado em markdown (booleano)

YouTube Transcript

  • video_url: URL ou ID do vídeo do YouTube
  • with_timestamps: Incluir carimbos de tempo na transcrição (booleano)
  • language: Código do idioma para a transcrição (padrão: 'en')
  • preserve_formatting: Preservar elementos de formatação HTML (booleano)
  • cookies_path: Caminho para o arquivo cookies.txt para vídeos com restrição de idade
  • proxy: Proxy HTTPS a usar para a solicitação
  • raw_json: Retornar resposta JSON bruta completa (booleano)
  • readable_json: Retornar texto formatado legível por humanos (booleano)
  • text_transcript: Retornar transcrição como uma única string de texto (booleano)

Documentação da API do YouTube Transcript

Solução de Problemas

Chave de API Inválida

  • Verifique a configuração da chave de API no arquivo .env
  • Confirme se a chave de API está ativa no painel do SerpAPI
  • Verifique se há aspas ou espaços em branco na chave de API

Falhas de Solicitação

  • Verifique a conectividade de rede
  • Verifique se a cota de chamadas de API não foi excedida
  • Valide o formato dos parâmetros da solicitação
  • Verifique problemas de limitação de taxa

Licença

Este projeto está licenciado sob a Licença MIT - consulte o arquivo LICENSE para obter detalhes.

Agradecimentos

  • SerpApi por fornecer a API de busca
  • YouTube Transcript API para recuperação de transcrições
  • O protocolo MCP por permitir a integração com assistentes de IA

Recursos