Skip to main content
Glama
ed-lin12

Competitive Intelligence MCP Server

by ed-lin12
README.md
# Competitive Intelligence MCP Server

A Python MCP server that exposes structured competitive intelligence data as governed tools, connected to Replit Agent as the interface. A seller types a natural language prompt and gets formatted sales collateral on demand from a single source of truth.

## What It Does

- Exposes two MCP tools: `get_competitor_profile` and `list_available_profiles`
- Every tool call is logged with timestamp, request ID, tool name, competitor queried, and hit/miss status
- Admin dashboard shows hits, misses, content gaps, and data freshness
- API key authentication enforced at the middleware layer before any request reaches the application

## Stack

- Python 3.11
- Starlette (async web framework)
- Anthropic MCP SDK (Streamable HTTP transport)
- uvicorn (ASGI web server)

## Project Structure

```
artifacts/
├── api-server/          # Replit routing layer (artifact.toml)
└── mcp-server/
    ├── server.py        # Entire application
    └── data/
        ├── cursor.json
        ├── lovable.json
        ├── replit.json
        └── audit.log
```

## Running Locally

Install dependencies:

```bash
cd artifacts/mcp-server
pip install -r requirements.txt
```

Set environment variables:

```bash
export MCP_API_KEY=your_api_key_here
export ADMIN_KEY=your_admin_key_here
```

Start the server:

```bash
python server.py
```

Server runs on port 8000 by default.

## Endpoints

| Endpoint | Auth | Description |
|---|---|---|
| `/mcp/` | X-API-Key header | MCP tool endpoint |
| `/mcp/health` | None | Health check |
| `/admin?key=ADMIN_KEY` | Query param | Admin dashboard |

## MCP Tools

**`get_competitor_profile`**
Fetches the full competitive intelligence profile for a named competitor. Pass the competitor name as stated by the user -- the server handles normalization.

**`list_available_profiles`**
Lists all available competitor profiles with last-updated timestamps. Call this first when the competitor name is uncertain or ambiguous.

## Environment Variables

| Variable | Description |
|---|---|
| `MCP_API_KEY` | Required. Enforced on all `/mcp/` requests via X-API-Key header |
| `ADMIN_KEY` | Required. Query param auth for the admin dashboard |
| `PORT` | Optional. Defaults to 8000 |