Skip to main content
Glama
praveen-radakirouchenane

remote-mcp-fastapi

README.md
# Remote - MCP Server using FAST API

A FastMCP server that exposes news tools powered by the GNews API, plus a mocked email MCP toolset.

## What this project does

This server provides two MCP tool groups:

- `news` via `news_mcp.py`
- `email` via `email_mcp.py`

The `news` MCP service exposes:

- `search_news(...)` to search articles by keyword and filters
- `top_headlines(...)` to fetch current top stories by category

The `email` MCP service exposes:

- `get_emails()` to return mocked email data
- `write_email(recipient, subject, body)` to simulate sending an email

The FastAPI application mounts the MCP tools at:

- `/news` for the news MCP server
- `/email` for the email MCP server

## Requirements

- Python 3.14+
- `uv`
- A GNews API key

## Setup

1. Install dependencies

   ```bash
   uv sync
   ```

2. Create a `.env` file in the project root with your API key:

   ```env
   GNEWS_API_KEY=your_gnews_api_key_here
   ```

   If an existing `.env` file is present, the project will load it automatically from `news_mcp.py`.

3. Start the server

   ```bash
   uv run python main.py
   ```

The server runs with the `streamable-http` transport.

## Available tools

### `search_news`

Search news articles with filters such as language, country, keywords, date range, and sorting.

Example:

```python
search_news(q="OpenAI", lang="en", country="us", max=5)
```

### `top_headlines`

Get top headlines for a category such as `general`, `business`, `technology`, `health`, and more.

Example:

```python
top_headlines(category="technology", country="us", max=5)
```

## Debugging with MCP Inspector

1. Start the Inspector:

   ```bash
   npx @modelcontextprotocol/inspector
   ```

2. Connect using the `streamable-http` transport.

3. Use the server URL:

   ```text
   http://127.0.0.1:10000/news/mcp
   ```
      ```text
   http://127.0.0.1:10000/email/mcp
   ```

If your local port differs, adjust the URL accordingly.

## VS Code MCP configuration

You can connect this server to VS Code by adding a configuration similar to the following to your MCP settings:

```json
{
  "servers": {
    "news-mcp-server": {
      "type": "http",
      "url": "http://127.0.0.1:10000/news/mcp"
    }
  }
}
```

## Troubleshooting

- Make sure `GNEWS_API_KEY` is set correctly in your `.env` file.
- Confirm the server is running before connecting from the inspector or VS Code.
- If the inspector cannot connect, verify that the server URL includes `/mcp`.