MCP Server Practice
This repository contains implementations of Model Context Protocol (MCP) servers for LinkedIn profile scraping and weather data retrieval. The MCP framework facilitates seamless integration and communication between AI services.
Overview
- LinkedIn Profile Scraper : Fetches LinkedIn profile data using the Fresh LinkedIn Profile Data API.
- Weather Data Service : Retrieves weather alerts and forecasts using the National Weather Service (NWS) API.
Prerequisites
- Python 3.7+
httpx
for asynchronous HTTP requests
python-dotenv
for environment variable management
mcp
for MCP server implementation
Installation
Clone the repository:
git clone https://github.com/mybarefootstory/MCP-Server-Practice-2.git
cd MCP-Server-Practice-2
Install dependencies:
pip install httpx python-dotenv mcp
Set up environment variables:
* Create a `.env` file in the root directory.
* Add your RapidAPI key:
RAPIDAPI_KEY=your_rapidapi_key_here
LinkedIn Profile Scraper
Description
Fetches LinkedIn profile data using the Fresh LinkedIn Profile Data API. The server is initialized with FastMCP
and listens for requests to retrieve profile information.
Code Snippet
from mcp.server.fastmcp import FastMCP
import httpx
import os
from dotenv import load_dotenv
load_dotenv()
RAPIDAPI_KEY = os.getenv("RAPIDAPI_KEY")
mcp = FastMCP("linkedin_profile_scraper")
async def get_linkedin_data(linkedin_url: str) -> dict:
# Fetch LinkedIn profile data
...
@mcp.tool()
async def get_profile(linkedin_url: str) -> str:
# Get LinkedIn profile data
...
if __name__ == "__main__":
mcp.run(transport="stdio")
Weather Data Service
Description
Retrieves weather alerts and forecasts using the NWS API. The server is initialized with FastMCP
and provides tools for fetching alerts and forecasts.
Code Snippet
from mcp.server.fastmcp import FastMCP
import httpx
mcp = FastMCP("weather")
async def make_nws_request(url: str) -> dict:
# Make a request to the NWS API
...
@mcp.tool()
async def get_alerts(state: str) -> str:
# Get weather alerts for a US state
...
@mcp.tool()
async def get_forecast(latitude: float, longitude: float) -> str:
# Get weather forecast for a location
...
if __name__ == "__main__":
mcp.run(transport='stdio')
Usage
- LinkedIn Profile Scraper : Run the server and use the
get_profile
tool to fetch LinkedIn data.
- Weather Data Service : Run the server and use the
get_alerts
and get_forecast
tools to retrieve weather information.