VOOZH about

URL: https://glama.ai/mcp/servers/ydb-platform/ydb-mcp?locale=ko-KR

โ‡ฑ YDB MCP by ydb-platform | Glama


YDB MCP


๐Ÿ‘ License
๐Ÿ‘ PyPI version

YDB๋ฅผ ์œ„ํ•œ Model Context Protocol ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค. MCP๋ฅผ ์ง€์›ํ•˜๋Š” ๋ชจ๋“  LLM์—์„œ YDB ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ์ด ํ†ตํ•ฉ์„ ํ†ตํ•ด YDB ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ AI ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘์—… ๋ฐ ์ž์—ฐ์–ด ์ƒํ˜ธ์ž‘์šฉ์ด ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค.

์‚ฌ์šฉ๋ฒ•

uvx ์‚ฌ์šฉ

uv run tool์˜ ๋ณ„์นญ์ธ uvx๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ช…์‹œ์ ์œผ๋กœ ์„ค์น˜ํ•˜์ง€ ์•Š๊ณ ๋„ ๋‹ค์–‘ํ•œ ํŒŒ์ด์ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” uvx๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ YDB MCP๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

์˜ˆ์‹œ: ์ต๋ช… ์ธ์ฆ ์‚ฌ์šฉ

{
 "mcpServers": {
 "ydb": {
 "command": "uvx",
 "args": [
 "ydb-mcp",
 "--ydb-endpoint", "grpc://localhost:2136",
 "--ydb-database", "/local"
 ]
 }
 }
}

pipx ์‚ฌ์šฉ

pipx๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ๊ฐ ๋ช…์‹œ์ ์œผ๋กœ ์„ค์น˜ํ•˜์ง€ ์•Š๊ณ ๋„ PyPI์—์„œ ๋‹ค์–‘ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ, ๋จผ์ € ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” pipx๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ YDB MCP๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

์˜ˆ์‹œ: ์ต๋ช… ์ธ์ฆ ์‚ฌ์šฉ

{
 "mcpServers": {
 "ydb": {
 "command": "pipx",
 "args": [
 "run", "ydb-mcp",
 "--ydb-endpoint", "grpc://localhost:2136",
 "--ydb-database", "/local"
 ]
 }
 }
}

pip ์‚ฌ์šฉ

YDB MCP๋Š” Python ํŒจํ‚ค์ง€ ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์ธ pip๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€๋Š” PyPI์—์„œ ์ œ๊ณต๋˜๋ฉฐ ํ•„์š”ํ•œ ๋ชจ๋“  ์ข…์†์„ฑ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

pip install ydb-mcp

YDB MCP๋ฅผ ์‹œ์ž‘ํ•˜๋ ค๋ฉด YDB ์ธ์Šคํ„ด์Šค์™€ ํ†ต์‹ ํ•˜๋„๋ก MCP ํด๋ผ์ด์–ธํŠธ๋ฅผ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ์„ค์ •์— ๋”ฐ๋ผ ์‚ฌ์šฉ์ž ์ •์˜ํ•˜๊ณ  MCP ํด๋ผ์ด์–ธํŠธ ์„ค์ •์— ๋„ฃ์„ ์ˆ˜ ์žˆ๋Š” ๊ตฌ์„ฑ ํŒŒ์ผ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค. ํŒŒ์ด์ฌ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ๊ฒฝ๋กœ๋Š” ydb-mcp ํŒจํ‚ค์ง€๊ฐ€ ์„ค์น˜๋œ ์˜ฌ๋ฐ”๋ฅธ ๊ฐ€์ƒ ํ™˜๊ฒฝ์œผ๋กœ ์กฐ์ •ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์‹œ: ์ต๋ช… ์ธ์ฆ ์‚ฌ์šฉ

{
 "mcpServers": {
 "ydb": {
 "command": "python3",
 "args": [
 "-m", "ydb_mcp",
 "--ydb-endpoint", "grpc://localhost:2136",
 "--ydb-database", "/local"
 ]
 }
 }
}

์ธ์ฆ

์‚ฌ์šฉ ๋ฐฉ๋ฒ•(uvx, pipx ๋˜๋Š” pip)์— ๊ด€๊ณ„์—†์ด YDB ์„ค์น˜์— ๋Œ€ํ•œ ์ธ์ฆ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ํŠน์ˆ˜ ๋ช…๋ น์ค„ ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜์‹ญ์‹œ์˜ค.

๋กœ๊ทธ์ธ/๋น„๋ฐ€๋ฒˆํ˜ธ ์ธ์ฆ ์‚ฌ์šฉ

๋กœ๊ทธ์ธ/๋น„๋ฐ€๋ฒˆํ˜ธ ์ธ์ฆ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด --ydb-auth-mode, --ydb-login ๋ฐ --ydb-password ์ธ์ˆ˜๋ฅผ ์ง€์ •ํ•˜์‹ญ์‹œ์˜ค:

{
 "mcpServers": {
 "ydb": {
 "command": "uvx",
 "args": [
 "ydb-mcp",
 "--ydb-endpoint", "grpc://localhost:2136",
 "--ydb-database", "/local",
 "--ydb-auth-mode", "login-password",
 "--ydb-login", "<your-username>",
 "--ydb-password", "<your-password>"
 ]
 }
 }
}

์•ก์„ธ์Šค ํ† ํฐ ์ธ์ฆ ์‚ฌ์šฉ

์•ก์„ธ์Šค ํ† ํฐ ์ธ์ฆ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด --ydb-auth-mode ๋ฐ --ydb-access-token ์ธ์ˆ˜๋ฅผ ์ง€์ •ํ•˜์‹ญ์‹œ์˜ค:

{
 "mcpServers": {
 "ydb": {
 "command": "uvx",
 "args": [
 "ydb-mcp",
 "--ydb-endpoint", "grpc://localhost:2136",
 "--ydb-database", "/local",
 "--ydb-auth-mode", "access-token",
 "--ydb-access-token", "qwerty123"
 ]
 }
 }
}

์„œ๋น„์Šค ๊ณ„์ • ์ธ์ฆ ์‚ฌ์šฉ

์„œ๋น„์Šค ๊ณ„์ • ์ธ์ฆ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด --ydb-auth-mode ๋ฐ --ydb-sa-key-file ์ธ์ˆ˜๋ฅผ ์ง€์ •ํ•˜์‹ญ์‹œ์˜ค:

{
 "mcpServers": {
 "ydb": {
 "command": "uvx",
 "args": [
 "ydb-mcp",
 "--ydb-endpoint", "grpc://localhost:2136",
 "--ydb-database", "/local",
 "--ydb-auth-mode", "service-account",
 "--ydb-sa-key-file", "~/sa_key.json"
 ]
 }
 }
}

Related MCP server: GreptimeDB MCP Server

์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋„๊ตฌ

YDB MCP๋Š” YDB ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค:

  • ydb_query: YDB ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•ด SQL ์ฟผ๋ฆฌ ์‹คํ–‰

    • ๋งค๊ฐœ๋ณ€์ˆ˜:

      • sql: ์‹คํ–‰ํ•  SQL ์ฟผ๋ฆฌ ๋ฌธ์ž์—ด

  • ydb_query_with_params: JSON ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งค๊ฐœ๋ณ€์ˆ˜ํ™”๋œ SQL ์ฟผ๋ฆฌ ์‹คํ–‰

    • ๋งค๊ฐœ๋ณ€์ˆ˜:

      • sql: ๋งค๊ฐœ๋ณ€์ˆ˜ ์ž๋ฆฌ ํ‘œ์‹œ์ž๊ฐ€ ์žˆ๋Š” SQL ์ฟผ๋ฆฌ ๋ฌธ์ž์—ด

      • params: ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’์ด ํฌํ•จ๋œ JSON ๋ฌธ์ž์—ด

  • ydb_explain_query: SQL ์ฟผ๋ฆฌ ์„ค๋ช…(์‹คํ–‰ ๊ณ„ํš ๋ฐ˜ํ™˜)

    • ๋งค๊ฐœ๋ณ€์ˆ˜:

      • sql: ์„ค๋ช…ํ•  SQL ์ฟผ๋ฆฌ ๋ฌธ์ž์—ด

  • ydb_explain_query_with_params: ๋งค๊ฐœ๋ณ€์ˆ˜ํ™”๋œ SQL ์ฟผ๋ฆฌ ์„ค๋ช…

    • ๋งค๊ฐœ๋ณ€์ˆ˜:

      • sql: ๋งค๊ฐœ๋ณ€์ˆ˜ ์ž๋ฆฌ ํ‘œ์‹œ์ž๊ฐ€ ์žˆ๋Š” SQL ์ฟผ๋ฆฌ ๋ฌธ์ž์—ด

      • params: JSON ๋ฌธ์ž์—ด

  • ydb_list_directory: YDB์˜ ๋””๋ ‰ํ† ๋ฆฌ ๋‚ด์šฉ ๋‚˜์—ด

    • ๋งค๊ฐœ๋ณ€์ˆ˜:

      • path: ๋‚˜์—ดํ•  YDB ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ

  • ydb_describe_path: YDB ๊ฒฝ๋กœ(ํ…Œ์ด๋ธ”, ๋””๋ ‰ํ† ๋ฆฌ ๋“ฑ)์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด ๊ฐ€์ ธ์˜ค๊ธฐ

    • ๋งค๊ฐœ๋ณ€์ˆ˜:

      • path: ์„ค๋ช…ํ•  YDB ๊ฒฝ๋กœ

  • ydb_status: ํ˜„์žฌ YDB ์—ฐ๊ฒฐ ์ƒํƒœ ๊ฐ€์ ธ์˜ค๊ธฐ

์‚ฌ์šฉ์ž ์ •์˜ MCP ์„œ๋ฒ„ ๊ตฌ์ถ•

YDBMCPServer๋Š” ์„œ๋ธŒํด๋ž˜์‹ฑ๋˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์„ค์ •๋œ YDB ์—ฐ๊ฒฐ ์œ„์— ์ž์‹ ๋งŒ์˜ ๋„๊ตฌ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์„ ํƒ์ ์œผ๋กœ ๋‚ด์žฅ๋œ ์ผ๋ฐ˜ ๋„๊ตฌ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ•„์š”ํ•œ ์ฟผ๋ฆฌ๋งŒ ๋…ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์™œ ์‚ฌ์šฉ์ž ์ •์˜ ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•˜๋‚˜์š”?

  • ๋ณด์•ˆ โ€” ์ž„์˜์˜ SQL ์‹คํ–‰์„ ๋…ธ์ถœํ•˜๋Š” ๋Œ€์‹  LLM์„ ๊ณ ์ •๋œ ์ฝ๊ธฐ ์ „์šฉ ์ฟผ๋ฆฌ ์„ธํŠธ๋กœ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.

  • ๋„๋ฉ”์ธ ํŠน์ˆ˜์„ฑ โ€” ์›์‹œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ธฐ๋ณธ ์š”์†Œ๊ฐ€ ์•„๋‹Œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ๋งž๋Š” ๋„๊ตฌ๋ฅผ ๋ชจ๋ธ์— ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  • ๋‹จ์ˆœ์„ฑ โ€” ๋„๊ตฌ๊ฐ€ ์ ์„์ˆ˜๋ก ๋ชจ๋ธ์˜ ๋ชจํ˜ธ์„ฑ์ด ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.

์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฉ”์„œ๋“œ

์„œ๋ธŒํด๋ž˜์Šค์—์„œ ๋‹ค์Œ์„ ์žฌ์ •์˜ํ•˜๊ฑฐ๋‚˜ ํ˜ธ์ถœํ•˜์‹ญ์‹œ์˜ค:

๋ฉ”์„œ๋“œ

์„ค๋ช…

await self.execute(sql, params=None)

SQL ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. list[dict]๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ, ๊ฐ ๋”•์…”๋„ˆ๋ฆฌ๋Š” "columns"์™€ "rows"๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

await self.explain(sql, params=None)

์ฟผ๋ฆฌ ์‹คํ–‰ ๊ณ„ํš์„ dict๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

await self.list_directory(path)

YDB ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค. "path"์™€ "items"๊ฐ€ ํฌํ•จ๋œ dict๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

await self.describe_path(path)

YDB ๊ฒฝ๋กœ(ํ…Œ์ด๋ธ” ์Šคํ‚ค๋งˆ, ๋””๋ ‰ํ† ๋ฆฌ ๋“ฑ)๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. dict๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

params ์ธ์ˆ˜๋Š” ์ผ๋ฐ˜ dict์ž…๋‹ˆ๋‹ค. $ ์ ‘๋‘์‚ฌ๊ฐ€ ์—†๋Š” ํ‚ค์—๋Š” ์ž๋™์œผ๋กœ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ๋ช…์‹œ์ ์ธ YDB ์œ ํ˜•์„ ์ง€์ •ํ•˜๋ ค๋ฉด (value, "TypeName") ํŠœํ”Œ์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค(์˜ˆ: {"id": (42, "Int64")}).

์ผ๋ฐ˜ ๋„๊ตฌ ์ œ์–ด

generic_tools ํด๋ž˜์Šค ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋“ฑ๋ก๋œ ๋‚ด์žฅ ๋„๊ตฌ๋ฅผ ์ œ์–ดํ•˜์‹ญ์‹œ์˜ค:

๊ฐ’

ํšจ๊ณผ

set(YDBGenericTool)

๋ชจ๋“  ๋‚ด์žฅ ๋„๊ตฌ(๊ธฐ๋ณธ๊ฐ’)

set()

๋‚ด์žฅ ๋„๊ตฌ ์—†์Œ โ€” ์‚ฌ์šฉ์ž ์ •์˜ ๋„๊ตฌ๋งŒ ์‚ฌ์šฉ

{YDBGenericTool.QUERY, YDBGenericTool.STATUS}

๋‚˜์—ด๋œ ๋„๊ตฌ๋งŒ ์‚ฌ์šฉ

YDBGenericTool์€ ๋ฌธ์ž์—ด ์—ด๊ฑฐํ˜•์ด๋ฉฐ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ’์€ QUERY, QUERY_WITH_PARAMS, EXPLAIN, EXPLAIN_WITH_PARAMS, STATUS, LIST_DIRECTORY, DESCRIBE_PATH์ž…๋‹ˆ๋‹ค.

์˜ˆ์‹œ

# my_server.py
from ydb_mcp import YDBMCPServer, YDBGenericTool, serialize_ydb_response


class OrdersServer(YDBMCPServer):
 """Minimal read-only MCP server for the orders service."""

 generic_tools = {YDBGenericTool.STATUS} # keep status check for diagnostics

 def __init__(self, **kwargs):
 super().__init__(**kwargs)

 @self.tool()
 async def get_order(order_id: str) -> str:
 """Fetch a single order by ID."""
 rows = await self.execute(
 "SELECT * FROM orders WHERE id = $id",
 {"id": order_id},
 )
 return serialize_ydb_response(rows)

 @self.tool()
 async def list_recent_orders(limit: int = 10) -> str:
 """Return the most recent orders."""
 rows = await self.execute(
 "SELECT * FROM orders ORDER BY created_at DESC LIMIT $limit",
 {"limit": limit},
 )
 return serialize_ydb_response(rows)


if __name__ == "__main__":
 OrdersServer(
 endpoint="grpc://localhost:2136",
 database="/local",
 ).run()

์ง์ ‘ ์‹คํ–‰:

python my_server.py

๋˜๋Š” ํด๋ผ์ด์–ธํŠธ ๊ตฌ์„ฑ์—์„œ MCP ์„œ๋ฒ„๋กœ ์—ฐ๊ฒฐ:

{
 "mcpServers": {
 "orders": {
 "command": "python",
 "args": ["my_server.py"]
 }
 }
}

๊ฐœ๋ฐœ

์ด ํ”„๋กœ์ ํŠธ๋Š” ์ฃผ์š” ๊ฐœ๋ฐœ ๋„๊ตฌ๋กœ Make๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ผ๋ฐ˜์ ์ธ ๊ฐœ๋ฐœ ์ž‘์—…์— ์ผ๊ด€๋œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ Make ๋ช…๋ น์–ด

์ด ํ”„๋กœ์ ํŠธ์—๋Š” ๊ฐœ๋ฐœ ์ž‘์—…์„ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๋ช…๋ น์–ด๊ฐ€ ํฌํ•จ๋œ ํฌ๊ด„์ ์ธ Makefile์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋ช…๋ น์–ด๋Š” ๊ฐœ๋ฐœ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ๊ฐ„์†Œํ™”ํ•˜๊ณ  ์ฝ”๋“œ ํ’ˆ์งˆ์„ ๋ณด์žฅํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค:

  • make all: clean, lint, test๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰(๊ธฐ๋ณธ ๋Œ€์ƒ)

  • make clean: ๋ชจ๋“  ๋นŒ๋“œ ์•„ํ‹ฐํŒฉํŠธ ๋ฐ ์ž„์‹œ ํŒŒ์ผ ์ œ๊ฑฐ

  • make test: pytest๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ํ…Œ์ŠคํŠธ ์‹คํ–‰

    • ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ๊ตฌ์„ฑ ๊ฐ€๋Šฅ:

      • LOG_LEVEL (๊ธฐ๋ณธ๊ฐ’: WARNING) - ํ…Œ์ŠคํŠธ ์ถœ๋ ฅ ์ƒ์„ธ๋„ ์ œ์–ด (DEBUG, INFO, WARNING, ERROR)

  • make unit-tests: ์ƒ์„ธ ์ถœ๋ ฅ๊ณผ ํ•จ๊ป˜ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋งŒ ์‹คํ–‰

    • ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ๊ตฌ์„ฑ ๊ฐ€๋Šฅ:

      • LOG_LEVEL (๊ธฐ๋ณธ๊ฐ’: WARNING) - ํ…Œ์ŠคํŠธ ์ถœ๋ ฅ ์ƒ์„ธ๋„ ์ œ์–ด (DEBUG, INFO, WARNING, ERROR)

  • make integration-tests: ์ƒ์„ธ ์ถœ๋ ฅ๊ณผ ํ•จ๊ป˜ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋งŒ ์‹คํ–‰

    • ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ๊ตฌ์„ฑ ๊ฐ€๋Šฅ:

      • YDB_ENDPOINT (๊ธฐ๋ณธ๊ฐ’: grpc://localhost:2136)

      • YDB_DATABASE (๊ธฐ๋ณธ๊ฐ’: /local)

      • MCP_HOST (๊ธฐ๋ณธ๊ฐ’: 127.0.0.1)

      • MCP_PORT (๊ธฐ๋ณธ๊ฐ’: 8989)

      • LOG_LEVEL (๊ธฐ๋ณธ๊ฐ’: WARNING) - ํ…Œ์ŠคํŠธ ์ถœ๋ ฅ ์ƒ์„ธ๋„ ์ œ์–ด (DEBUG, INFO, WARNING, ERROR)

  • make run-server: YDB MCP ์„œ๋ฒ„ ์‹œ์ž‘

    • ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ๊ตฌ์„ฑ ๊ฐ€๋Šฅ:

      • YDB_ENDPOINT (๊ธฐ๋ณธ๊ฐ’: grpc://localhost:2136)

      • YDB_DATABASE (๊ธฐ๋ณธ๊ฐ’: /local)

    • ARGS="your args"๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ถ”๊ฐ€ ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • make lint: ๋ชจ๋“  ๋ฆฐํŠธ ๊ฒ€์‚ฌ ์‹คํ–‰(flake8, mypy, black, isort)

  • make format: black ๋ฐ isort๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ ํ˜•์‹ ์ง€์ •

  • make install: ๊ฐœ๋ฐœ ๋ชจ๋“œ๋กœ ํŒจํ‚ค์ง€ ์„ค์น˜

  • make dev: ๋ชจ๋“  ๊ฐœ๋ฐœ ์ข…์†์„ฑ๊ณผ ํ•จ๊ป˜ ๊ฐœ๋ฐœ ๋ชจ๋“œ๋กœ ํŒจํ‚ค์ง€ ์„ค์น˜

ํ…Œ์ŠคํŠธ ์ƒ์„ธ๋„ ์ œ์–ด

๊ธฐ๋ณธ์ ์œผ๋กœ ํ…Œ์ŠคํŠธ๋Š” ์ถœ๋ ฅ์„ ๊น”๋”ํ•˜๊ฒŒ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ตœ์†Œํ•œ์˜ ์ถœ๋ ฅ(WARNING ์ˆ˜์ค€)์œผ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. LOG_LEVEL ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ŠคํŠธ ์ถœ๋ ฅ์˜ ์ƒ์„ธ๋„๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

# Run all tests with debug output
make test LOG_LEVEL=DEBUG

# Run integration tests with info output
make integration-tests LOG_LEVEL=INFO

# Run unit tests with warning output (default)
make unit-tests LOG_LEVEL=WARNING

์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋กœ๊ทธ ์ˆ˜์ค€:

  • DEBUG: ๋ชจ๋“  ๋””๋ฒ„๊ทธ ๋ฉ”์‹œ์ง€ ํ‘œ์‹œ, ์ƒ์„ธํ•œ ํ…Œ์ŠคํŠธ ํ๋ฆ„์— ์œ ์šฉ

  • INFO: ์ •๋ณด ๋ฉ”์‹œ์ง€ ์ด์ƒ ํ‘œ์‹œ

  • WARNING: ๊ฒฝ๊ณ  ๋ฐ ์˜ค๋ฅ˜๋งŒ ํ‘œ์‹œ(๊ธฐ๋ณธ๊ฐ’)

  • ERROR: ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋งŒ ํ‘œ์‹œ

A
license - permissive license
B
quality
D
maintenance

Maintenance

โ€“Maintainers
โ€“Response time
5wRelease cycle
8Releases (12mo)
Commit activity
Issues opened vs closed

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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/ydb-platform/ydb-mcp'

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