Создаём свой MCP-сервер за 20 минут

Создайте свой MCP-сервер на Python с инструментами для базы данных. Работает с Claude Desktop, Cursor, Continue.

📊 Средний⏱ 20 мин

# 1. АРХИТЕКТУРА MCP-СЕРВЕРА

MCP работает по протоколу JSON-RPC через стандартный ввод/вывод (stdio). Сервер регистрирует инструменты через tools/list, а клиент вызывает их через tools/call. Каждый инструмент — это функция с аннотациями типов и docstring.

# MCP протокол — обмен сообщениями
# Клиент → Сервер: {"jsonrpc":"2.0","method":"tools/call","params":{...}}
# Сервер → Клиент: {"jsonrpc":"2.0","result":{"content":[{"type":"text",...}]}}

# Жизненный цикл MCP-сервера:
# 1. initialize — обмен возможностями
# 2. tools/list — клиент запрашивает список инструментов
# 3. tools/call — клиент вызывает инструмент с параметрами
# 4. resources/read — чтение ресурсов (опционально)

# 2. БАЗОВЫЙ MCP-СЕРВЕР НА PYTHON

Установите SDK и создайте минимальный сервер с одним инструментом echo. Это скелет, на который будем наращивать функциональность.

# Установка MCP Python SDK
pip install mcp

# server.py — базовый MCP-сервер
from mcp.server import Server
from mcp.server.stdio import stdio_server

server = Server("my-first-mcp")

@server.tool()
def echo(message: str) -> str:
    """Возвращает переданное сообщение обратно"""
    return f"Эхо: {message}"

if __name__ == "__main__":
    stdio_server.run(server)

# 3. ДОБАВЛЕНИЕ TOOL ДЛЯ БАЗЫ ДАННЫХ

Расширим сервер тремя инструментами для SQLite: create_table, insert_data и query_data. Claude сможет создавать таблицы и работать с данными через естественный язык.

import sqlite3
from mcp.server import Server
from mcp.server.stdio import stdio_server

DB = "data.db"
server = Server("sqlite-mcp")

@server.tool()
def create_table(name: str, columns: str) -> str:
    """Создаёт таблицу: name='users', columns='id INTEGER, name TEXT'"""
    with sqlite3.connect(DB) as conn:
        conn.execute(f"CREATE TABLE IF NOT EXISTS {name} ({columns})")
    return f"Таблица '{name}' создана"

@server.tool()
def insert_data(table: str, values: str) -> str:
    """Вставляет запись: table='users', values='1, \"Alice\"'"""
    with sqlite3.connect(DB) as conn:
        conn.execute(f"INSERT INTO {table} VALUES ({values})")
    return "Данные добавлены"

@server.tool()
def query_data(sql: str) -> str:
    """Выполняет SELECT-запрос и возвращает результат"""
    with sqlite3.connect(DB) as conn:
        rows = conn.execute(sql).fetchall()
    return str(rows)

# 4. ПОДКЛЮЧЕНИЕ К CLAUDE DESKTOP

Добавьте сервер в конфигурацию Claude Desktop. Укажите полный путь к python3 и вашему файлу server.py.

// claude_desktop_config.json
{
  "mcpServers": {
    "my-sqlite-server": {
      "command": "/usr/local/bin/python3",
      "args": [
        "/Users/username/projects/mcp-server/server.py"
      ]
    }
  }
}

После перезапуска Claude Desktop вы сможете сказать: «Создай таблицу users с полями id, name, email» — и Claude вызовет ваш инструмент create_table.

# 5. ПОДКЛЮЧЕНИЕ К CURSOR И CONTINUE

Cursor и Continue (VS Code расширение) тоже поддерживают MCP. Настройка аналогична Claude Desktop — через конфигурационный файл.

# Cursor: Settings → MCP → Add Server
# Или через .cursor/mcp.json в корне проекта:
{
  "mcpServers": {
    "sqlite-mcp": {
      "command": "python3",
      "args": ["server.py"],
      "cwd": "/path/to/mcp-server"
    }
  }
}

# Continue: ~/.continue/config.json
"experimental": {
  "mcpServers": [
    {
      "name": "sqlite",
      "command": "python3",
      "args": ["server.py"]
    }
  ]
}

# 6. ПУБЛИКАЦИЯ В MCP MARKETPLACE

Опубликуйте сервер для сообщества — добавьте mcp.json с метаданными и README с инструкциями по установке.

# mcp.json — метаданные для marketplace
{
  "name": "sqlite-mcp",
  "version": "1.0.0",
  "description": "SQLite database tools for Claude",
  "command": "python3",
  "args": ["server.py"],
  "requirements": ["mcp", "sqlite3"],
  "tools": [
    "create_table",
    "insert_data",
    "query_data"
  ]
}

# Публикация: fork репозитория modelcontextprotocol/servers
# → добавить папку с сервером → Pull Request

🔗 Полезные ссылки

🐍 MCP Python SDK📖 MCP Documentation🖱 Cursor MCP🔧 MCP Servers