โœจ From vibe coding to vibe deployment. UBOS MCP turns ideas into infra with one message.

Learn more

pymcp

pymcp๋Š” FastMCP๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ Python ํ”„๋กœ์ ํŠธ๋กœ, MySQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ๋Š” ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„์˜ ํ†ต์‹ ์„ ์ง€์›ํ•˜๋ฉฐ, ๋‹ค์–‘ํ•œ ๋„๊ตฌ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๊ณ  ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

pymcp/
โ”œโ”€โ”€ client.py          # ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ
โ”œโ”€โ”€ main.py            # ์„œ๋ฒ„ ์‹คํ–‰ ์ฝ”๋“œ
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ env.py         # ๋กœ์ปฌ ํ™˜๊ฒฝ ์„ค์ •
โ”‚   โ”œโ”€โ”€ env_dev.py     # ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •
โ”‚   โ”œโ”€โ”€ mcp_instance.py # MCP ์ธ์Šคํ„ด์Šค ์ดˆ๊ธฐํ™”
โ”‚   โ”œโ”€โ”€ mysql_tool.py  # MySQL ๊ด€๋ จ ๋„๊ตฌ ์ •์˜
โ”œโ”€โ”€ pyproject.toml     # ํ”„๋กœ์ ํŠธ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ฐ ์˜์กด์„ฑ
โ”œโ”€โ”€ requirements.txt   # ์˜์กด์„ฑ ๋ชฉ๋ก
โ””โ”€โ”€ README.md          # ํ”„๋กœ์ ํŠธ ์„ค๋ช…

์„ค์น˜ ๋ฐ ์‹คํ–‰

1. ์˜์กด์„ฑ ์„ค์น˜

Python 3.13 ์ด์ƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์˜์กด์„ฑ์„ ์„ค์น˜ํ•˜๋ ค๋ฉด ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”:

pip install -r requirements.txt

2. ์„œ๋ฒ„ ์‹คํ–‰

์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด main.py๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”:

python main.py

์„œ๋ฒ„๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ 0.0.0.0:8080์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

3. ํด๋ผ์ด์–ธํŠธ ์‹คํ–‰

ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด client.py๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”:

python client.py

ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜์—ฌ MySQL ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ๋„๊ตฌ ๋ชฉ๋ก์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ™˜๊ฒฝ ์„ค์ •

ํ™˜๊ฒฝ์— ๋”ฐ๋ผ MySQL ์„ค์ •์ด ๋‹ค๋ฅด๊ฒŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค:

  • ๋กœ์ปฌ ํ™˜๊ฒฝ: src/env.py
  • ๊ฐœ๋ฐœ ํ™˜๊ฒฝ: src/env_dev.py

ํ™˜๊ฒฝ์€ APP_ENV ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ local์ž…๋‹ˆ๋‹ค.

export APP_ENV=dev  # ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •

์ œ๊ณต ๋„๊ตฌ

์„œ๋ฒ„์—์„œ ์ œ๊ณตํ•˜๋Š” ๋„๊ตฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  1. describe_tools
    ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋„๊ตฌ ๋ชฉ๋ก๊ณผ ์‚ฌ์šฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

  2. query_mysql(sql: str)
    ์ฃผ์–ด์ง„ SQL ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
    ์˜ˆ์‹œ: query_mysql("SELECT * FROM users LIMIT 10;")

์ฃผ์š” ํŒŒ์ผ ์„ค๋ช…

main.py

์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์ง„์ž…์ ์ž…๋‹ˆ๋‹ค. MCP ์ธ์Šคํ„ด์Šค๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ๋„๊ตฌ๋ฅผ ๋“ฑ๋กํ•œ ๋’ค ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

client.py

์„œ๋ฒ„์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•˜์—ฌ ๋„๊ตฌ๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

src/mysql_tool.py

MySQL ๊ด€๋ จ ๋„๊ตฌ๋ฅผ ์ •์˜ํ•œ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. query_mysql์™€ ๊ฐ™์€ ๋„๊ตฌ๋ฅผ ํ†ตํ•ด SQL ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

src/env.py ๋ฐ src/env_dev.py

MySQL ์—ฐ๊ฒฐ ์„ค์ •์„ ํฌํ•จํ•œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ์„ค์ •์„ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

pymcp MySQL Integration Server

225

Project Details

Featured Templates

View More

Start your free trial

Build your solution today. No credit card required.

Sign In

Register

Reset Password

Please enter your username or email address, you will receive a link to create a new password via email.