Skip to main content
Glama
okochansky

Taboola API MCP Server

by okochansky
README.md
# Taboola API MCP Server

A flexible MCP (Model Context Protocol) server with fetchRecommendations functionality. 
Supports both local (STDIO) and remote (HTTP) deployment modes.

## Setup

1. Install dependencies:
```bash
pip install -r requirements.txt
```

2. Activate virtual environment (if using one):
```bash
source .venv/bin/activate
```

## Deployment Options

### Local Mode (STDIO Transport)

Perfect for local development and testing with MCP Inspector:

```bash
# Default mode - runs locally with STDIO transport
python server.py

# Explicitly specify local mode
python server.py --mode local
```

### Remote Mode (HTTP Server)

Deploy as a remote HTTP server accessible over the network:

```bash
# Run as HTTP server on default port 8000
python server.py --mode remote

# Specify custom host and port
python server.py --mode remote --host 0.0.0.0 --port 3000

# Using environment variables
export MCP_MODE=remote
export MCP_HOST=0.0.0.0
export MCP_PORT=8000
python server.py
```

## Configuration Options

### Command Line Arguments

- `--mode`: Server mode (`local` or `remote`) - default: `local`
- `--host`: Host to bind to in remote mode - default: `0.0.0.0`
- `--port`: Port to bind to in remote mode - default: `8000`

### Environment Variables

- `MCP_MODE`: Server mode (`local` or `remote`)
- `MCP_HOST`: Host to bind to in remote mode
- `MCP_PORT`: Port to bind to in remote mode

Environment variables override command line arguments.

## Functions

### fetchRecommendations

Fetches recommendations for a given publisher using their API key via Taboola API.

**Parameters:**
- `publisher_name` (str): The name of the publisher
- `api_key` (str): The API key for authentication

**Returns:**
- `str`: JSON recommendations data from Taboola API

## Usage Examples

### Local Development with MCP Inspector

```bash
# Start server locally
python server.py

# In another terminal, run MCP Inspector
npx @modelcontextprotocol/inspector python server.py
```

### Remote Deployment

```bash
# Deploy as remote server
python server.py --mode remote --port 8000

# Server will be available at: http://your-server-ip:8000
# Connect using HTTP transport with MCP clients
```

### Production Deployment

For production, consider using environment variables:

```bash
export MCP_MODE=remote
export MCP_HOST=0.0.0.0
export MCP_PORT=8000
python server.py
```

Or with a process manager like PM2:

```bash
pm2 start server.py --name "taboola-mcp" -- --mode remote --port 8000
```

## Testing

Use the provided test script to verify functionality:

```bash
# Edit test_function.py with your credentials
python test_function.py
```

## Cloud Deployment

### Render Deployment

Deploy easily on Render cloud platform:

#### Option 1: Using Render.yaml (Recommended)

1. **Push your code to GitHub/GitLab**
2. **Connect to Render:**
   - Go to [Render Dashboard](https://render.com/)
   - Click "New" > "Blueprint"
   - Connect your repository
   - The `render.yaml` file will be automatically detected

3. **Deploy:**
   - Render will automatically build and deploy your MCP server
   - Your server will be available at: `https://your-app-name.onrender.com`

#### Option 2: Manual Render Setup

1. **Create a new Web Service on Render**
2. **Connect your repository**
3. **Configure the service:**
   - **Build Command:** `pip install -r requirements.txt`
   - **Start Command:** `python server.py --mode remote --host 0.0.0.0 --port $PORT`
   - **Environment Variables:**
     - `MCP_MODE=remote`
     - `MCP_HOST=0.0.0.0`
     - `PYTHON_VERSION=3.13.0`

4. **Deploy and get your URL**

### Docker Deployment

For any Docker-compatible platform:

```bash
# Build and run locally
docker build -t taboola-mcp-server .
docker run -p 8000:8000 taboola-mcp-server

# Or use docker-compose
docker-compose up -d
```

### Other Cloud Platforms

The server is compatible with:
- **Heroku**: Use `Procfile` with `web: python server.py --mode remote --port $PORT`
- **Railway**: Deploy directly from GitHub with automatic detection
- **DigitalOcean App Platform**: Use the provided `docker-compose.yml`
- **AWS/GCP/Azure**: Deploy using Docker or direct Python deployment

## Security Notes

- In remote mode, the server binds to `0.0.0.0` by default (all interfaces)
- Consider using a reverse proxy (nginx, Apache) for production deployments
- Ensure proper firewall rules are in place for remote access
- API keys are passed as parameters - ensure secure transmission (HTTPS recommended)
- Cloud platforms like Render automatically provide HTTPS endpoints