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.
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
- Clone o repositório:
git clone https://github.com/yourusername/serpapi-mcp-server.git
cd serpapi-mcp-server
- 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
- Crie um arquivo
.envna raiz do projeto com base no.env.examplefornecido:
cp .env.example .env
- Edite o arquivo
.enve adicione sua chave de API SerpAPI:
SERPAPI_API_KEY=your_api_key_here
Início Rápido
-
Salve o Código do Servidor: Coloque o código do servidor em um arquivo, por exemplo, server.py.
-
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
- Execute o Servidor: Inicie o servidor com:
python src/serpapi_google_search.py # Or any other server file
- Integre com um Cliente MCP: Conecte o servidor a um cliente ou host MCP (por exemplo, Claude for Desktop).
Uso com Claude for Desktop
- 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"
}
}
}
}
-
Certifique-se de que sua chave SerpAPI esteja definida no arquivo
.envno diretório raiz do projeto. -
Reinicie o Claude for Desktop para carregar a nova configuração.
-
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 buscanum: Número de resultados (1-100)start: Deslocamento de resultados para paginação (indexação baseada em 1)location: Localização para buscargl: 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 exatamenteinclude_domains: Lista de domínios para incluir nos resultados de buscaexclude_domains: Lista de domínios para excluir dos resultados de buscaraw_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 buscagl: 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íficatopic_token: Buscar dentro de um tópico específicostory_token: Obter cobertura completa de uma história específicasection_token: Buscar dentro de uma seção específicaso: 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 buscahl: Código do idioma (ex.: 'en', 'es')lr: Restrição de idioma (ex.: 'lang_fr|lang_de')start: Deslocamento de resultados para paginaçãonum: Número de resultados (1-20)cites: ID para buscas de citaçõesas_ylo: Ano inicial para intervalo de tempoas_yhi: Ano final para intervalo de temposcisbd: Ordenar por data (0 para relevância, 1 para resumos, 2 para tudo)cluster: ID para buscas de todas as versõesas_sdt: Tipo de busca ou filtrosafe: 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 minutosdata_type: Tipo de busca (ex.: 'TIMESERIES', 'GEO_MAP')cat: ID da categoriagprop: 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 futuroshl: 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 buscatype: Tipo de busca ('search' ou 'place')place_id: Referência única para um lugar no Google Mapsdata: Filtrar resultados de busca ou buscar um lugar específicoll: 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 buscalocation: Localização para buscaruule: 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 sugeridatbs: Parâmetros de busca avançadaimgar: 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 buscagl: 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 YouTubegl: 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 respostasraw_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 YouTubewith_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 idadeproxy: Proxy HTTPS a usar para a solicitaçãoraw_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