Skip to main content
Glama
Straider2

Protheus Chat MCP Server

by Straider2
README.md
# Protheus Chat MCP Server

MCP (Model Context Protocol) server that exposes a knowledge base search tool
for **TOTVS Protheus ERP**. Uses **pgvector** for vector similarity search,
**OpenAI** (`text-embedding-3-small`) for question embeddings, and
**Cohere** (`rerank-v3.5`) for result reranking.

## Quick Start

```bash
git clone https://github.com/Straider2/protheus-mcp.git
cd protheus-mcp
cp .env.example .env
# edit .env with your credentials
uv pip install -e .
mcp-server-protheus
```

Or run remotely via SSE:

```json
{
  "mcpServers": {
    "protheus": {
      "url": "https://mcp-protheus.yourdomain.com/sse"
    }
  }
}
```

## Configuration

| Variable | Default | Required |
|---|---|---|
| `PGHOST` | `localhost` | Database host |
| `PGPORT` | `5433` | Database port |
| `PGUSER` | — | Database user |
| `PGDATABASE` | — | Database name |
| `PGPASSWORD` | — | Database password |
| `OPENAI_API_KEY` | — | OpenAI API key (embeddings) |
| `COHERE_API_KEY` | — | Cohere API key (reranking) |

Copy `.env.example` to `.env` and fill in your values.

## Installation

### Local (stdio)

```bash
uv pip install -e .
mcp-server-protheus
```

Available commands:
- `mcp-server-protheus` — stdio MCP server (Claude Desktop, Cursor)
- `mcp-server-protheus-sse` — SSE/HTTP server (remote access)
- `protheus-mcp` — alias for stdio

### Docker (SSE)

```bash
docker compose -f docker-compose.yml up -d protheus-mcp-sse
```

The server listens on `http://localhost:8092/sse`.

## Usage

### Claude Desktop

Add to `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "protheus": {
      "command": "uv",
      "args": ["run", "mcp-server-protheus"]
    }
  }
}
```

### Remote via SSE URL

```json
{
  "mcpServers": {
    "protheus": {
      "url": "https://mcp-protheus.yourdomain.com/sse"
    }
  }
}
```

### Available Tool

**`protheus_search(question: str)`** — Search the Protheus FAQ knowledge base.

## Architecture

```
User Question → OpenAI Embedding → pgvector Cosine Search → Cohere Rerank → Results
```

The server connects **read-only** to PostgreSQL/pgvector.

## Testing

```bash
uv run pytest tests/ -v
```

All tests use mocked connections — no real credentials needed.

## Project Structure

```
protheus-mcp/
├── .env.example
├── pyproject.toml
├── README.md
├── src/protheus_mcp/
│   ├── __init__.py
│   ├── search.py      # pgvector search + Cohere rerank
│   └── server.py      # MCP server (stdio + SSE)
└── tests/
    ├── conftest.py
    └── test_server.py
```

## License

MIT

TDQS

B3.2/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no possibility of ambiguity or confusion between different tools.

Naming Consistency5/5

A single tool enforces perfect naming consistency; there is no pattern to conflict.

Tool Count3/5

One tool is borderline; for a FAQ knowledge base, a search tool alone may be insufficient for full interaction (e.g., retrieving full answers or browsing categories).

Completeness3/5

The tool covers search but lacks complementary operations like retrieving detailed results or listing topics, leaving notable gaps for a comprehensive FAQ toolset.

Maintenance

ActivityStale
ResponsivenessNo issues