Discover Awesome MCP Servers

Extend your agent with 16,230 capabilities via MCP servers.

All16,230
Financial Analysis MCP Server

Financial Analysis MCP Server

Espejo de

Weather MCP Server

Weather MCP Server

Okay, here's a sample MCP (MicroConfig Protocol) server implementation concept for fetching weather forecasts, along with explanations to help you understand the key parts. I'll provide a Python example, as it's commonly used for this kind of task due to its readability and available libraries. **Conceptual Overview** 1. **MCP Server:** This is the core component. It listens for incoming MCP requests, parses them, and responds with the requested data. 2. **Weather Data Source:** This is where you get the actual weather information. This could be: * A public weather API (e.g., OpenWeatherMap, AccuWeather, WeatherAPI.com). This is the most common and practical approach. * A local weather station (if you have one). * A database of weather data. 3. **MCP Request Handling:** The server needs to understand the format of the incoming MCP requests. Typically, this involves: * **Parsing:** Extracting the relevant parameters from the request (e.g., location, units). * **Validation:** Ensuring the parameters are valid (e.g., location is a valid city, units are supported). * **Data Fetching:** Using the parameters to query the weather data source. * **Response Formatting:** Structuring the weather data into a valid MCP response. **Python Example (using `Flask` for the MCP server and `requests` for the API call)** ```python from flask import Flask, request, jsonify import requests import os # For accessing environment variables app = Flask(__name__) # Replace with your actual API key from OpenWeatherMap or another provider WEATHER_API_KEY = os.environ.get("WEATHER_API_KEY") # Get API key from environment variable if not WEATHER_API_KEY: print("Error: WEATHER_API_KEY environment variable not set.") exit() WEATHER_API_URL = "https://api.openweathermap.org/data/2.5/weather" # Example: OpenWeatherMap def get_weather_data(city, units="metric"): """Fetches weather data from the OpenWeatherMap API.""" params = { "q": city, "appid": WEATHER_API_KEY, "units": units, } try: response = requests.get(WEATHER_API_URL, params=params) response.raise_for_status() # Raise HTTPError for bad responses (4xx or 5xx) data = response.json() return data except requests.exceptions.RequestException as e: print(f"Error fetching weather data: {e}") return None def format_weather_response(data): """Formats the weather data into a simplified MCP-like response.""" if not data: return None try: temperature = data["main"]["temp"] description = data["weather"][0]["description"] humidity = data["main"]["humidity"] wind_speed = data["wind"]["speed"] response = { "status": "ok", "temperature": temperature, "description": description, "humidity": humidity, "wind_speed": wind_speed, } return response except KeyError as e: print(f"Error formatting weather data: Missing key {e}") return None @app.route("/weather", methods=["GET"]) def weather_endpoint(): """Handles the /weather endpoint for MCP requests.""" city = request.args.get("city") units = request.args.get("units", "metric") # Default to metric if not city: return jsonify({"status": "error", "message": "City parameter is required"}), 400 weather_data = get_weather_data(city, units) if not weather_data: return jsonify({"status": "error", "message": "Failed to fetch weather data"}), 500 formatted_response = format_weather_response(weather_data) if not formatted_response: return jsonify({"status": "error", "message": "Failed to format weather data"}), 500 return jsonify(formatted_response) if __name__ == "__main__": app.run(debug=True, host="0.0.0.0", port=5000) ``` Key improvements and explanations: * **Error Handling:** Includes `try...except` blocks to handle potential errors during API requests and data formatting. This is *crucial* for a robust server. Specifically, it catches `requests.exceptions.RequestException` which covers network errors, timeouts, and HTTP errors. It also catches `KeyError` in the `format_weather_response` function, which can occur if the API response format changes. * **API Key from Environment Variable:** The `WEATHER_API_KEY` is now read from an environment variable. **Never hardcode API keys directly into your code!** This is a security risk. Environment variables are a much safer way to manage sensitive information. The code also checks if the environment variable is set and exits if it's not. * **`response.raise_for_status()`:** This line is very important. It checks the HTTP status code of the API response. If the status code indicates an error (e.g., 404 Not Found, 500 Internal Server Error), it will raise an `HTTPError` exception, which will be caught by the `except` block. This allows you to handle API errors gracefully. * **Clearer Error Messages:** The error messages in the `jsonify` responses are more informative, making it easier to debug problems. * **`units` Parameter:** The `weather_endpoint` function now accepts an optional `units` parameter, allowing the client to specify whether they want the temperature in Celsius or Fahrenheit (or other units supported by the API). It defaults to "metric" (Celsius). * **`format_weather_response` Function:** This function encapsulates the logic for formatting the raw weather data from the API into a simplified dictionary that is returned as the JSON response. This makes the code more modular and easier to maintain. * **`host="0.0.0.0"`:** This makes the server accessible from other machines on the network. If you only want to access it from your local machine, you can use `host="127.0.0.1"`. * **Comments:** Added more comments to explain the code. * **JSON Responses:** Uses `jsonify` to return JSON responses, which is the standard for web APIs. * **Status Codes:** Returns appropriate HTTP status codes (e.g., 400 for bad request, 500 for internal server error) to provide more information to the client. **How to Run:** 1. **Install Dependencies:** ```bash pip install Flask requests ``` 2. **Set Environment Variable:** ```bash export WEATHER_API_KEY="YOUR_OPENWEATHERMAP_API_KEY" # Replace with your actual key ``` (Or set it in your system's environment variables.) 3. **Run the Script:** ```bash python your_script_name.py ``` 4. **Test the Endpoint:** Open your web browser or use `curl` to access the endpoint: ``` http://localhost:5000/weather?city=London http://localhost:5000/weather?city=New York&units=imperial ``` **Important Considerations for a Real MCP Implementation:** * **MCP Specification:** This example is a *simplified* MCP server. A true MCP implementation would need to strictly adhere to the MCP specification, including the required headers, data formats, and error handling. You'd likely need to use a dedicated MCP library or implement the protocol parsing and serialization yourself. * **Security:** Implement proper authentication and authorization to protect your server from unauthorized access. Consider using HTTPS to encrypt communication. * **Scalability:** For high-traffic applications, consider using a more scalable web server (e.g., Gunicorn, uWSGI) and a load balancer. You might also want to cache weather data to reduce the load on the weather API. * **Rate Limiting:** Be aware of the rate limits imposed by the weather API you are using. Implement rate limiting in your server to avoid being blocked. * **Data Validation:** Thoroughly validate all input parameters to prevent injection attacks and other security vulnerabilities. * **Configuration:** Use a configuration file or environment variables to manage settings such as the API key, API URL, and port number. * **Logging:** Implement logging to track requests, errors, and other important events. This will help you debug problems and monitor the performance of your server. * **Testing:** Write unit tests and integration tests to ensure that your server is working correctly. **Spanish Translation of Key Concepts** * **MCP Server:** Servidor MCP * **Weather Data Source:** Fuente de datos meteorológicos * **API Key:** Clave de API * **Environment Variable:** Variable de entorno * **Endpoint:** Punto final * **Request:** Solicitud * **Response:** Respuesta * **Error Handling:** Manejo de errores * **Rate Limiting:** Limitación de velocidad * **Authentication:** Autenticación * **Authorization:** Autorización * **Scalability:** Escalabilidad * **Load Balancer:** Balanceador de carga * **Caching:** Almacenamiento en caché * **Data Validation:** Validación de datos * **Logging:** Registro (de eventos) This comprehensive example and explanation should give you a solid foundation for building your own MCP weather forecast server. Remember to adapt it to your specific needs and the requirements of the MCP protocol you are using. Good luck!

glif-mcp

glif-mcp

Espejo de

NSAF MCP Server

NSAF MCP Server

Espejo de

MCP Server Playwright

MCP Server Playwright

MCP Server Playwright - Un servicio de automatización de navegador para Claude Desktop

Perplexity MCP Server

Perplexity MCP Server

An MCP server for the Perplexity for use with Claude Code and Claude Desktop, giving you enhanced search and reasoning capabilties.

🏆 LinkedIn DI MCP Server

🏆 LinkedIn DI MCP Server

Audiense Digital Intelligence LinkedIn MCP Server es un servidor basado en el Protocolo de Contexto de Modelo (MCP) que permite a Claude y a otros clientes compatibles con MCP interactuar con tu cuenta de DI LinkedIn de Audiense.

ntfy-mcp-server

ntfy-mcp-server

simple_mcp_server

simple_mcp_server

Test Simple MCP server

Google Drive & Sheets MCP Server

Google Drive & Sheets MCP Server

A Model Context Protocol (MCP) server built in Rust for interacting with Google Drive and Google Sheets.

Simple MCP Server Example

Simple MCP Server Example

A simple example of a Model Context Protocol Server implementation

MCP Server Readability Parser (Python / FastMCP)

MCP Server Readability Parser (Python / FastMCP)

Espejo de

Git

Git

Tools to read, search, and manipulate Git repositories

gameanalytics-server MCP Server

gameanalytics-server MCP Server

GameAnalytics MCP server for Model Context Protocol integration

FirstCycling MCP Server

FirstCycling MCP Server

Este es un servidor de Protocolo de Contexto de Modelo (MCP) que proporciona datos de ciclismo profesional de FirstCycling. Te permite recuperar información sobre ciclistas profesionales, resultados de carreras y más.

Ghost MCP Server

Ghost MCP Server

Mirror of

ConnectWise Manage MCP Server

ConnectWise Manage MCP Server

A Model Context Protocol (MCP) server for ConnectWise Manage API integration

Gmail MCP Server

Gmail MCP Server

Mirror of

dice-mcp-server

dice-mcp-server

Airbnb MCP Server (Enhanced)

Airbnb MCP Server (Enhanced)

Enhanced MCP server for Airbnb search and listing details

MCP Server - Offers Prototype

MCP Server - Offers Prototype

AI Federation Network

AI Federation Network

Esta implementación sigue la especificación oficial de MCP, incluyendo el correcto encuadre de mensajes, la implementación de la capa de transporte y la gestión completa del ciclo de vida del protocolo. Proporciona una base para construir sistemas MCP federados que pueden escalar a través de múltiples servidores manteniendo los requisitos de seguridad y estandarización.

backlog-mcp-server MCP Server

backlog-mcp-server MCP Server

Confluence MCP Server

Confluence MCP Server

Confluence MCP server providing API tools for Atlassian Confluence operations including page management, space handling, and content search with built-in rate limiting and error handling.

PubMed MCP Server

PubMed MCP Server

🔍 Habilite a los asistentes de IA para buscar, acceder y analizar artículos de PubMed a través de una interfaz MCP sencilla.

LocalMind

LocalMind

LocalMind is an local LLM Chat App fully compatible with the Model Context Protocol. It uses Azure OpenAI as a LLM backend and you can connect it to all MCP Servers out there.

MCP Servers for Cursor AI - README

MCP Servers for Cursor AI - README

He recopilado mucha información sobre servidores MCP (Protocolo de Contexto del Modelo) con integración a Cursor AI y Claude Desktop. De esta manera, puedes agregar esta carpeta a tu IDE preferido para que tenga información de indexación contextual disponible y así comprender cómo crear servidores MCP correctamente.

ChatSum

ChatSum

Okay, I understand. Since I don't have access to your personal chat messages (that would be a privacy violation!), I can't query and summarize *your* specific chats. However, I can demonstrate how I would approach this task if I *did* have access to chat data. I'll create a hypothetical scenario and then show you how I would query and summarize it in Spanish. **Hypothetical Scenario:** Let's say I had access to a chat log between you and a friend planning a trip to Mexico. The chat log contains messages about: * Flights * Accommodation (hotels/Airbnb) * Activities (visiting ruins, beaches, restaurants) * Budget **Example Chat Log (in English - I would have the actual data in English):** * **You:** "Hey! Thinking about Mexico in November. What do you think?" * **Friend:** "Sounds amazing! Where in Mexico?" * **You:** "Maybe Cancun or Tulum? Flights are pretty cheap to Cancun." * **Friend:** "Cancun is good. Lots of resorts. Let's check flights on Skyscanner." * **You:** "Okay, I'm seeing roundtrip flights for around $400." * **Friend:** "Not bad! Let's aim for something under $500. What about hotels?" * **You:** "Hotels in Cancun are pricey. Maybe an Airbnb in Tulum would be cheaper?" * **Friend:** "Good idea. I'll look at Airbnbs. What do you want to do besides relax on the beach?" * **You:** "Definitely want to see some Mayan ruins. And eat lots of tacos!" * **Friend:** "Agreed! Chichen Itza is a must-see. And we should try some authentic Mexican food." * **You:** "Okay, so flights under $500, Airbnb in Tulum, Chichen Itza, and tacos. What's our budget?" * **Friend:** "Let's say $1500 each for the whole trip, including flights." **Query and Summarization (in Spanish):** Here's how I would approach querying and summarizing this data in Spanish: **1. Queries (Ejemplos de Consultas):** * **"What is the proposed destination?"** (¿Cuál es el destino propuesto?) * **"What is the budget per person?"** (¿Cuál es el presupuesto por persona?) * **"What activities are planned?"** (¿Qué actividades están planeadas?) * **"What is the plan for accommodation?"** (¿Cuál es el plan para el alojamiento?) * **"What is the target price range for flights?"** (¿Cuál es el rango de precios objetivo para los vuelos?) **2. Summary (Resumen):** "El chat trata sobre la planificación de un viaje a México en noviembre, posiblemente a Cancún o Tulum. El presupuesto es de $1500 por persona, incluyendo los vuelos. Están buscando vuelos de ida y vuelta por menos de $500. Están considerando alojarse en un Airbnb en Tulum para ahorrar dinero. Las actividades planeadas incluyen visitar ruinas mayas, como Chichén Itzá, y comer tacos. En resumen, están organizando un viaje económico a México centrado en la cultura y la gastronomía." **(Translation: "The chat is about planning a trip to Mexico in November, possibly to Cancun or Tulum. The budget is $1500 per person, including flights. They are looking for roundtrip flights for under $500. They are considering staying in an Airbnb in Tulum to save money. Planned activities include visiting Mayan ruins, such as Chichen Itza, and eating tacos. In summary, they are organizing an affordable trip to Mexico focused on culture and gastronomy.")** **Explanation of the Process:** * **Data Access (Hypothetical):** I would need access to the raw chat log data. * **Natural Language Processing (NLP):** I would use NLP techniques to: * **Identify key entities:** Locations (Cancun, Tulum, Chichen Itza), amounts ($400, $500, $1500), activities (visiting ruins, eating tacos), etc. * **Understand the intent:** Determine what the users are trying to achieve (e.g., find cheap flights, decide on accommodation). * **Extract relevant information:** Pull out the specific details related to the queries. * **Translation:** I would use a translation model to translate the queries and the summary into Spanish. * **Summarization:** I would use summarization techniques to create a concise and informative summary of the chat log. **Important Considerations:** * **Privacy:** Accessing and processing personal chat data requires strict adherence to privacy regulations. I am programmed to respect user privacy and would never access or share personal information without explicit consent and proper authorization. * **Context:** Understanding the context of the chat is crucial for accurate querying and summarization. * **Ambiguity:** Natural language can be ambiguous. I would need to use sophisticated NLP techniques to resolve ambiguity and ensure that the queries and summary are accurate. **In summary, while I can't access your personal chat messages, I can demonstrate the process of querying and summarizing chat data in Spanish using a hypothetical scenario and NLP techniques.** If you have any other questions about how I would approach this task, feel free to ask!

aoirint_mcping_server

aoirint_mcping_server

Headless status monitor with HTTP JSON API for Minecraft Bedrock/Java server

MCP Explorer UI

MCP Explorer UI

an open-source web application for exploring and visualizing the MCP Servers