Advanced MCP Server
This Advanced MCP Server provides AI assistants with real-time data access and local system exploration capabilities through three main tools:
๐ฆ๏ธ Weather Alerts - Fetch active weather alerts for any US state using two-letter state codes (e.g., 'CA', 'NY', 'TX') via the National Weather Service
๐ฐ News Search - Search for recent news articles on specific topics using NewsAPI with real-time results
๐ Directory Explorer - List and explore local filesystem directories safely, defaulting to the current directory
Deployment & Testing: Can be deployed to cloud services like Railway with secure API key management via environment variables. Includes both local stdio testing and online SSE testing options for different development scenarios.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Advanced MCP Servershow me active weather alerts for California"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
๐ 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.
Related MCP server: Weather MCP Server
๐ ๏ธ Getting Started
Prerequisites
Python 3.10+
uv (Recommended)
Installation
Clone the repository:
git clone https://github.com/Rahii123/mcp.git cd mcpInstall 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.pyThis 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.pyThis 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 main2. 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
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).
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
Available Tools
3 toolsget_weather_alertsB
Fetch active weather alerts for a given US state (e.g., 'CA', 'NY').
| Name | Required | Description | Default |
|---|---|---|---|
| state | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool fetches data, implying a read-only operation, but doesn't cover critical aspects like rate limits, error handling, authentication needs, or what 'active' means (e.g., time frame). For a tool with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that efficiently conveys the tool's purpose and parameter usage. It's front-loaded with the main action and includes an example without unnecessary details, making it easy to parse and apply.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one parameter) and the presence of an output schema (which handles return values), the description is minimally adequate. However, it lacks behavioral details (e.g., rate limits, error cases) and usage guidelines, which are important for a tool with no annotations, leaving some gaps in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful context beyond the input schema: it specifies that the 'state' parameter should be a US state abbreviation (e.g., 'CA', 'NY'), which isn't in the schema (0% coverage). Since there's only one parameter, this adequately compensates, making it clear how to use the tool effectively.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('fetch') and resource ('active weather alerts') with geographic scope ('for a given US state'). It specifies the format of the state parameter ('e.g., 'CA', 'NY''), which adds helpful context. However, it doesn't explicitly differentiate from sibling tools like 'list_directory' or 'search_news', which are unrelated, so it doesn't earn a perfect 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any prerequisites, limitations (e.g., US-only), or suggest other tools for different needs (e.g., historical alerts or international data). This leaves the agent without context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_directoryB
List the contents of a local directory. Default is current directory.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | . |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the default directory but doesn't cover important traits like read-only vs. destructive behavior, error handling, permissions required, or output format. This is a significant gap for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded with a single, efficient sentence that states the purpose and default behavior without any waste. Every word earns its place, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (1 parameter, no annotations, but has an output schema), the description is minimally adequate. It covers the basic purpose and default parameter but lacks details on behavioral traits and usage context. The presence of an output schema helps, but more completeness is needed for a tool with no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning beyond the input schema by explaining the default value ('Default is current directory') for the 'path' parameter. Since schema description coverage is 0% and there's only one parameter, this compensates well, providing useful context that the schema alone doesn't offer.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('List') and resource ('contents of a local directory'), making it easy to understand what it does. However, it doesn't differentiate from sibling tools like 'get_weather_alerts' or 'search_news', which are unrelated, so it doesn't need to distinguish from them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides implied usage by mentioning the default behavior ('Default is current directory'), which suggests when to use it without specifying a path. However, it lacks explicit guidance on when to use this tool versus alternatives or any exclusions, leaving some gaps in usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_newsB
Search for recent news articles on a specific topic.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions 'recent news articles' but doesn't disclose behavioral traits like rate limits, authentication needs, result format, pagination, or time range defaults. This is a significant gap for a search tool with no structured safety hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It's appropriately sized and front-loaded, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (which handles return values), the description doesn't need to explain outputs. However, with no annotations and minimal parameter guidance, it's incomplete for a search tool that might have complexities like result limits or sorting. It's adequate but has clear gaps in behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description implies a 'query' parameter for the topic, but with 0% schema description coverage, it doesn't add meaning beyond the schema's basic type. It doesn't explain query syntax, examples, or constraints. Baseline is 3 since the schema covers the parameter minimally, but the description doesn't compensate for the lack of schema details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'search' and the resource 'recent news articles on a specific topic', making the purpose evident. However, it doesn't differentiate from sibling tools like 'get_weather_alerts' or 'list_directory', which are unrelated, so it doesn't need explicit distinction but could mention it's for news specifically versus other search functions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as other search tools or filtering options. It lacks context on prerequisites, timing, or exclusions, leaving the agent to infer usage based solely on the name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v1.0.0- First observed
get_weather_alerts - First observed
list_directory - First observed
search_news
TDQS
Scored across 3 tools
Each tool has a clearly distinct purpose: get_weather_alerts targets weather data for US states, list_directory handles local file system operations, and search_news retrieves news articles. There is no overlap in functionality or ambiguity between these tools.
The naming is mixed: get_weather_alerts and search_news follow a verb_noun pattern, but list_directory uses a verb_noun format that is slightly different in structure. While readable, the conventions are not fully consistent across all tools.
With only 3 tools, the server feels thin and under-scoped for an 'Advanced MCP Server', suggesting a lack of depth or comprehensive coverage. This low count may limit the server's utility for complex tasks.
The tool surface is severely incomplete, as the tools cover unrelated domains (weather, file system, news) without a coherent purpose. There are significant gaps in each domain, such as no update or delete operations, making it hard for agents to perform full workflows.
Maintenance
Related MCP Connectors
US weather & geo for AI agents: forecasts, alerts, earthquakes, elevation, geocoding. No keys.
US weather & geo for AI agents: forecasts, alerts, earthquakes, elevation, geocoding. No keys.
Get US weather forecasts, active alerts, and current observations.
Web search, news, page retrieval, sitemaps, and trending topics through Search1API.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables AI assistants to access real-time US weather forecasts and alerts through the National Weather Service API.27 npmMIT
- FlicenseBqualityDmaintenanceProvides real-time US weather alerts and forecasts by integrating with the National Weather Service API. It enables AI assistants to fetch state-specific alerts and detailed local forecasts using geographic coordinates.21-
- FlicenseNot gradedqualityDmaintenanceProvides real-time weather alerts and forecasts from the National Weather Service for US locations, integrating with AI assistants via the Model Control Protocol.-
- FlicenseNot gradedqualityDmaintenanceProvides weather forecasts and alerts for US locations via the National Weather Service API, enabling AI assistants to deliver real-time weather information.9 npm-