Discover Awesome MCP Servers

Extend your agent with 25,046 capabilities via MCP servers.

All25,046
MCP Server Template for Cursor IDE

MCP Server Template for Cursor IDE

Aqui está um modelo para criar ferramentas personalizadas para o Cursor IDE usando o Protocolo de Contexto de Modelo (MCP), permitindo que os desenvolvedores estendam a funcionalidade do Cursor com suas próprias ferramentas baseadas em servidor: ```python # Importe as bibliotecas necessárias import json import os import socket import sys import threading # Defina as configurações da sua ferramenta TOOL_NAME = "NomeDaSuaFerramenta" TOOL_DESCRIPTION = "Uma breve descrição da sua ferramenta." SERVER_ADDRESS = ("localhost", 12345) # Endereço e porta do seu servidor # Função para lidar com as solicitações do Cursor def handle_request(connection, address): try: print(f"Conexão de {address}") # Recebe os dados da solicitação data = connection.recv(4096) # Ajuste o tamanho do buffer conforme necessário if not data: print("Nenhum dado recebido.") return # Decodifica os dados JSON try: request = json.loads(data.decode("utf-8")) except json.JSONDecodeError: print("Erro ao decodificar JSON.") connection.sendall(json.dumps({"error": "Erro ao decodificar JSON"}).encode("utf-8")) return # Imprime a solicitação recebida (para depuração) print(f"Solicitação recebida: {request}") # Processa a solicitação com base no tipo de solicitação if request["type"] == "tool/execute": # Extrai os argumentos da solicitação arguments = request.get("arguments", {}) # Executa a lógica da sua ferramenta aqui try: result = execute_tool(arguments) # Substitua por sua função response = { "type": "tool/result", "result": result, "requestId": request["requestId"], } except Exception as e: response = { "type": "tool/error", "error": str(e), "requestId": request["requestId"], } elif request["type"] == "tool/info": # Retorna informações sobre a ferramenta response = { "type": "tool/infoResult", "name": TOOL_NAME, "description": TOOL_DESCRIPTION, "capabilities": ["execute"], # Adicione outras capacidades se necessário } else: # Tipo de solicitação desconhecido response = { "type": "tool/error", "error": "Tipo de solicitação desconhecido", "requestId": request.get("requestId", None), # Inclui requestId se presente } # Envia a resposta de volta para o Cursor response_json = json.dumps(response) connection.sendall(response_json.encode("utf-8")) print(f"Resposta enviada: {response_json}") except Exception as e: print(f"Erro ao lidar com a solicitação: {e}") try: connection.sendall(json.dumps({"error": str(e)}).encode("utf-8")) except: print("Erro ao enviar resposta de erro.") finally: connection.close() print(f"Conexão com {address} fechada.") # Função para executar a lógica principal da sua ferramenta def execute_tool(arguments): """ Executa a lógica principal da sua ferramenta com base nos argumentos fornecidos. Args: arguments (dict): Um dicionário contendo os argumentos passados pelo Cursor. Returns: any: O resultado da execução da ferramenta. Pode ser um string, número, dicionário, etc. """ # Exemplo: text = arguments.get("text", "") # Faça algo com o texto, por exemplo, contar o número de palavras word_count = len(text.split()) return f"Número de palavras: {word_count}" # Função principal para iniciar o servidor def start_server(): """Inicia o servidor socket para ouvir as solicitações do Cursor.""" server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # Permite reutilizar o endereço server_socket.bind(SERVER_ADDRESS) server_socket.listen(5) # Número máximo de conexões enfileiradas print(f"Servidor iniciado em {SERVER_ADDRESS}") try: while True: connection, address = server_socket.accept() thread = threading.Thread(target=handle_request, args=(connection, address)) thread.daemon = True # Encerra o thread quando o programa principal termina thread.start() except KeyboardInterrupt: print("\nServidor encerrado.") finally: server_socket.close() if __name__ == "__main__": start_server() ``` **Explicação do código:** 1. **Importações:** Importa as bibliotecas necessárias para trabalhar com JSON, sockets, threads e o sistema operacional. 2. **Configurações:** Define as configurações da sua ferramenta, como nome, descrição e endereço do servidor. É importante escolher uma porta que não esteja em uso. 3. **`handle_request(connection, address)`:** * Esta função é executada em um thread separado para cada conexão recebida. * Recebe os dados da solicitação do Cursor. * Decodifica os dados JSON. * Processa a solicitação com base no campo `"type"`: * `"tool/execute"`: Executa a lógica principal da sua ferramenta chamando a função `execute_tool()`. Extrai os argumentos do campo `"arguments"` da solicitação. * `"tool/info"`: Retorna informações sobre a ferramenta (nome, descrição, capacidades). * Outros tipos: Retorna uma mensagem de erro. * Envia a resposta de volta para o Cursor como JSON. * Lida com erros de decodificação JSON e outros erros. * Fecha a conexão. 4. **`execute_tool(arguments)`:** * Esta função contém a lógica principal da sua ferramenta. * Recebe um dicionário de argumentos passados pelo Cursor. * Realiza alguma ação com base nos argumentos. * Retorna o resultado da execução da ferramenta. O resultado pode ser qualquer tipo de dado serializável em JSON (string, número, dicionário, etc.). * **Importante:** Substitua o exemplo de contagem de palavras pela lógica real da sua ferramenta. 5. **`start_server()`:** * Cria um socket do servidor. * Vincula o socket ao endereço e porta especificados. * Começa a ouvir as conexões recebidas. * Para cada conexão, cria um novo thread para lidar com a solicitação. * Lida com a interrupção do teclado (Ctrl+C) para encerrar o servidor de forma limpa. 6. **`if __name__ == "__main__":`:** Garante que o servidor seja iniciado apenas quando o script for executado diretamente. **Como usar este modelo:** 1. **Substitua os placeholders:** * Altere `TOOL_NAME`, `TOOL_DESCRIPTION` e `SERVER_ADDRESS` para os valores apropriados para sua ferramenta. * Substitua a lógica de exemplo na função `execute_tool()` pela lógica real da sua ferramenta. 2. **Implemente a lógica da sua ferramenta:** * Dentro da função `execute_tool()`, acesse os argumentos passados pelo Cursor usando `arguments.get("nome_do_argumento", valor_padrao)`. * Realize as operações necessárias com base nos argumentos. * Retorne o resultado da execução da ferramenta. 3. **Execute o script:** * Execute o script Python. Ele iniciará o servidor e aguardará as conexões do Cursor. 4. **Configure o Cursor:** * No Cursor, vá para as configurações e adicione sua ferramenta personalizada. * Especifique o endereço e a porta do seu servidor. * Defina os comandos que acionarão sua ferramenta. 5. **Teste sua ferramenta:** * Use os comandos que você definiu no Cursor para acionar sua ferramenta. * Verifique se a ferramenta está funcionando corretamente e se os resultados estão sendo exibidos no Cursor. **Considerações importantes:** * **Segurança:** Se sua ferramenta lida com dados confidenciais, tome medidas de segurança adequadas para proteger os dados. Considere usar HTTPS para comunicação entre o Cursor e seu servidor. * **Tratamento de erros:** Implemente um tratamento de erros robusto para lidar com erros inesperados. Retorne mensagens de erro informativas para o Cursor para que os usuários possam entender o que deu errado. * **Escalabilidade:** Se você espera que sua ferramenta seja usada por muitos usuários, considere usar uma arquitetura escalável para lidar com o aumento da carga. * **Documentação:** Documente sua ferramenta para que outros desenvolvedores possam entendê-la e usá-la. * **Formato dos dados:** Certifique-se de que os dados que você envia e recebe estejam no formato correto (JSON). * **Concorrência:** Como o servidor usa threads, certifique-se de que sua lógica seja thread-safe, especialmente se você estiver acessando recursos compartilhados. * **Logs:** Adicione logs para ajudar a depurar problemas. Este modelo fornece um ponto de partida para criar suas próprias ferramentas personalizadas para o Cursor IDE. Adapte-o às suas necessidades específicas e explore as possibilidades do Protocolo de Contexto de Modelo (MCP).

Python
aws-athena-mcp

aws-athena-mcp

Run SQL queries with AWS Athena to access data available from AWS Glue catalog.

TypeScript
Coin MCP Server

Coin MCP Server

Um servidor de Protocolo de Contexto de Modelo que fornece acesso aos dados de criptomoedas da CoinMarketCap, permitindo que aplicações de IA recuperem listagens de criptomoedas, cotações e informações detalhadas.

Python
Dify Workflows MCP Server

Dify Workflows MCP Server

Uma implementação em TypeScript de um servidor Model Context Protocol (MCP) que expõe fluxos de trabalho do Dify como ferramentas para sistemas de IA interagirem.

TypeScript
cryptopanic-mcp-server

cryptopanic-mcp-server

Please note that the cryptocurrency market is highly volatile and news changes rapidly. The information below is current as of **October 26, 2023, at approximately 1:00 PM PDT**. Always verify information from multiple sources before making any decisions. Here's a summary of recent cryptocurrency news, suitable for AI agents: **General Market Trends:** * **Bitcoin (BTC) Price Stability:** Bitcoin is currently trading around the $34,000 - $35,000 range, showing relative stability after a recent surge. Market sentiment is cautiously optimistic, driven by anticipation of potential spot Bitcoin ETF approvals. * **Altcoin Performance:** Altcoins are showing mixed performance. Some are following Bitcoin's upward trend, while others are experiencing corrections. Focus is on projects with strong fundamentals and real-world use cases. * **Market Volatility:** While Bitcoin is stable, overall market volatility remains a concern. Macroeconomic factors, regulatory developments, and unexpected events can trigger significant price swings. **Key News & Developments:** * **Spot Bitcoin ETF Approval Hopes:** The biggest driver of market sentiment is the expectation of the SEC approving a spot Bitcoin ETF. Several applications are under review, and analysts believe approval is increasingly likely in the coming months. BlackRock's application is being closely watched. * **SEC vs. Ripple (XRP):** The legal battle between the SEC and Ripple continues. Recent developments suggest a potential settlement or summary judgment in the near future. The outcome will have significant implications for XRP and the broader crypto industry. * **Regulatory Scrutiny:** Regulatory scrutiny of the crypto industry remains intense globally. The EU's MiCA regulations are coming into effect, and other countries are developing their own regulatory frameworks. Compliance is a major focus for crypto businesses. * **Central Bank Digital Currencies (CBDCs):** Several countries are exploring or piloting CBDCs. Progress is slow but steady, and CBDCs could potentially reshape the financial landscape. * **Ethereum (ETH) Developments:** Ethereum continues to evolve with ongoing upgrades and development activity. The focus is on scalability, security, and sustainability. The Dencun upgrade is expected to further improve the network. * **Binance Developments:** Binance is facing ongoing regulatory challenges in various jurisdictions. The exchange is working to address these concerns and maintain its global presence. **Specific Cryptocurrencies to Watch:** * **Bitcoin (BTC):** Driven by ETF hopes and institutional adoption. * **Ethereum (ETH):** Driven by ongoing development and the growth of the DeFi ecosystem. * **Ripple (XRP):** Driven by the outcome of the SEC lawsuit. * **Solana (SOL):** Showing strong performance and attracting developer interest. * **Cardano (ADA):** Focus on real-world applications and sustainable development. **Important Considerations for AI Agents:** * **Sentiment Analysis:** Monitor social media, news articles, and market data to gauge market sentiment. * **Risk Assessment:** Assess the risks associated with different cryptocurrencies and projects. * **Data Accuracy:** Verify information from multiple sources before making any decisions. * **Real-time Updates:** The crypto market is constantly changing, so it's important to stay up-to-date with the latest news and developments. * **Regulatory Landscape:** Track regulatory developments in different jurisdictions. **Disclaimer:** This is not financial advice. The cryptocurrency market is highly volatile, and you could lose money. Always do your own research before investing. --- **Portuguese Translation:** **Notícias Recentes sobre Criptomoedas para Agentes de IA** Por favor, note que o mercado de criptomoedas é altamente volátil e as notícias mudam rapidamente. As informações abaixo são atuais em **26 de outubro de 2023, aproximadamente às 13:00 PDT**. Sempre verifique as informações de várias fontes antes de tomar qualquer decisão. Aqui está um resumo das notícias recentes sobre criptomoedas, adequado para agentes de IA: **Tendências Gerais do Mercado:** * **Estabilidade do Preço do Bitcoin (BTC):** O Bitcoin está sendo negociado atualmente na faixa de US$ 34.000 - US$ 35.000, mostrando relativa estabilidade após um aumento recente. O sentimento do mercado é cautelosamente otimista, impulsionado pela antecipação de possíveis aprovações de ETFs de Bitcoin à vista. * **Desempenho das Altcoins:** As altcoins estão apresentando desempenho misto. Algumas estão seguindo a tendência de alta do Bitcoin, enquanto outras estão passando por correções. O foco está em projetos com fundamentos sólidos e casos de uso no mundo real. * **Volatilidade do Mercado:** Embora o Bitcoin esteja estável, a volatilidade geral do mercado continua sendo uma preocupação. Fatores macroeconômicos, desenvolvimentos regulatórios e eventos inesperados podem desencadear oscilações significativas de preços. **Principais Notícias e Desenvolvimentos:** * **Esperanças de Aprovação de ETF de Bitcoin à Vista:** O maior impulsionador do sentimento do mercado é a expectativa de que a SEC aprove um ETF de Bitcoin à vista. Vários pedidos estão sob análise, e os analistas acreditam que a aprovação é cada vez mais provável nos próximos meses. O pedido da BlackRock está sendo observado de perto. * **SEC vs. Ripple (XRP):** A batalha legal entre a SEC e a Ripple continua. Desenvolvimentos recentes sugerem um possível acordo ou julgamento sumário em um futuro próximo. O resultado terá implicações significativas para o XRP e para a indústria de criptomoedas em geral. * **Escrutínio Regulatório:** O escrutínio regulatório da indústria de criptomoedas permanece intenso globalmente. Os regulamentos MiCA da UE estão entrando em vigor, e outros países estão desenvolvendo suas próprias estruturas regulatórias. A conformidade é um foco importante para as empresas de criptomoedas. * **Moedas Digitais do Banco Central (CBDCs):** Vários países estão explorando ou pilotando CBDCs. O progresso é lento, mas constante, e as CBDCs podem potencialmente remodelar o cenário financeiro. * **Desenvolvimentos do Ethereum (ETH):** O Ethereum continua a evoluir com atualizações contínuas e atividade de desenvolvimento. O foco está na escalabilidade, segurança e sustentabilidade. Espera-se que a atualização Dencun melhore ainda mais a rede. * **Desenvolvimentos da Binance:** A Binance está enfrentando desafios regulatórios contínuos em várias jurisdições. A exchange está trabalhando para resolver essas preocupações e manter sua presença global. **Criptomoedas Específicas para Observar:** * **Bitcoin (BTC):** Impulsionado pelas esperanças de ETF e pela adoção institucional. * **Ethereum (ETH):** Impulsionado pelo desenvolvimento contínuo e pelo crescimento do ecossistema DeFi. * **Ripple (XRP):** Impulsionado pelo resultado do processo da SEC. * **Solana (SOL):** Apresentando forte desempenho e atraindo o interesse de desenvolvedores. * **Cardano (ADA):** Foco em aplicações no mundo real e desenvolvimento sustentável. **Considerações Importantes para Agentes de IA:** * **Análise de Sentimento:** Monitore as mídias sociais, artigos de notícias e dados de mercado para avaliar o sentimento do mercado. * **Avaliação de Risco:** Avalie os riscos associados a diferentes criptomoedas e projetos. * **Precisão dos Dados:** Verifique as informações de várias fontes antes de tomar qualquer decisão. * **Atualizações em Tempo Real:** O mercado de criptomoedas está em constante mudança, por isso é importante manter-se atualizado com as últimas notícias e desenvolvimentos. * **Cenário Regulatório:** Acompanhe os desenvolvimentos regulatórios em diferentes jurisdições. **Isenção de responsabilidade:** Isso não é aconselhamento financeiro. O mercado de criptomoedas é altamente volátil e você pode perder dinheiro. Sempre faça sua própria pesquisa antes de investir.

Python
mcp-dingdingbot-server

mcp-dingdingbot-server

Here are a few possible translations, depending on the context you're looking for: **Most likely, if you're talking about setting up a notification system:** * **Webhook DingDing para servidor MCP** (This is a direct translation and likely the most common way to phrase it.) **Alternative translations, depending on the nuance you want to convey:** * **Webhook do DingDing no servidor MCP** (Slightly more literal, emphasizing the "on" the server.) * **Integração de webhook do DingDing com servidor MCP** (More formal, emphasizing the integration aspect.) **Explanation of the terms:** * **DingDing:** The name of the application remains the same in Portuguese. * **Webhook:** The term "webhook" is often used directly in Portuguese, especially in technical contexts. * **MCP Server:** "Servidor MCP" is the direct translation. If "MCP" is an acronym, you might need to provide more context for a more accurate translation. **Therefore, I recommend using "Webhook DingDing para servidor MCP" unless you have more context.**

Go
pokemon-api-server

pokemon-api-server

Buscar dados de Pokémon da PokéAPI.

Python
systemprompt-mcp-interview

systemprompt-mcp-interview

Um servidor de Protocolo de Contexto de Modelo (MCP) especializado que permite cenários de roleplay de entrevista com tecnologia de IA para prática com feedback conversacional realista.

TypeScript
cloudflare-browser-rendering-mcp

cloudflare-browser-rendering-mcp

Este servidor MCP fornece ferramentas para interagir com o Cloudflare Browser Rendering, permitindo que você obtenha e processe conteúdo da web para usar como contexto em LLMs diretamente do Cline ou do Claude Desktop.

TypeScript
MCP Proxy Server

MCP Proxy Server

Um hub central que agrega múltiplos servidores de recursos MCP em uma única interface unificada, permitindo que os usuários acessem ferramentas e capacidades de múltiplos servidores de backend através de um único ponto de conexão.

TypeScript
PiAPI-MCP Server

PiAPI-MCP Server

Um servidor de Protocolo de Contexto de Modelo (MCP) baseado em TypeScript, permitindo a integração com PiAPI para geração de conteúdo de mídia usando plataformas como Midjourney, Flux e outras através de aplicações compatíveis com MCP.

TypeScript
MCP Server Pagespeed

MCP Server Pagespeed

Permite que modelos de IA analisem o desempenho de páginas da web usando a API Google PageSpeed Insights, fornecendo pontuações de desempenho em tempo real e sugestões de melhoria.

JavaScript
Scryfall MCP Server

Scryfall MCP Server

Permite a interação com a API Scryfall, permitindo que os usuários pesquisem detalhes de cartas de Magic: The Gathering, recuperem regras de cartas e acessem informações de preços usando o Protocolo de Contexto do Modelo.

JavaScript
MCP Terminal Server

MCP Terminal Server

Um servidor seguro para executar comandos de terminal dentro de caminhos predefinidos, permitindo a interação segura de Grandes Modelos de Linguagem com ambientes de sistema operacional.

JavaScript
Vercel MCP

Vercel MCP

Um servidor MCP que fornece ferramentas para interagir com a API da Vercel, permitindo o gerenciamento de deployments, registros DNS, domínios, projetos e variáveis de ambiente através de linguagem natural.

TypeScript
Deepseek MCP Server

Deepseek MCP Server

Uma implementação de servidor do Protocolo de Controle de Modelo que permite que o Claude Desktop use modelos Deepseek rodando em Docker, possibilitando uma integração perfeita entre o Claude Desktop e os modelos de linguagem da Deepseek.

Python
Retrieval-Augmented Thinking MCP Server

Retrieval-Augmented Thinking MCP Server

Aprimora as capacidades do modelo de IA com processos de pensamento estruturados e aumentados por recuperação, que permitem cadeias de pensamento dinâmicas, caminhos de exploração paralelos e ciclos de refinamento recursivos para um raciocínio aprimorado.

JavaScript
AQICN MCP Server

AQICN MCP Server

Permite a interação com o Índice Mundial de Qualidade do Ar para buscar dados de qualidade do ar em tempo real para cidades e coordenadas em todo o mundo através do Protocolo de Contexto do Modelo (MCP).

Python
MCP Server: Scalable OpenAPI Endpoint Discovery and API Request Tool

MCP Server: Scalable OpenAPI Endpoint Discovery and API Request Tool

Este servidor facilita a descoberta e execução escalável de endpoints OpenAPI usando pesquisa semântica e processamento de alto desempenho, superando as limitações do manuseio de especificações grandes para interações de API otimizadas.

Python
Metal MCP Server

Metal MCP Server

Permite a interação com o Framework Metal, fornecendo recursos de pesquisa de documentação e geração de código usando consultas em linguagem natural.

TypeScript
Linear MCP Server

Linear MCP Server

Permite a interação com recursos do Linear através de uma interface MCP, oferecendo funcionalidades para gerenciamento de issues e recuperação de recursos com suporte para limitação de taxa e tratamento de erros.

JavaScript
ClickUp MCP Server

ClickUp MCP Server

Permite integrações de IA com tarefas do ClickUp, oferecendo suporte ao gerenciamento de recursos, operações de tarefas, organização do espaço de trabalho e recomendações de tarefas com tecnologia de IA por meio de um protocolo padronizado.

TypeScript
World Bank MCP Server

World Bank MCP Server

Permite que assistentes de IA interajam com a API de dados abertos do Banco Mundial, possibilitando a listagem e análise de indicadores em todos os países disponíveis.

Python
Wegene Assistant MCP Server

Wegene Assistant MCP Server

Utiliza modelos de linguagem grandes para analisar relatórios de testes genéticos WeGene de usuários, fornecendo acesso aos dados do relatório por meio de esquemas URI personalizados e permitindo o gerenciamento de perfil e relatório por meio de autenticação OAuth e utilização de API.

Python
Backlog MCP Server

Backlog MCP Server

Integra o gerenciamento de projetos do Backlog com o Claude através do Protocolo de Contexto do Modelo, permitindo o acesso a projetos, tarefas e páginas wiki por meio de interações em linguagem natural.

TypeScript
mcp-function-app-tester

mcp-function-app-tester

Um servidor MCP baseado em TypeScript que permite a interação com o Azure Table Storage diretamente através do Cline. Esta ferramenta permite consultar e gerenciar dados em Tabelas de Armazenamento do Azure.

JavaScript
mcp-server-birdstats

mcp-server-birdstats

Okay, here's how you can cross-reference your BirdNET-Pi data with eBird observations using natural language, along with some considerations and potential approaches: **Understanding the Goal** The core idea is to compare what your BirdNET-Pi device *detected* with what human birders *observed* in the same area and time frame. This helps you: * **Validate BirdNET-Pi's Accuracy:** See how well the AI agrees with human observations. * **Identify Missed Detections:** Discover species present that BirdNET-Pi didn't pick up. * **Understand Local Bird Activity:** Gain a more complete picture of bird presence and behavior in your area. * **Improve BirdNET-Pi Setup:** Adjust settings or location based on discrepancies. **General Steps (Conceptual)** 1. **Data Extraction:** * **BirdNET-Pi Data:** Get the date, time, location (latitude/longitude), and species detections from your BirdNET-Pi logs. You'll likely need to parse the log files. * **eBird Data:** Use the eBird API (Application Programming Interface) or download eBird data for your region. You'll need an eBird account and API key. The data will include date, time, location, species, and observer information. 2. **Spatial and Temporal Filtering:** * **Define a Search Radius:** Determine how close an eBird observation needs to be to your BirdNET-Pi location to be considered a match (e.g., within 1 km, 5 km). * **Define a Time Window:** Determine how close in time an eBird observation needs to be to your BirdNET-Pi detection (e.g., within 1 hour, 1 day). 3. **Comparison and Analysis:** * **Match Detections:** For each BirdNET-Pi detection, find eBird observations within the defined radius and time window. * **Identify Agreements:** List species detected by both BirdNET-Pi and eBird. * **Identify Discrepancies:** * Species detected by BirdNET-Pi but *not* reported on eBird within the search area/timeframe. * Species reported on eBird but *not* detected by BirdNET-Pi within the search area/timeframe. 4. **Interpretation:** * Consider factors that might explain discrepancies: * **BirdNET-Pi Errors:** Misidentification by the AI. * **eBird Observer Skill:** Varying levels of expertise among eBird users. * **Bird Behavior:** Birds may be present but not vocalizing. * **Habitat Differences:** eBird observations might be in slightly different habitats than your BirdNET-Pi location. * **Rarity:** Rare birds might be missed by BirdNET-Pi. * **Detection Range:** BirdNET-Pi has a limited detection range. **Natural Language Examples (How you might phrase your queries/analysis)** Here are examples of how you might express your analysis in natural language: * "For all BirdNET-Pi detections on July 15, 2024, within a 1-kilometer radius of my device, compare the detected species to eBird checklists submitted on the same day." * "Show me all instances where BirdNET-Pi detected a Northern Cardinal, but no eBird checklist within 500 meters and 2 hours of that detection reported a Northern Cardinal." * "What species were reported on eBird within a 2-kilometer radius of my BirdNET-Pi location during the month of June that BirdNET-Pi never detected?" * "Calculate the percentage of times BirdNET-Pi and eBird agreed on the presence of American Robins within a 1-day window and a 5-kilometer radius." * "List the top 5 species most frequently detected by BirdNET-Pi that were *not* reported on eBird within a 1-kilometer radius and a 1-hour window." * "Analyze the correlation between the confidence score of BirdNET-Pi detections and the likelihood of those species being reported on eBird within a 5-kilometer radius." * "Identify any rare or unusual species detected by BirdNET-Pi that were not confirmed by eBird observations in the surrounding area within a week." **Technical Considerations** * **Programming:** You'll likely need to use a programming language like Python to automate this process. Python has libraries for: * Data manipulation (Pandas) * Spatial calculations (GeoPandas, Shapely) * API interaction (Requests) * Date/time handling (datetime) * **eBird API:** Familiarize yourself with the eBird API documentation. You'll need to register for an API key. Be mindful of API usage limits. * **Data Storage:** Consider storing your BirdNET-Pi data and eBird data in a database (e.g., SQLite, PostgreSQL) for easier querying and analysis. * **Geospatial Calculations:** Use appropriate geospatial functions to calculate distances between BirdNET-Pi locations and eBird observation points. Be aware of coordinate systems (latitude/longitude). * **Error Handling:** Implement robust error handling to deal with potential issues like API errors, missing data, or invalid data formats. **Example Python Snippet (Illustrative - Requires Adaptation)** ```python import pandas as pd import requests from datetime import datetime, timedelta from geopy.distance import geodesic # For calculating distances # --- Configuration --- BIRDNET_PI_LOG_FILE = "your_birdnet_pi_log.txt" # Replace with your log file EBIRD_API_KEY = "YOUR_EBIRD_API_KEY" # Replace with your eBird API key LATITUDE = 34.0522 # Replace with your BirdNET-Pi latitude LONGITUDE = -118.2437 # Replace with your BirdNET-Pi longitude SEARCH_RADIUS_KM = 1 # Search radius in kilometers TIME_WINDOW_HOURS = 2 # Time window in hours # --- Function to parse BirdNET-Pi log (Adapt to your log format) --- def parse_birdnet_log(log_file): # This is a placeholder - you'll need to adapt this to your log file format data = [] with open(log_file, 'r') as f: for line in f: if "Detected" in line: # Example: Adapt this to your log's structure try: date_str = line.split(" ")[0] # Example: Extract date time_str = line.split(" ")[1] # Example: Extract time species = line.split("Detected: ")[1].split(" ")[0] # Example: Extract species confidence = float(line.split("Confidence: ")[1].split(" ")[0]) # Example: Extract confidence datetime_obj = datetime.strptime(f"{date_str} {time_str}", "%Y-%m-%d %H:%M:%S") # Adapt format data.append({"datetime": datetime_obj, "species": species, "confidence": confidence}) except: pass return pd.DataFrame(data) # --- Function to fetch eBird data (Adapt to your needs) --- def get_ebird_data(latitude, longitude, date, api_key, radius=1): date_str = date.strftime("%Y-%m-%d") url = f"https://api.ebird.org/v2/data/obs/geo/recent?lat={latitude}&lng={longitude}&dist={radius}&back=1&fmt=json" # Example URL headers = {"X-eBirdAPIToken": api_key} response = requests.get(url, headers=headers) response.raise_for_status() # Raise HTTPError for bad responses (4xx or 5xx) return response.json() # --- Main Script --- birdnet_data = parse_birdnet_log(BIRDNET_PI_LOG_FILE) for index, row in birdnet_data.iterrows(): birdnet_datetime = row['datetime'] birdnet_species = row['species'] # Fetch eBird data for the same day try: ebird_data = get_ebird_data(LATITUDE, LONGITUDE, birdnet_datetime.date(), EBIRD_API_KEY, SEARCH_RADIUS_KM) except requests.exceptions.HTTPError as e: print(f"Error fetching eBird data: {e}") continue # Filter eBird data by time window matching_ebird_observations = [] for obs in ebird_data: obs_datetime = datetime.fromtimestamp(obs['obsDt']/1000) # Convert eBird timestamp to datetime time_difference = abs(birdnet_datetime - obs_datetime) if time_difference <= timedelta(hours=TIME_WINDOW_HOURS): matching_ebird_observations.append(obs['sciName']) # Use scientific name for comparison # Compare BirdNET-Pi and eBird if birdnet_species in matching_ebird_observations: print(f"BirdNET-Pi and eBird agree: {birdnet_species} detected on {birdnet_datetime}") else: print(f"BirdNET-Pi detected {birdnet_species} on {birdnet_datetime}, but not found on eBird within the search area/timeframe.") # You can add more analysis here, such as identifying species reported on eBird # that BirdNET-Pi missed. ``` **Important Notes:** * **Adapt the Code:** The Python code is a starting point. You *must* adapt it to your specific BirdNET-Pi log file format and your desired analysis. * **Error Handling:** The code includes basic error handling, but you should add more robust error handling for production use. * **API Limits:** Be aware of eBird API usage limits and implement strategies to avoid exceeding them (e.g., caching data). * **Data Quality:** Remember that both BirdNET-Pi and eBird data have limitations. Interpret the results with caution. * **Scientific Names:** Use scientific names for species comparisons to avoid ambiguity. You may need to map common names from BirdNET-Pi to scientific names. **Translation to Portuguese:** Here's a translation of the general steps and natural language examples: **Passos Gerais (Conceitual)** 1. **Extração de Dados:** * **Dados do BirdNET-Pi:** Obtenha a data, hora, localização (latitude/longitude) e as espécies detectadas dos seus logs do BirdNET-Pi. Provavelmente, você precisará analisar os arquivos de log. * **Dados do eBird:** Use a API do eBird (Interface de Programação de Aplicativos) ou baixe os dados do eBird para sua região. Você precisará de uma conta eBird e uma chave de API. Os dados incluirão data, hora, localização, espécies e informações do observador. 2. **Filtragem Espacial e Temporal:** * **Defina um Raio de Busca:** Determine a proximidade que uma observação do eBird precisa ter da sua localização do BirdNET-Pi para ser considerada uma correspondência (por exemplo, dentro de 1 km, 5 km). * **Defina uma Janela de Tempo:** Determine a proximidade no tempo que uma observação do eBird precisa ter da sua detecção do BirdNET-Pi (por exemplo, dentro de 1 hora, 1 dia). 3. **Comparação e Análise:** * **Combine Detecções:** Para cada detecção do BirdNET-Pi, encontre observações do eBird dentro do raio e janela de tempo definidos. * **Identifique Concordâncias:** Liste as espécies detectadas tanto pelo BirdNET-Pi quanto pelo eBird. * **Identifique Discrepâncias:** * Espécies detectadas pelo BirdNET-Pi, mas *não* relatadas no eBird dentro da área/período de busca. * Espécies relatadas no eBird, mas *não* detectadas pelo BirdNET-Pi dentro da área/período de busca. 4. **Interpretação:** * Considere fatores que podem explicar as discrepâncias: * **Erros do BirdNET-Pi:** Identificação incorreta pela IA. * **Habilidade do Observador do eBird:** Níveis variados de experiência entre os usuários do eBird. * **Comportamento das Aves:** As aves podem estar presentes, mas não vocalizando. * **Diferenças de Habitat:** As observações do eBird podem estar em habitats ligeiramente diferentes da sua localização do BirdNET-Pi. * **Raridade:** Aves raras podem não ser detectadas pelo BirdNET-Pi. * **Alcance de Detecção:** O BirdNET-Pi tem um alcance de detecção limitado. **Exemplos de Linguagem Natural (Como você poderia formular suas consultas/análises)** Aqui estão exemplos de como você poderia expressar sua análise em linguagem natural: * "Para todas as detecções do BirdNET-Pi em 15 de julho de 2024, dentro de um raio de 1 quilômetro do meu dispositivo, compare as espécies detectadas com as listas de verificação do eBird enviadas no mesmo dia." * "Mostre-me todas as instâncias em que o BirdNET-Pi detectou um Cardeal-do-norte, mas nenhuma lista de verificação do eBird dentro de 500 metros e 2 horas dessa detecção relatou um Cardeal-do-norte." * "Quais espécies foram relatadas no eBird dentro de um raio de 2 quilômetros da minha localização do BirdNET-Pi durante o mês de junho que o BirdNET-Pi nunca detectou?" * "Calcule a porcentagem de vezes que o BirdNET-Pi e o eBird concordaram com a presença de Tordos-americanos dentro de uma janela de 1 dia e um raio de 5 quilômetros." * "Liste as 5 principais espécies mais frequentemente detectadas pelo BirdNET-Pi que *não* foram relatadas no eBird dentro de um raio de 1 quilômetro e uma janela de 1 hora." * "Analise a correlação entre a pontuação de confiança das detecções do BirdNET-Pi e a probabilidade de essas espécies serem relatadas no eBird dentro de um raio de 5 quilômetros." * "Identifique quaisquer espécies raras ou incomuns detectadas pelo BirdNET-Pi que não foram confirmadas por observações do eBird na área circundante dentro de uma semana." Remember to adapt the code and analysis to your specific needs and data. Good luck!

JavaScript
PDF Reader MCP Server

PDF Reader MCP Server

Fornece ferramentas para ler e extrair texto de arquivos PDF, com suporte tanto para arquivos locais quanto para URLs.

Python
emqx-mcp-server

emqx-mcp-server

Uma implementação de servidor de Protocolo de Contexto de Modelo (MCP) que fornece interação com o broker MQTT EMQX.

Python
mcp-github

mcp-github

Servidor MCP do GitHub da Anthropic, só que melhor. Suporte para mais endpoints. Incluindo lançamentos e tags, revisões de pull requests, status, limite de taxa, gists, projetos, pacotes e até mesmo diffs de pull requests. Destinado a ser usado com a API MCP da MissionSquad para gerenciamento de segredos (ou seja, seu token de acesso).

TypeScript