Создайте свой MCP-сервер на Python с инструментами для базы данных. Работает с Claude Desktop, Cursor, Continue.
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 — чтение ресурсов (опционально)
Установите 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)
Расширим сервер тремя инструментами для 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)
Добавьте сервер в конфигурацию 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.
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"] } ] }
Опубликуйте сервер для сообщества — добавьте 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