MCP SQLite Demo
A demonstration of Model Context Protocol (MCP) with a SQLite server and LlamaIndex client integration.
Overview
This project showcases how to build and use an MCP server that exposes SQLite database operations as tools, and connect to it using a LlamaIndex-based client with Ollama LLM support.
Components
- server.py: MCP server that provides SQL tools for managing a SQLite database
- client.py: LlamaIndex client that connects to the MCP server and uses Ollama for natural language interactions
Features
- MCP server with SQLite integration
- Tool-based database operations (add_data, read_data)
- Natural language interface using LlamaIndex and Ollama
- Async support for both server and client
Prerequisites
- Python 3.8+
- Ollama installed and running
- llama3.2 model (or another model that supports tool calling)
Installation
- Clone this repository:
git clone https://github.com/ELISHA1994/mcp-llama-sqlite-bridge.git
cd mcp-llama-sqlite-bridge
- Create a virtual environment:
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
- Install dependencies:
pip install -r requirements.txt
- Pull the required Ollama model:
ollama pull llama3.2
Usage
Starting the MCP Server
In one terminal, start the MCP server:
python server.py --server_type=sse
The server will start on http://127.0.0.1:8000
and create a SQLite database (demo.db
) with a people
table.
Running the Client
In another terminal, run the client:
python client.py
The client will:
- Connect to the MCP server
- Display available tools
- Start an interactive session where you can use natural language to interact with the database
Example Interactions
Enter your message: Add a person named John Doe who is 30 years old and works as an Engineer
Agent: Data has been successfully added to the database.
Enter your message: Show me all people in the database
Agent: Here are all the people in the database:
1. John Doe, 30 years old, Engineer
Database Schema
The SQLite database contains a people
table with the following schema:
id
: INTEGER PRIMARY KEY AUTOINCREMENTname
: TEXT NOT NULLage
: INTEGER NOT NULLprofession
: TEXT NOT NULL
Available Tools
add_data
Adds new data to the people table using a SQL INSERT query.
Example:
INSERT INTO people (name, age, profession) VALUES ('Alice Smith', 25, 'Developer')
read_data
Reads data from the people table using a SQL SELECT query.
Example:
SELECT * FROM people WHERE age > 25
Troubleshooting
ModuleNotFoundError
If you encounter module import errors, ensure all dependencies are installed:
pip install -r requirements.txt
Ollama Model Error
If you get an error about the model not supporting tools, ensure you're using a model that supports function calling (like llama3.2, mistral, or qwen2.5-coder).
Connection Issues
Ensure the MCP server is running before starting the client.
License
MIT License