Skip to main content
Glama
README.md
# MCP Chat

MCP Chat is a command-line interface application that enables interactive chat capabilities with AI models through the Anthropic API. The application supports document retrieval, command-based prompts, and extensible tool integrations via the MCP (Model Context Protocol) architecture.

See [ARCHITECTURE.md](ARCHITECTURE.md) for diagrams of how `main.py`, `mcp_client.py`, `mcp_server.py`, and the `core/` modules fit together.

## Prerequisites

- Python 3.10+
- Anthropic API Key

## Setup

### Step 1: Configure the environment variables

1. Copy `.env.example` to `.env` in the project root and fill in the values:

```bash
cp .env.example .env
```

```
ANTHROPIC_API_KEY=""              # Your Anthropic API secret key
CLAUDE_MODEL="claude-sonnet-4-5"  # Model id to chat with
USE_UV=1                          # 1 to launch the MCP server via uv, 0 for plain python
```

`ANTHROPIC_API_KEY` and `CLAUDE_MODEL` are both required — the app exits at startup if either is empty.

### Step 2: Install dependencies

#### Option 1: Setup with uv (Recommended)

[uv](https://github.com/astral-sh/uv) is a fast Python package installer and resolver.

1. Install uv, if not already installed:

```bash
pip install uv
```

2. Create and activate a virtual environment:

```bash
uv venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
```

3. Install dependencies:

```bash
uv pip install -e .
```

4. Run the project

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

#### Option 2: Setup without uv

1. Create and activate a virtual environment:

```bash
python -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
```

2. Install dependencies:

```bash
pip install anthropic python-dotenv prompt-toolkit "mcp[cli]==1.8.0"
```

3. Run the project

```bash
python main.py
```

## Usage

### Basic Interaction

Simply type your message and press Enter to chat with the model.

### Document Retrieval

Use the @ symbol followed by a document ID to include document content in your query:

```
> Tell me about @deposition.md
```

### Commands

Use the / prefix to execute prompts defined in the MCP server. Each command takes a document id:

```
> /format deposition.md
```

Commands will auto-complete when you press Tab. `mcp_server.py` currently defines one prompt, `format`.

## Development

### Adding New Documents

Edit the `mcp_server.py` file to add new documents to the `docs` dictionary.

### Adding New MCP Servers

Pass additional server scripts as arguments; each is launched as its own MCP client and its tools are merged into the tool set offered to the model:

```bash
uv run main.py path/to/other_server.py
```

### Linting and Typing Check

There are no lint or type checks wired into CI. To lint locally:

```bash
uvx ruff check .
```

TDQS

A3.6/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have completely distinct purposes: one reads document content, the other edits by replacing text. There is zero overlap or ambiguity between them.

Naming Consistency4/5

Both tools follow a verb_noun pattern (read_doc_contents, edit_document), but the noun forms differ slightly ('doc_contents' vs 'document'). This minor inconsistency doesn't hinder readability.

Tool Count3/5

With only two tools, the server feels thin for a document manipulation domain. While the narrow focus is defensible, the count is below the typical 3-15 range and borders on insufficient.

Completeness3/5

The server provides read and edit (replace) operations, but lacks create, delete, list, or other common document lifecycle operations. These gaps could be worked around but represent notable missing functionality.

Maintenance

ActivitySlowing
ResponsivenessNo issues