Skip to main content
Glama
README.md
# Local MCP Server with Ollama

A local Python project that connects an Ollama language model to an MCP server. The model can discover the server's tools, decide when to call one, receive the result, and produce a concise final response.

```mermaid
flowchart TD
    U["User question"] --> C["Python MCP client"]
    C --> O["Ollama llama3.2:3b"]
    O --> C
    C --> S["Local MCP server"]
    S --> D["Student JSON data"]
```

## Available tools

| Tool | Purpose |
|---|---|
| `add_numbers` | Adds two explicitly supplied numbers |
| `get_student_info` | Returns the built-in demonstration student profile |
| `search_students` | Searches `files/students.json` by name and requested field |

## Requirements

- Python 3.11+
- Ollama installed and running
- Ollama model `llama3.2:3b`

## Windows setup

```powershell
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
ollama pull llama3.2:3b
python client.py
```

The client launches `server.py` automatically through the active Python interpreter. You do not need to start the server in a separate terminal.

## Example questions

- `What is 10 + 20?`
- `Tell me about Pranay.`
- `Where is Ananya studying?`
- `What is Saranya studying?`

## Project structure

```text
mcp-server/
├── client.py
├── server.py
├── files/
│   └── students.json
├── tests/
│   └── test_server.py
└── requirements.txt
```

## Tool-result fix

Ollama expects a tool-result message to include the executed `tool_name`. The client includes this field and passes the available tool definitions into the follow-up call, allowing the model to produce the final response after an MCP tool runs.

## Data note

`files/students.json` is demonstration data. Replace it with fictional or consented data before using this project publicly or in production.