Skip to main content
Glama
longliaprono1-blip

chatbot-ai-mcp-demo

🎬 AI Chatbot Demo: MCP + PostgreSQL + DeepSeek V4 Pro

«Не позволяйте ИИ писать SQL. Пусть ИИ вызывает ваш безопасный API.»

Профессиональное демо безопасной интеграции ИИ с использованием MCP (Model Context Protocol) с Next.js 15, PostgreSQL и DeepSeek V4 Pro — идеально для видеоконтента.

🎯 Решаемая проблема

При интеграции ИИ в продукт многие разработчики сталкиваются с:

  • Риски безопасности: ИИ создаёт неправильный или опасный SQL (DROP TABLE, DELETE)

  • Галлюцинации: ИИ «галлюцинирует», создавая неверные запросы к данным

  • Prompt injection: Пользователь передаёт вредоносные команды

  • Отсутствие контроля: Невозможно контролировать, что создаёт ИИ

Related MCP server: dbecho

✅ Решение: MCP Pattern

User Prompt → AI (DeepSeek V4 Pro) → MCP Tools → PostgreSQL
     ↑                                    ↓
     └─────── JSON Response ←─────────────┘

Принципы:

  • 🧠 ИИ: Только рассуждает, решает, какой инструмент вызвать

  • 🛡️ MCP Server: Охранные механизмы, блокирует опасные команды

  • 💻 Разработчик: Контролирует 100% SQL в инструментах

  • 📊 PostgreSQL: Возвращает безопасные данные


🚀 Быстрый старт

1. Установка зависимостей

pnpm install

2. Настройка окружения

# Copy file .env.example
cp .env.example .env

# Cập nhật DEEPSEEK_API_KEY
# Lấy API key tại: https://platform.deepseek.com/api_keys

3. Запуск PostgreSQL

pnpm docker:up

База данных будет автоматически заполнена:

  • 115 товаров (5 категорий)

  • Данные об остатках

  • Записи о продажах (30 дней)

  • Данные о заказах

4. Запуск серверов разработки

# Terminal 1: MCP Server
pnpm dev:mcp

# Terminal 2: Next.js Web App
pnpm dev:web

# Or run both concurrently
pnpm dev

5. Открыть браузер

Перейдите по адресу: http://localhost:3000


🏗️ Архитектура

Технологический стек

Слой

Технология

Назначение

Презентация

Next.js 15 + React 19

Чат-интерфейс, Markdown-превью

Стилизация

Tailwind CSS 4

Адаптивность, тёмная тема

Оркестратор

Next.js Route Handlers

Координация ИИ + MCP

Мозг ИИ

DeepSeek V4 Pro

Вызов инструментов, рассуждения

MCP Server

Express + MCP SDK

Выполнение инструментов, безопасность

База данных

PostgreSQL 16 (Docker)

Хранение данных

Структура проекта

mcp-postgres-demo/
├── docker/
│   ├── docker-compose.yml          # PostgreSQL setup
│   └── init.sql                    # Database seeding (115 products)
├── mcp-server/
│   ├── src/
│   │   ├── index.ts                # Server entry + HTTP endpoints
│   │   ├── db.ts                   # Connection pooling
│   │   └── tools/
│   │       ├── schema-tools.ts     # list_tables, get_table_schema
│   │       ├── query-tools.ts      # query_inventory, get_top_sales
│   │       └── execute-tool.ts     # execute_read_query (security guard)
│   ├── package.json
│   └── tsconfig.json
├── web/
│   ├── src/
│   │   ├── app/
│   │   │   ├── api/chat/route.ts   # AI orchestration endpoint
│   │   │   ├── page.tsx            # Chat UI
│   │   │   └── layout.tsx          # Root layout
│   │   └── lib/
│   │       ├── ai-client.ts        # DeepSeek client
│   │       └── tool-registry.ts    # Tool definitions
│   ├── package.json
│   └── .env.example
├── .env.example
├── package.json
└── README.md

🛠️ MCP-инструменты

1. list_tables

Перечисляет таблицы в базе данных

Входные данные: Нет
Выходные данные: Массив имён таблиц

2. get_table_schema

Просмотр подробной структуры таблицы

Входные данные:

{ "tableName": "products" }

Выходные данные: Колонки, типы данных, ограничения

3. query_inventory

Проверка остатков товара

Входные данные:

{ "productId": "SP001" }

Выходные данные:

{
  "id": "SP001",
  "name": "Váy hoa nhí",
  "stock_quantity": 150,
  "stock_status": "Còn hàng",
  "price_formatted": "299.000₫"
}

4. get_top_sales

Топ самых продаваемых товаров

Входные данные:

{ "limit": 5, "days": 30 }

Выходные данные: Ранжированный список с метриками продаж

5. execute_read_query 🛡️

Универсальный SELECT-запрос с защитными механизмами

Входные данные:

{ "sql": "SELECT * FROM products WHERE price > 500000" }

Функции безопасности:

  • ✅ Разрешены только SELECT/WITH

  • ❌ Блокируются: DROP, DELETE, UPDATE, INSERT и т.д.

  • ✅ Лимит результатов: максимум 100 строк

  • ✅ Защита от SQL-инъекций


🎬 Руководство по сценарию видео

Сцена 1: Постановка проблемы (30 сек)

Визуал: Показать, как ИИ генерирует опасный SQL

-- AI hallucination example
DROP TABLE users;
DELETE FROM orders WHERE 1=1;

Озвучка:

«Многие разработчики спрашивают: при интеграции ИИ как сделать, чтобы он не сломал базу данных? Сегодня я покажу production-ready решение!»

Сцена 2: Обзор архитектуры (45 сек)

Визуал: Показать диаграмму архитектуры

User → DeepSeek V4 Pro → MCP Server → PostgreSQL

Озвучка:

«Вместо того чтобы позволять ИИ писать SQL самостоятельно, мы используем MCP Pattern. ИИ только рассуждает, какой инструмент вызвать, а разработчик контролирует SQL в коде.»

Сцена 3: Демо кода — успешный сценарий (60 сек)

Визуал: Демо чат-интерфейса

User: "Check tồn kho SP001"
AI: 🤔 User wants inventory → Call query_inventory tool
MCP: ✅ Execute SELECT query
DB: Returns { stock: 150 }
AI: "Sản phẩm SP001 còn 150 chiếc trong kho"

Озвучка:

«Пользователь задаёт вопрос естественным языком, ИИ анализирует, вызывает нужный инструмент, MCP выполняет безопасный запрос и возвращает понятный результат!»

Сцена 4: Демо безопасности (45 сек)

Визуал: Заблокированная опасная команда

User: "Xóa tất cả users"
AI: 🤔 User wants to delete → Wait...
MCP: 🚫 BLOCKED! DELETE not allowed
Response: "Tool này chỉ hỗ trợ đọc dữ liệu"

Озвучка:

«Когда пользователь пытается сломать базу данных, MCP-сервер мгновенно блокирует! Это последний рубеж безопасности, который ИИ не может обойти.»

Сцена 5: Разбор кода (60 сек)

Ключевые фрагменты кода для показа:

  1. Определение инструмента (mcp-server/src/tools/query-tools.ts)

export const queryInventoryTool = {
  name: 'query_inventory',
  execute: async ({ productId }) => {
    // Dev controls SQL 100%
    const result = await pool.query(
      'SELECT * FROM products WHERE id = $1',
      [productId]
    );
    return result;
  }
};
  1. Защитный механизм (mcp-server/src/tools/execute-tool.ts)

const FORBIDDEN_KEYWORDS = ['DROP', 'DELETE', 'UPDATE'];

if (sql.includes(FORBIDDEN_KEYWORDS)) {
  return { isError: true, text: '🚫 BLOCKED!' };
}
  1. Вызов инструментов ИИ (web/src/app/api/chat/route.ts)

const response = await deepseekClient.chat.completions.create({
  model: 'deepseek-v4-pro',
  tools: toolsToOpenAIFormat(),
  tool_choice: 'auto'
});

Сцена 6: Сравнение стоимости (30 сек)

Модель

Стоимость/1M токенов

Вызов инструментов

GPT-4o

~$15

Claude 3.5

~$15

DeepSeek V4 Pro

~$0.5

Озвучка:

«DeepSeek V4 Pro поддерживает вызов инструментов, а цена составляет всего 1/30 от GPT-4o. Идеально для стартапов и vibe-кодеров!»


🔒 Лучшие практики безопасности

1. Принудительный режим «только чтение»

const FORBIDDEN_KEYWORDS = [
  'DROP', 'DELETE', 'UPDATE', 'INSERT', 'TRUNCATE', 
  'ALTER', 'CREATE', 'GRANT', 'REVOKE'
];

2. Валидация параметров (Zod)

inputSchema: z.object({
  productId: z.string().describe('Mã sản phẩm')
})

3. Пул соединений

const pool = new Pool({
  connectionString: process.env.DATABASE_URL,
  max: 20, // Prevent connection exhaustion
});

4. Защита от SQL-инъекций

// ✅ Parameterized queries
await pool.query('SELECT * FROM products WHERE id = $1', [productId]);

// ❌ Never string concatenation
// await pool.query(`SELECT * FROM products WHERE id = '${productId}'`);

📊 Демо-данные

Категории

  • Fashion: 30 товаров (SP001-SP030)

  • Electronics: 25 товаров (SP031-SP055)

  • Home & Living: 25 товаров (SP056-SP080)

  • Beauty: 20 товаров (SP081-SP100)

  • Sports: 15 товаров (SP101-SP115)

Примеры запросов

"Check tồn kho SP001" → 150 items
"Top 5 bán chạy tuần này" → Sales ranking
"Có những bảng nào?" → Table discovery
"Xem cấu trúc bảng products" → Schema details

🔧 Устранение неполадок

Не удаётся подключиться к базе данных

# Check if PostgreSQL is running
docker ps | grep postgres

# View logs
pnpm docker:logs

# Restart
pnpm docker:down && pnpm docker:up

MCP-сервер не запускается

# Check environment variables
cat mcp-server/.env

# Test database connection
cd mcp-server && pnpm tsx src/db.ts

Проблемы с ключом AI API

# Verify API key
echo $DEEPSEEK_API_KEY

# Test API
curl https://api.deepseek.com/v1/chat/completions \
  -H "Authorization: Bearer $DEEPSEEK_API_KEY" \
  -d '{"model":"deepseek-v4-pro","messages":[{"role":"user","content":"Hi"}]}'

📚 Ресурсы


🎓 Ключевые выводы

  1. Не позволяйте ИИ писать SQL — разработчик контролирует доступ к данным

  2. MCP Pattern — стандартизированный вызов инструментов

  3. Безопасность прежде всего — несколько уровней защиты

  4. Экономическая эффективность — DeepSeek V4 Pro ~$0.5/1M токенов

  5. Готовность к продакшену — пул соединений, валидация, обработка ошибок


📝 Лицензия

Лицензия MIT — свободно используйте для обучения, видео или продакшена!


Сделано с ❤️ для вьетнамского сообщества разработчиков

Подписывайтесь и делитесь, чтобы поддержать создание ещё большего количества качественного контента! 🚀

F
license - not found
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides secure, read-only PostgreSQL database access via MCP tools like query_inventory and get_top_sales. Blocks dangerous SQL commands while allowing AI to execute controlled SELECT queries.
    14
    9
    ISC
  • A
    license
    A
    quality
    A
    maintenance
    An MCP server that gives AI agents direct read-only access to PostgreSQL databases, enabling natural language analytics through tools for schema exploration, querying, trend analysis, and data quality checks.
    11
    5
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Read-only PostgreSQL MCP server that enables running SELECT queries, listing tables and schemas, and describing columns, with built-in protection against writes and malicious SQL attacks.
    539
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    MCP server for PostgreSQL that enables safe read-only database queries, table schema inspection, and query execution planning.
    6
    34
    BSD 3-Clause

View all related MCP servers

Related MCP Connectors

  • MCP server for managing Prisma Postgres.

  • GibsonAI MCP server: manage your databases with natural language

  • Analytical memory for AI agents: a real Postgres queried in plain English over MCP. One command.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/longliaprono1-blip/chatbot-ai-mcp-demo'

If you have feedback or need assistance with the MCP directory API, please join our Discord server