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.
- Exposes two MCP tools:
get_competitor_profileandlist_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
- Python 3.11
- Starlette (async web framework)
- Anthropic MCP SDK (Streamable HTTP transport)
- uvicorn (ASGI web server)
artifacts/
├── api-server/ # Replit routing layer (artifact.toml)
└── mcp-server/
├── server.py # Entire application
└── data/
├── cursor.json
├── lovable.json
├── replit.json
└── audit.log
Install dependencies:
cd artifacts/mcp-server
pip install -r requirements.txtSet environment variables:
export MCP_API_KEY=your_api_key_here
export ADMIN_KEY=your_admin_key_hereStart the server:
python server.pyServer runs on port 8000 by default.
| Endpoint | Auth | Description |
|---|---|---|
/mcp/ |
X-API-Key header | MCP tool endpoint |
/mcp/health |
None | Health check |
/admin?key=ADMIN_KEY |
Query param | Admin dashboard |
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.
| 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 |