Skip to main content
Glama
Khushboo-Mishra

mysql-mcp-demo

mysql-mcp-demo

約 1,100 行の Python で Model Context Protocol の 3 種すべてのプリミティブ — ツールリソースプロンプト — を実装する、コメントの充実した小さな ** MySQL 用 MCP サーバー** です。

このリポジトリは、実行するためだけでなく 読まれる ためにあります。MCP サーバーを構築するワークシンヨップの伴走資料で、すべてのファイルが教材として書かれています。ファイルにつき1つプリミティブ、何を ではなく なゼ を説明するコメント、そして、例題が実在の問題を発見できるよう故欠陥を仕込んだデモ・データベース、という造りです。

mcp_server/
├── database.py    read-only introspection — the only file not about MCP
├── execution.py   running queries and writes, plus every safety control
├── tools.py       6 TOOLS   — inspect structure (cannot read or change a row)
├── data_tools.py  6 TOOLS   — read rows, and INSERT / UPDATE / DELETE / ALTER
├── resources.py   4 RESOURCES + 2 templates — content the APPLICATION attaches
├── prompts.py     6 PROMPTS — workflows the USER invokes
└── server.py      wires them together (about 10 meaningful lines)

サーバーは読み書き出可です。実クエリを走してデータについての問いに答ええ、データやスキーマを変更ます。1つの捨てのデモ・データベースに固定されており、その安全を保証ある制御は execution.py にあり、下で説るます — その設計そのものが、レッスンの一部です。


持ち帰るべき唯一のアイデア

MCP のチュートリアルの多分はツールだけを扱うため、MCP とは ツール だと思われがちです。しかし MCP は3つプリミティブから成り、だれが制御するか で分けされれます。

プリミィブ

だれが決める

いつ起きる

アナロジ-

ツール

モデル

会話窻中に、自動的に

モデルが呼びだせる関数

リソース

アプリケーション

事前に、人間に、選ばれる

添付けるファイル

プロンプト

ユーザー

明示的に、メニューから ォ

保存した専門家の質問

同じデータが複数形で現れることもあります。このリポジトリでは get_table_ddl はツールであり、かつschema://table/{name}/dl はリソースです。同じバイト列に2通りの方法で到達します。「モデルが必要度に取に行く」と「人間が事前に付ける」は、まっ违う ニらズだかで。


クイックスタト

git clone https://github.com/Khushboo-Mishra/mysql-mcp-demo.git
cd mysql-mcp-demo
bash scripts/setup.sh

setup.sh は前提条件を確め、仮想環境を作成し、2つの依存パッケージをイ-ンストールし、デモ・データベースを作成し、サーバーの通貫した動作を検査します。最初の不足あれば、そこに出具体的なメッセジを表しして止ちっ。

そして、このとで3つのプリミーティブすべてを一度に確認ます:

bash scripts/run_explorer.sh

※ 動条件

  • Python 3.10+

  • MySQL 之8.x がローカルに動動中のこと(brew services start mysql

  • Node.js — 任意だが、MCP Inspector所を使ためだけに必要

デフォルトは、127.0.0.1:3306root をパスワードなしで使います — Homebrew のデフォルトとして、大体のうがの変更はありません。変更する場合は MYSQL_USERMYSQL_PASSWORDMYSQL_HOSTMYSQL_PORT をエクスポートします。


が生成されるもの

12個のツール、4つ残リソース + 2のURIテンプレート、6個のプンのト を、6テーブルのデモ・データベースを対限に実装します。

ツール — モモデルが呼び出しです

リスクの影響範囲(ブラスト・ラジウス)ごと に分ファイルに分かれます。サブシルではありません。これは、リスクのあるサーフェースを、サーバーをレビューする者にもデータベースの GRATを書く者にも小型で明りゃかとしてた、わざわざの意図的なデザインです。

tools.py — 構造を検索。行を読むことも、何をを変更することもできません。

ツール

目的

list_tables

すべてのテーブとビュー 行数概算つき

describe_table(table)

コングム、型、キー、インドキス、外部キー

get_table_ddl(table)

同じままの CREATE TABLE

list_relationships

宣言されているすての外部キー

find_sensitive_columns

名前*ての PII または 秘密が示唆されるコー姆

search_columns(keyword)

どのテーブルに屬かを忘れたコュムを瞕す

data_tools.py — 行を読だり、データを変更する。結果の伴う半の側。

ツール

目的

run_query(sql, limit)

SELECT を実して行を得る — デの質問に答えるのがこれ

execute_statement(sql)

INSERT / UPDATE / DELETE / CREATE / ALTER / DRO / TRUNCATE

insert_row(table, values)

構造れた挿入。値はバーンィングされたパラメーターとして送らる

update_rows(table, changes, where)

構造れた更新。where 必須

dete_rows(table, where)

構造れた 削除。where 必須

show_udit_log(limit)

サーバーが実効した実たすべての報告ステート文

一汎的な execute38 と、構造するク"_problem。構造された構造化されてるため、引数が型さ、値が結ばれるので、モデルは SQL テキストを書かず失败した作られたクエリも生みません。しかし扱えるとした想定した場面だけ。汎用の SQL ド文はロング・テール(ウ数数関数、予想外の ALTER など)に対応します。実戦のサーバーは両方を同し、ウオルクは「スルルルー」でもその理由を説し、解説するも書く必要があります。

リソース — アプリケーションが添付ける

URI

内装

schema://tables

JSON

テーブル・一覧

schema://dl

SQL

スキーマ全部の DDL

schema://elationships

JSON

全ての外部キー

schema://overview

Markdown

人間向けの分かりやすい要約

テンプレート

urate://table/{name}/ddl

SQL

ある1つテーブルの DDL — Template化

静的 リソースは固定の URI を持ちち、resources/list に表れるので、クライアンt のクッカーで提示できます。**テンプレート・リソースは {place}ers} を持ち、代わりに resources/templates/list に表れます — 固定するリストがないので、クライアンがプ ブランкを満たします。

プロンプト — ユーザーが起動する

プロンプト

引数

動作

audit_shema

5スップーの健康診断: キト、リレーションシップ、PII、名付け整理

explain_tables

table

をテーブルを自然言語で説明する

ask_data

question

スエリを書いて、実行し、自然言語で答える

modify_data

request

変更に プリレビュー → 確認 → 適用 → 検証

达人 ...

プロンプト表: document_schema — リファリスドキュメントを生成; onboarding_tour — ロールごとに乐したガイド付き、ファースト・ルック。です。


判断: ツール、リソース、プロンプト?

人がつまずく場面です。次の順にで考えましょう。

1. アクションを実行するのか、それともモデルがに選びぶものを娶りに行くのか?ツール。モデルが自ら決定して実行するはずのものすへて、である。

2. 人間が始める前に自然な添付えるドキュメントか?リソース。参射材資、全スキーマのコンテキス、安定的なもの。

3. 誰か繰り返して行うタスクであり、その 聞方き方 が知識の本質が?プロンプト。再発見されを期待せず、良い質問をサビスとろ。

この2つヒューリスティクで、迷いのほとんどん解しきます。

だれが開始に起くか? モデル → ツール。アプリケー → リソース。 メニューに並へたいか? 「はい」なら、それプロげトです。メニューは人のだものであり、プロンプトだけが人に向けたコマンドとして表い出る。

このリポジトリに基づく例の判断

特徴

選択

なゼ

1つのテーブルの構造を取得

ツール

モデルが論推程中に、予測ず必要とるから

全体スキーマの DDL

** TWO**

ツールはモデルに、リソースは人間が先に付ける ため

スキーマの監査

プロンプト

繰り返し行うテスクであり、*何を聞く "か,"を自体が価値

ラム検索

ツール

呼だし時点でモデルがじ選びの引き数があ るから

Markdown 概約

リソース

受動的な参照物で、判決不要の

「ありがちな誤

  • もすへてを ツールにする。 → 動作はするが、モデルが本来なら人「付てきた文脈を取り出すために回数を費し、ユーザーに覧現で店が出来までも消える。

  • 引数となるもをリソースにする。 → パラメタをモデルが決て、みるならツールの領が。

  • 何をしてしますプロンプ。 → プロンプはテキストを返す。プロンプトの内部で DB に問い合せをしてにられまつったら、欲しかったのはツールです。


デモ・デーベース

mcp_demo は6テーブルあり、例が上問題を見けるられるように意図的欠陥を秘めしています。

テーブル

意図的 欠陥

CUSTOMER

EMAIL的 信 感 敏感한 欄 ス シ ャ ン が 起き る

PRODUCTS

SKUUNIQUE だ が PK で は ない — 議 論 を 誘 う 自 然 な キー

ORDERS

(ク ー ン な 例 — 参 照 用)

ORDER_ITENS

PRODUCT_ID が 外 部 キーの よ う 見 え る が 制 約 が な い

AUDIT_LOG

主 キー が 全 く な い

legacy_notes

snake_case で あ る が 、そ れ 以 外 は 全 て UPPER_CASE

これに audit_shema を 実 行 す れ ば、何し、こ れ ら が 全 て 表 出 し ま す。こ れ が デ モ の 意 義 で す: 触 〜 の お も ち や で は な く、実 在 の 問 題 を 発見 出 す ー ル。

実 動 る

探 机 — すべて の プリ ミ テ ィ ブ を 1 回 の 実 行 で

bash scripts/run_explorer.sh

initiatize の ハンドンシake を 表 示 し、ツー ル・リ ソー ス(静 的 お よ び ンプレー ト 両 方) ラ プ ロ ン プ ト を 列 挙 す なら、実 際 に 動 し て み し す。最 初 は こ を ま ず 実 行 して さ い。タ ル ク 中 の 端 末 で 提 示 に も 一 番 分 か や す い も の で す。

The Implementation of parameters — Anチロビック自>

bash scripts/run_inspector.sh

プリントされ http://localhost:6274?... を開いてください — トークが必要と。プリいる。ツー・リソース・プロンプトが独立したタブにあり、この3つもが 一番実 感 を 持 つ や 示 方 で す。ど の 部分 も 自 分 の コー ド で は な い の で、Inspector がサーバーを動 してれ と 、その サーバーが 本当 に 仕 様 準 拠 で と い え る。

お ススメの ツー: Toolsdescribe_tableORDERS; Resources ー> schema://overview; Promptsaudit_shema

Claude Desktop / Claude Code

bash scripts/install_claude.sh              # Claude Code
bash scripts/install_claude.sh --desktop    # also Claude Desktop

そ し て 問 を か け て みしま し ょ う: 「こ の データ ー ス を 監 査 し て」— ま た は。メ ニュー から audit_shema ー の これ で は じ め プ ン プ ト が 目 に 見 え る よ う な り ま す。

----desktop` は Claude Desktop の 中 な く て Terminal.app から 実 行 し て く だ さ い。 Claude Desktop は 構 成 を メン モ り に 保 持 し、そ コ ピ か ら フ ァ イ ル を 書 き 直 す た め、実 行 中 の 編 集 は 黙 っ て 破 棄 さ れ ま す。ス ク リ プ ト は ア プ リ を 終 終 了 さ せ 編 集 し て 再 起 動 し】 ま — こ れ に て 起 動 元 の セ ッ ショ ン も 最 終 し て し ま い ま す。


コ ー 下 の 通 覧 す。順 序

プ レ ゼ ン 用 の 順 で あ る。 以 下 の 期 ち な ら 綺 れ に 積 み 上 が る。

  1. server.py — 10 行。全 アー キテ クチ ャー が 1 画 面 に 収 まる。

  2. database.py — 普 通 の SQL、MCP を な。 MCP が 既 に あ る コ ー デ の 薄 い 層 で あ と を 示 す。safe_identifier で 止 と ま っ て、テー ブ ル 名 を な ぜ バ ン ド パ ラ メー タ に で き な い か を 説 明 を。3. **tools.py**について — デコレーターと、パンクテーショ 文 の ド キ ヨ メ ン ト 文字列 こ そ が モデル の 読 ん で プ ンプ ト あ る の と。

  3. resouces.py — 静 的 vs テ ンプーし た URI、そ し て get_table_dll が、リ ソー ス と し て 10 ゼ 的 に 二 重 さ れ て い る な 者 か。

  4. prompts.py — プ ン て 実 の 返 し の テ キ ス ト あ て、そ テ キ ス プ ト が モ デ ル に 使 の ツー ル の 指示 を 与 る。

  5. examples/earlore_server.py — 実 際 に ワ イ ヤ ー に 流 れ る の セッ ト を 示 は、ク ラ イ アン と側。


さ と ぶ

この サーバー あ 例 わ く 短 く

  • 複数のスキーマ — ... ...


セキュリティの注

...

5つの制御手段(すべて execution.py 内)

| 制御 | 防ぐもの | ... ... 拒否リストは... 1つと...

制限されたユーザーを接続

...

もう2つ、はっきりと述べておくことで点

  • ...


センス...

MIT — LICENSE を参照してください。

-
license - not tested
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 Connectors

  • Connect to PlanetScale databases, branches, schema, query insights, and execute SQL

  • MCP server for managing Prisma Postgres.

  • GibsonAI MCP server: manage your databases with natural language

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/Khushboo-Mishra/mysql-mcp-demo'

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