Створыце сервер MCP на Python і пад’яжыце яго да Claude Desktop і базы дадзеных SQLite.
Створыце сервер MCP на Python, які будзе абраныя база дадзеных SQLite, зарэгіструйце яго ў Claude Desktop на Windows і дазвольце модэлю пісаць і выкананыць свае сабскіе запыты SQL.
Крыніцы: 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 компаніі, і гэта якраз і змянюе эканаміку стварэння агентных сістэм у компаніі: кожная сістэма апаковываецца адназначы, і кожны сумесны асістэнт можа яго выкарыстоўваць.