🚀 Advanced MCP Server
A professional Model Context Protocol (MCP) server built with Python and FastMCP. This server extends AI capabilities by providing real-time data and local system access.
✨ Features
- 🌦️ Weather Alerts: Fetches active US weather alerts from the National Weather Service.
- 📰 News Search: Real-time news searching using the NewsAPI.
- 📁 Directory Explorer: Allows the AI to list and explore local system directories safely.
- 🔐 Secure Secrets: Uses
.envfor safe API key management.
🛠️ Getting Started
Prerequisites
- Python 3.10+
- uv (Recommended)
Installation
- Clone the repository:
git clone https://github.com/Rahii123/mcp.git cd mcp - Install dependencies:
uv sync
Setup
Create a .env file in the root directory and add your NewsAPI key:
NEWS_API_KEY=your_actual_key_here
🚀 Running the Server
Run directly with uv:
uv run server.py
🧪 Testing Your Server
We have provided two separate clients for testing:
🏠 1. Local Testing (Stdio)
Use this when you are developing on your own machine.
uv run client_local.py
This starts the server as a background process and communicates directly.
🌐 2. Online Testing (SSE)
Use this after you have deployed your server to the web (e.g., Railway).
uv run client_online.py
This asks for your deployment URL and connects over the internet.
☁️ Deployment to Railway (Step-by-Step)
1. Push to GitHub
Ensure all your changes are committed and pushed to your GitHub repository:
git add .
git commit -m "Prepare for deployment"
git push origin main
2. Connect to Railway
- Go to Railway.app and log in.
- Click + New Project > Deploy from GitHub repo.
- Select your
mcprepository.
3. Configure the Service
- Environment Variables:
- Go to the Variables tab in Railway.
- Add
NEWS_API_KEY:(Your actual NewsAPI Key)
- Start Command:
- Railway should automatically detect
pyproject.toml, but if needed, set the start command to:uv run server.py
- Railway should automatically detect
- Networking:
- Railway will automatically detect the port from the
$PORTenvironment variable. Ensure yourserver.pyis usingmcp.run(transport='sse')(I've already configured this for you).
- Railway will automatically detect the port from the
4. Fetch your URL
Once the build is finished, Railway will provide a public URL (e.g., https://mcp-production.up.railway.app).
The MCP endpoint will be at: https://your-app-url.up.railway.app/sse