Галоўная / Артыкулы

Створыце сервер MCP на Python і пад’яжыце яго да Claude Desktop і базы дадзеных SQLite.

Створыце сервер MCP на Python, які будзе абраныя база дадзеных SQLite, зарэгіструйце яго ў Claude Desktop на Windows і дазвольце модэлю пісаць і выкананыць свае сабскіе запыты SQL.

Выдавец: REACTAPP.TOP4 хв чытання895 слоў

Крыніцы: Stop Writing Custom APIs for Your AI Agents: Build an MCP Server in 5 Minutes

Кожны, хто стварае агентаў для корпаратыўных сістэм, знае, як важка ў напісанні коду для з’еднання разных компанентаў. Одна бібліятка для працы з базамі дадзеных, іншая — для інтэграцыі з тыкетамі Jira, ўсё новая — для Slack. Якшча да гэтага дадаць дзесяць баз дадзеных і пяць фрэймворкаў LLM, такіх як Claude, AutoGen і LangChain, то праект проста не зможа выстояць пад такім тылом. Гэта і ёсць проблема інтэграцыі тыпу N-by-M: штучны інтэлект павінен розумець точную структуру кожнага джэрага дадзеных, з якім ён взаімаецца.

Model Context Protocol (MCP) — гэта адкрыты стандарт, спецыяльна створаны для рашэння гэтай проблемы. Уявіце сабе універсальны кабель USB-C для штучнага інтэлекту. З’еднанне з базай дадзеных напісваецца раз і выканаецца праз аднаго стандартызаванага сервера, і будзь-які сумесны кліент можа з’яўіцца, аднавіць інфармацыю пра доступныя інструменты і іх выкорыстаць. Напрыклад, можна стварыць локальны сервер MCP за менш чым 50 рэйсоў коду на Python, які будзе з’яўляцца з Claude Desktop і падтрымваны жывой базай дадзеных SQLite.

Прыямыя прыямесці

Афіцыйны пакет Python mcp выконвае важную роль. Ён скрывае дэталі JSON-RPC, таму для таго, каб інструмент стаў доступным для модэлю, достатнека аднаго дэкаратара. Спачатку установіце яго ў вашай віртуальной асяроддзі:

pip install mcp

У прыгунку Claude Desktop таксама неабяжна установка на апарат.

Стварэнне сервера

Створыце файл пад назвам mcp_server.py, імпортуйце неабяжныя бібліятэкі і запускіце сервер. Хоць і ўсё, тут важна адна дэталь: модуль os прыкрэпляе файл SQLite да таго ж каталога, што і скрыпт. Claude Desktop запускае сервер у фоне, і без фіксаванага месца размешчэння можна страждзець ад проблем з правамі.

import sqlite3
import json
import os
import sys
from mcp.server.mcpserver import MCPServer

# Initialize the MCP server
mcp = MCPServer(name="Enterprise_SQL_Agent")

# Force the database to be created in the exact same folder as this script
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
DB_PATH = os.path.join(BASE_DIR, "enterprise.db")

Далей выкарыстоўваецца тымчасовая база дадзеных, каб модэль мела на што адбавляць запыты. Логаванне насталяваецца ў стандартным канале для адхэрання бядзец (sys.stderr). Стандартны выхід — гэта канал, які MCP выкарыстоўвае для спілкування з кліентам, і небяспечныя выведзеныя там могу яго зіпсаваць.

def setup_dummy_db():
    """Create a sample employee database for the demo"""
    try:
        conn = sqlite3.connect(DB_PATH)
        cursor = conn.cursor()

        cursor.execute('''CREATE TABLE IF NOT EXISTS employees
                          (id INTEGER PRIMARY KEY, name TEXT, role TEXT, salary INTEGER)''')
        cursor.execute("DELETE FROM employees")

        employees = [
            ("Alice", "Data Scientist", 120000),
            ("Bob", "DevOps Engineer", 115000),
            ("Charlie", "AI Researcher", 135000)
        ]

        cursor.executemany("INSERT INTO employees (name, role, salary) VALUES (?, ?, ?)", employees)
        conn.commit()
        conn.close()
        print("Database initialized successfully.", file=sys.stderr)
    except Exception as e:
        print(f"Database setup error: {e}", file=sys.stderr)

Адаптаванне базы дадзеных як інструмента

Ключовым элементам ёсць звычная функцыя на Python, якая выкананае запыт SQL і вяртае радкі. Дадзіце дэкоратар @mcp.tool(), і сервер чытае докстрынг і падказкі пра тыпы, каб автаматычна стварыць схему JSON для модэлю.

@mcp.tool()
def query_employee_database(sql_query: str) -> str:
    """
    Executes a SQL SELECT query against the enterprise.db database.

    The database contains an 'employees' table with columns:
    - id (INTEGER PRIMARY KEY)
    - name (TEXT)
    - role (TEXT)
    - salary (INTEGER)

    SECURITY: Only READ operations (SELECT) are permitted.
    """

    # Safety Check: Block destructive SQL commands
    dangerous_keywords = ["DROP", "DELETE", "UPDATE", "INSERT", "ALTER"]
    if any(keyword in sql_query.upper() for keyword in dangerous_keywords):
        return "Error: Only SELECT queries are authorized for this tool."

    try:
        conn = sqlite3.connect(DB_PATH)
        cursor = conn.cursor()
        cursor.execute(sql_query)
        results = cursor.fetchall()

        # Format the output as JSON so the LLM can read it cleanly
        column_names = [description[0] for description in cursor.description]
        formatted_results = [dict(zip(column_names, row)) for row in results]

        conn.close()
        return json.dumps(formatted_results, indent=2)

    except Exception as e:
        return f"Database error: {str(e)}"

Короткі блакіты запуску завершаюць файл:

if __name__ == "__main__":
    setup_dummy_db()
    mcp.run()

З’еднання з Claude Desktop

Пакету кліента неабяжна паведаміць, дзе знаходзіцца сервер. У Windows перайдзіце у папку %APPDATA%\Claude, адкройце файл claude_desktop_config.json у рэдактары і дадзіце элемент mcpServers.

Дробны тычок для Windows, які памылівае людзей: калі вы запускаеце програму ў віртуальным сераўе, такім як Conda або venv, укажыце абсалютны шлях да файла python.exe гэтага сераўа заместо стандартнага глобальнага каманды python, і запісвайце кожны шлях з подвойнымі зворотнымі слэшамі.

{
  "mcpServers": {
    "enterprise-sql": {
      "command": "C:\\Users\\YourName\\.conda\\envs\\your_env\\python.exe",
      "args": [
        "D:\\Your\\Project\\Path\\mcp_server.py"
      ]
    }
  }
}

Зберэжыце файл і пачніце Claude Desktop занова.

Перакананне ў работасці

Ачыніце Claude Desktop і шукайце айконку молотка (Інструменты) у правым ніжнім канцы кансоłu для чату. Інструмент query_employee_database ужо павінен быць там зарэгістраваны. Хорашым першым тэстам ёсць запітанне пра тое, хто зарабляе найбольш у табліцы спаведамальнікаў, і яку посаду займае гэта людзь.

Мадэль чытае апісанне інструмента, пішае сам SQL-запіт (SELECT * FROM employees ORDER BY salary DESC LIMIT 1;), запускае яго на вашым серверы і ператварае рэзультат у адпаведны адказ на простай мове. Не была напісана жадная спецыяльная шара API, а схема была выканана дынамічна.

Той жа схема прыменяецца да Slack, Jira, GitHub чыста да будзь-якага внутранняга API компаніі, і гэта якраз і змянюе эканаміку стварэння агентных сістэм у компаніі: кожная сістэма апаковываецца адназначы, і кожны сумесны асістэнт можа яго выкарыстоўваць.