🎫 Customer Support MCP Server

PythonMCPSQLiteCursoruv

πŸ€– AI-Powered Customer Support MCP Server

Connect Cursor AI to a real SQLite database through Model Context Protocol (MCP).

🌟 Project Overview

The Customer Support MCP Server is a Python-based MCP server that allows an AI application such as Cursor to interact with a real SQLite database.

Instead of allowing the AI to directly execute SQL queries, the server exposes safe and well-defined business tools for customer support operations.

🎯 Main Goal

Demonstrate how an AI application can use MCP (Model Context Protocol) to:

  • 🎫 Create customer support tickets
  • πŸ” Retrieve existing tickets
  • πŸ”Ž Search tickets
  • ✏️ Update ticket information
  • πŸ’Ύ Store ticket data in SQLite
  • πŸ€– Allow Cursor AI to perform operations using natural language

πŸ—οΈ Architecture

                         πŸ‘€ USER
                           β”‚
                           β”‚ Natural Language
                           β–Ό
                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚    Cursor     β”‚
                    β”‚   AI Agent    β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜
                            β”‚
                            β”‚ MCP
                            β–Ό
                β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                β”‚ Customer Support MCP   β”‚
                β”‚        Server          β”‚
                β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
                β”‚ 🎫 create_ticket       β”‚
                β”‚ πŸ” get_ticket          β”‚
                β”‚ πŸ”Ž search_tickets      β”‚
                β”‚ ✏️ update_ticket       β”‚
                β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                             β”‚
                             β”‚ SQL
                             β–Ό
                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚     SQLite      β”‚
                    β”‚   support.db    β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
===================

πŸš€ Features

Feature	Description
🎫 Create Ticket	Create a new customer support ticket
πŸ” Get Ticket	Retrieve a ticket using its ID
πŸ”Ž Search Tickets	Search using keyword, email, status, or priority
✏️ Update Ticket	Update status, priority, or description
πŸ’Ύ SQLite	Persistent local database
πŸ€– Cursor	AI client for interacting with MCP
πŸ§ͺ MCP Inspector	Test and debug MCP tools
⚑ uv	Fast Python package/environment management
=======================

🧰 Technology Stack

Technology	Purpose
🐍 Python 3.12	Application development
πŸ”Œ MCP	AI ↔ Tool communication
πŸ—„οΈ SQLite	Database
πŸ€– Cursor	AI/MCP client
⚑ uv	Python environment & dependency management
πŸ§ͺ MCP Inspector	MCP server testing
=====================

πŸ“ Project Structure

customer_support_mcp/
β”‚
β”œβ”€β”€ πŸ“ .cursor/
β”‚   └── πŸ“„ mcp.json
β”‚
β”œβ”€β”€ πŸ“ data/
β”‚   └── πŸ—„οΈ support.db
β”‚
β”œβ”€β”€ πŸ“ .venv/
β”‚
β”œβ”€β”€ 🐍 database.py
β”œβ”€β”€ 🐍 server.py
β”œβ”€β”€ πŸ“„ pyproject.toml
β”œβ”€β”€ πŸ”’ uv.lock
β”œβ”€β”€ πŸ“„ README.md
└── πŸ“„ .gitignore
==================

πŸ—„οΈ Database Schema

The SQLite database contains a tickets table.

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                 tickets                 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ id              INTEGER PRIMARY KEY     β”‚
β”‚ customer_name   TEXT                    β”‚
β”‚ customer_email  TEXT                    β”‚
β”‚ subject         TEXT                    β”‚
β”‚ description     TEXT                    β”‚
β”‚ status          TEXT                    β”‚
β”‚ priority        TEXT                    β”‚
β”‚ created_at      TIMESTAMP               β”‚
β”‚ updated_at      TIMESTAMP               β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
============
πŸ§ͺ Test Using MCP Inspector

The MCP Inspector allows you to test the tools before connecting Cursor.

Run:

uv run mcp dev server.py

Open the Inspector URL displayed in the terminal.

You should see:

Customer Support MCP Server

Tools

βœ“ create_ticket
βœ“ get_ticket
βœ“ search_tickets
βœ“ update_ticket
=======================
πŸ§‘β€πŸ’» Connect MCP Server to Cursor

Create:

.cursor/mcp.json
=======================
πŸ”„ Restart Cursor

After saving .cursor/mcp.json:

Cursor
   ↓
Restart Cursor
   ↓
Open customer_support_mcp
   ↓
Settings
   ↓
Tools & MCP
-------------
You should see:

🟒 customer-support

Tools:

βœ“ create_ticket
βœ“ get_ticket
βœ“ search_tickets
βœ“ update_ticket

===============
πŸ€– Using Cursor AI

Once the MCP server is connected, you can use natural language.
🎫 Create Ticket

Ask Cursor:

Create a ticket for John Smith.

Email:
[email protected]

Issue:
Customer cannot login.

Priority:
high

Cursor can call:

create_ticket()
πŸ” Retrieve Ticket

Ask:

Show me ticket number 1.

Cursor can call:

get_ticket(ticket_id=1)
πŸ”Ž Search Tickets

Ask:

Find all open urgent tickets.

Cursor can call:

search_tickets(
    status="open",
    priority="urgent"
)
✏️ Update Ticket

Ask:

Change ticket 1 to resolved.

Cursor can call:

update_ticket(
    ticket_id=1,
    status="resolved"
)

===================
πŸ”₯ Example Workflow
πŸ‘€ User
   β”‚
   β”‚ "Create a ticket for John"
   β–Ό
πŸ€– Cursor AI
   β”‚
   β”‚ MCP Tool Call
   β–Ό
πŸ”Œ create_ticket()
   β”‚
   β”‚ SQL INSERT
   β–Ό
πŸ—„οΈ SQLite
   β”‚
   β”‚ Ticket #1
   β–Ό
πŸ”Œ MCP Server
   β”‚
   β–Ό
πŸ€– Cursor
   β”‚
   β–Ό
πŸ‘€ User
==================
πŸ“Š Example or Sample database of  Tickets Output

After creating tickets, the database might contain:

β”Œβ”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ ID β”‚ Customer     β”‚ Subject             β”‚ Status       β”‚ Priority β”‚
β”œβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 1  β”‚ John Smith   β”‚ Unable to login     β”‚ open         β”‚ high     β”‚
β”‚ 2  β”‚ Sarah Jones  β”‚ Payment failed      β”‚ open         β”‚ urgent   β”‚
β”‚ 3  β”‚ Mike Brown   β”‚ Password reset      β”‚ resolved     β”‚ medium   β”‚
β””β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
=================
🧠 MCP Concept

The most important concept in this project is:

             AI APPLICATION
                   β”‚
                   β–Ό
             β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
             β”‚    MCP    β”‚
             β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜
                   β”‚
                   β–Ό
             BUSINESS TOOLS
                   β”‚
          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”
          β–Ό        β–Ό        β–Ό
       CREATE    SEARCH   UPDATE
          β”‚        β”‚        β”‚
          β””β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”˜
                   β–Ό
               DATABASE

The AI does not directly manipulate the SQLite database.
---------
Instead:

AI
 ↓
MCP Tool
 ↓
Python Function
 ↓
SQLite
 ↓
Result
 ↓
AI
===============

βœ… MCP Business Tools
AI
 ↓
MCP Tool
 ↓
Validated Python Function
 ↓
SQLite
===============

πŸ” Verify SQLite Database

The database will be created here:

data/support.db

You can verify the database using Python:

 sqlite3 "C:\Users\your name\path\folder name\data\support.db"

============

πŸŽ“ Learning Outcomes

After completing this project, you will understand:

πŸ”Œ MCP
Model Context Protocol
        ↓
MCP Server
        ↓
MCP Tools
        ↓
MCP Client
---
πŸ—„οΈ Database Integration
Python
   ↓
sqlite3
   ↓
SQLite
---
πŸ€– AI Integration
Cursor AI
    ↓
MCP
    ↓
Python Tools
    ↓
SQLite
---
πŸ’Ό Business Operations
CREATE
  ↓
READ
  ↓
SEARCH
  ↓
UPDATE
============

πŸ† Project Summary

Component	Technology
πŸ€– AI Client	Cursor
πŸ”Œ Protocol	MCP
🐍 Backend	Python
πŸ—„οΈ Database	SQLite
⚑ Environment	uv
πŸ§ͺ Testing	MCP Inspector
🎫 Business Domain	Customer Support
=============

🌟 Final Architecture
                    ╔════════════════════╗
                    β•‘      CURSOR       β•‘
                    β•‘    πŸ€– AI AGENT    β•‘
                    β•šβ•β•β•β•β•β•β•β•β•β•€β•β•β•β•β•β•β•β•β•β•β•
                              β”‚
                              β”‚ MCP
                              β–Ό
                 ╔══════════════════════╗
                 β•‘ CUSTOMER SUPPORT MCP β•‘
                 β•‘       SERVER         β•‘
                 ╠══════════════════════╣
                 β•‘ 🎫 create_ticket     β•‘
                 β•‘ πŸ” get_ticket        β•‘
                 β•‘ πŸ”Ž search_tickets    β•‘
                 β•‘ ✏️ update_ticket     β•‘
                 β•šβ•β•β•β•β•β•β•β•β•β•β•€β•β•β•β•β•β•β•β•β•β•β•β•
                            β”‚
                            β”‚ SQL
                            β–Ό
                 ╔══════════════════════╗
                 β•‘       SQLite         β•‘
                 β•‘      support.db      β•‘
                 β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•

==============

πŸš€ Complete Command Flow

# 1. Go to project
cd C:\Users\path

# 2. Create environment
uv venv --python 3.12

# 3. Activate environment
.venv\Scripts\Activate.ps1

# 4. Install MCP
uv add "mcp[cli]"

# 5. Verify SQLite
uv run python -c "import sqlite3; print('SQLite OK')"

# 6. Verify MCP
uv run python -c "from mcp.server.fastmcp import FastMCP; print('MCP OK')"

# 7. Run MCP Inspector
uv run mcp dev server.py

# 8. Run MCP server directly
uv run python server.py
==============


                 

❀️ Final Message
<div align="center">
🎫 Customer Support MCP Server
Python 🐍 + MCP πŸ”Œ + SQLite πŸ—„οΈ + Cursor πŸ€–

AI + MCP + Database = Intelligent Business Operations

MCP Server Β· Populars

MCP Server Β· New

    Bevel-Software

    hexis

    Git-backed skills, tools & context for AI agents

    Community Bevel-Software
    jonashertner

    OpenCaseLaw

    Open Swiss legal corpus + MCP server: 1M+ court decisions (1875–today), 21k laws, 10M-edge citation graph, 42 MCP tools. CC0 data, MIT code. Live at mcp.opencaselaw.ch

    Community jonashertner
    SystemCraftsman

    Strimzi Kafka CLI

    Command Line Interface for the Strimzi Kafka Operator

    Community SystemCraftsman
    DROOdotFOO

    Raxol

    Write one app, render it to a terminal, a browser, or as agent tools. The terminal for your Gundam.

    Community DROOdotFOO
    morluto

    REA: Reverse Engineer Anything

    Reverse engineer anything with agents, from app behavior down to native binaries.

    Community morluto