mongo-mcp-server

TeiNam/mongo-mcp-server

3.2

If you are the rightful owner of mongo-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

This is a powerful Model Context Protocol (MCP) server implementation that provides a standardized protocol for seamless interaction with MongoDB databases.

Tools
8
Resources
0
Prompts
0

MongoDB MCP ์„œ๋ฒ„

Python FastAPI FastMCP MongoDB Anthropic Docker License

MongoDB ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ์›ํ™œํ•œ ์ƒํ˜ธ์ž‘์šฉ์„ ํ‘œ์ค€ํ™”๋œ ํ”„๋กœํ† ์ฝœ๋กœ ์ œ๊ณตํ•˜๋Š” ๊ฐ•๋ ฅํ•œ Model Context Protocol(MCP) ์„œ๋ฒ„ ๊ตฌํ˜„์ฒด์ž…๋‹ˆ๋‹ค.

์ž‘์„ฑ์ž

Rastalion

๊ฐœ์š”

์ด MCP ์„œ๋ฒ„ ๊ตฌํ˜„์ฒด๋Š” Model Context Protocol์„ ํ†ตํ•ด MongoDB ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ•๋ ฅํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ์ปฌ๋ ‰์…˜ ๋ฐ ๋ฌธ์„œ์— ๋Œ€ํ•œ ์ž‘์—…์„ async/await ํŒจํ„ด๊ณผ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด ์•ˆ์ •์ ์œผ๋กœ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

ํŠน์ง•

  • MongoDB CRUD ์ž‘์—… ์™„๋ฒฝ ์ง€์›
  • MongoDB์™€์˜ ์•ˆ์ „ํ•œ ์—ฐ๊ฒฐ ์ฒ˜๋ฆฌ
  • ์ตœ์ ์˜ ์„ฑ๋Šฅ์„ ์œ„ํ•œ ๋น„๋™๊ธฐ(async/await) ํŒจํ„ด
  • ํฌ๊ด„์ ์ธ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ
  • ์‰ฌ์šด ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ Docker ์ง€์›
  • ํƒ€์ž… ํžŒํŠธ๋ฅผ ๊ฐ–์ถ˜ ์ฟผ๋ฆฌ ์‹คํ–‰
  • ์‹ค์‹œ๊ฐ„ ์—…๋ฐ์ดํŠธ๋ฅผ ์œ„ํ•œ SSE(Server-Sent Events) ์ง€์›

๋น ๋ฅธ ์‹œ์ž‘

CLI ๋„๊ตฌ๋กœ ์‚ฌ์šฉ

# ์ €์žฅ์†Œ ๋ณต์ œ
git clone https://github.com/yourusername/mongo-mcp-server.git
cd mongo-mcp-server

# ๊ฐœ๋ฐœ ๋ชจ๋“œ๋กœ ์„ค์น˜
pip install -e .

# ๋กœ์ปฌ์—์„œ CLI ๋ช…๋ น์œผ๋กœ ์‹คํ–‰
mongo-mcp-server

# SSE ํŠธ๋žœ์ŠคํฌํŠธ๋กœ ์‹คํ–‰
mongo-mcp-server --transport=sse

# MongoDB URL ์ง€์ •
mongo-mcp-server --mongodb-url="mongodb://username:password@hostname:port/dbname"

# ๋„์›€๋ง ๋ณด๊ธฐ
mongo-mcp-server --help

UVX๋ฅผ ํ†ตํ•ด ์‹คํ–‰

# UVX๊ฐ€ ์„ค์น˜๋œ ๊ฒฝ์šฐ
uvx mongo-mcp-server

# SSE ํŠธ๋žœ์ŠคํฌํŠธ ๋ชจ๋“œ
uvx mongo-mcp-server --transport=sse

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

# ์ €์žฅ์†Œ ๋ณต์ œ
git clone https://github.com/yourusername/mongo-mcp-server.git
cd mongo-mcp-server

# ์˜์กด์„ฑ ์„ค์น˜
pip install -r requirements.txt

# ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •
export MONGODB_URL="mongodb://username:password@hostname:port/dbname?authSource=admin"

# ์„œ๋ฒ„ ์‹คํ–‰
uvicorn app.main:app --host 0.0.0.0 --port 3000

Docker ์‚ฌ์šฉ

# ์ €์žฅ์†Œ ๋ณต์ œ
git clone https://github.com/yourusername/mongo-mcp-server.git
cd mongo-mcp-server

# Docker Compose๋กœ ๋นŒ๋“œ ๋ฐ ์‹คํ–‰
docker-compose up -d

# ๋กœ๊ทธ ํ™•์ธ
docker-compose logs -f mongo-mcp

UVX ์‚ฌ์šฉ

UVX๋Š” ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ์—์„œ ์„œ๋น„์Šค๋ฅผ ์‰ฝ๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

# ๋“ฑ๋ก ์Šคํฌ๋ฆฝํŠธ์— ์‹คํ–‰ ๊ถŒํ•œ ๋ถ€์—ฌ
chmod +x uvx-register.sh

# UVX์— ์„œ๋น„์Šค ๋“ฑ๋ก
./uvx-register.sh

# ์„œ๋น„์Šค ์‹œ์ž‘
uvx start mongo-mcp

# ์ƒํƒœ ํ™•์ธ
uvx status mongo-mcp

# ๋กœ๊ทธ ํ™•์ธ
uvx logs mongo-mcp

๋” ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

ํ™˜๊ฒฝ ๋ณ€์ˆ˜

์„œ๋ฒ„ ์‹คํ–‰ ์ „์— ๋‹ค์Œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜์„ธ์š”:

# ํ•„์ˆ˜
MONGODB_URL="mongodb://username:password@hostname:port/dbname?authSource=admin"

# ์„ ํƒ - ๊ธฐ๋ณธ๊ฐ’ ํ‘œ์‹œ
PORT=3000
MCP_TRANSPORT=http  # 'http' ๋˜๋Š” 'sse'

API ์—”๋“œํฌ์ธํŠธ

  • ์ƒํƒœ ํ™•์ธ: GET /health
  • MCP API: GET /mcp - FastMCP ์—”๋“œํฌ์ธํŠธ (OpenAPI ๋ฌธ์„œ)
  • SSE ์—ฐ๊ฒฐ: GET /sse - Server-Sent Events ์—”๋“œํฌ์ธํŠธ
  • ๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌ: POST /messages - ๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌ ์—”๋“œํฌ์ธํŠธ

IDE ํ†ตํ•ฉ

VS Code ์„ค์ •

VS Code settings.json์— ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”:

{
  "mcp": {
    "inputs": [
      {
        "type": "promptString",
        "id": "mongodbUri",
        "description": "MongoDB ์—ฐ๊ฒฐ URI"
      }
    ],
    "servers": {
      "mongodb": {
        "command": "mongo-mcp-server",
        "args": [
          "--mongodb-url",
          "$(mongodbUri)"
        ],
        "env": {}
      }
    }
  }
}

Claude ๋˜๋Š” ๋‹ค๋ฅธ AI ์–ด์‹œ์Šคํ„ดํŠธ

Claude ๋˜๋Š” ๋‹ค๋ฅธ AI ์–ด์‹œ์Šคํ„ดํŠธ๋ฅผ ์œ„ํ•ด MCP ์„œ๋ฒ„๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌ์„ฑํ•˜์„ธ์š”:

{
  "mcp": {
    "servers": {
      "mongodb": {
        "url": "http://localhost:3000/mcp"
      }
    }
  }
}

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

๋„๊ตฌ ์ด๋ฆ„์„ค๋ช…
listCollections๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ชจ๋“  ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ปฌ๋ ‰์…˜ ๋ชฉ๋ก ์กฐํšŒ
findMongoDB ์ฟผ๋ฆฌ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปฌ๋ ‰์…˜์˜ ๋ฌธ์„œ ์กฐํšŒ
insertOne์ปฌ๋ ‰์…˜์— ๋‹จ์ผ ๋ฌธ์„œ ์‚ฝ์ž…
updateOne์ปฌ๋ ‰์…˜์—์„œ ๋‹จ์ผ ๋ฌธ์„œ ์—…๋ฐ์ดํŠธ
deleteOne์ปฌ๋ ‰์…˜์—์„œ ๋‹จ์ผ ๋ฌธ์„œ ์‚ญ์ œ
indexes์ปฌ๋ ‰์…˜์˜ ๋ชจ๋“  ์ธ๋ฑ์Šค ๋ชฉ๋ก ์กฐํšŒ
createIndex์ปฌ๋ ‰์…˜์— ์ƒˆ๋กœ์šด ์ธ๋ฑ์Šค ์ƒ์„ฑ
dropIndex์ปฌ๋ ‰์…˜์—์„œ ๊ธฐ์กด ์ธ๋ฑ์Šค ์‚ญ์ œ

๊ณ ๊ธ‰ ์‚ฌ์šฉ๋ฒ•

์‚ฌ์šฉ์ž ์ •์˜ ๋„๊ตฌ ์ถ”๊ฐ€

  1. app/tools/documents/ ๋˜๋Š” app/tools/collection/์— ์ƒˆ ๋„๊ตฌ ์ƒ์„ฑ:
from ..base.tool import BaseTool


class MyNewTool(BaseTool):
    @property
    def name(self) -> str:
        return "my_new_tool"

    @property
    def description(self) -> str:
        return "์ƒˆ ๋„๊ตฌ์— ๋Œ€ํ•œ ์„ค๋ช…"

    @property
    def input_schema(self) -> Dict[str, Any]:
        return {
            "type": "object",
            "properties": {
                # ๋„๊ตฌ ์ž…๋ ฅ ์Šคํ‚ค๋งˆ ์ •์˜
            }
        }

    async def execute(self, params: Dict[str, Any]) -> Dict[str, Any]:
        # ๋„๊ตฌ ์‹คํ–‰ ๋กœ์ง ๊ตฌํ˜„
        pass
  1. app/tools/registry.py์— ๋„๊ตฌ ๋“ฑ๋ก:
from .documents.my_new_tool import MyNewTool

# ToolRegistry.__init__ ๋ฉ”์„œ๋“œ ๋‚ด์—์„œ
self.register_tool(MyNewTool())

CLI ๋„๊ตฌ ์„ค์น˜ ๋ฐ ๋ฐฐํฌ

PyPI์— ํŒจํ‚ค์ง€๋กœ ๋“ฑ๋กํ•˜์—ฌ ์ „์—ญ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

# setup.py ํ™•์ธ ํ›„ ๋นŒ๋“œ
python setup.py sdist bdist_wheel

# ํŒจํ‚ค์ง€ ์—…๋กœ๋“œ (PyPI ๊ณ„์ • ํ•„์š”)
twine upload dist/*

# ์ „์—ญ ์„ค์น˜
pip install mongodb-mcp-bridge

# ์–ด๋””์„œ๋“  ์‹คํ–‰ ๊ฐ€๋Šฅ
mongodb-mcp-bridge

๋ฌธ์ œ ํ•ด๊ฒฐ

  • ์„œ๋ฒ„๊ฐ€ ์‹œ์ž‘๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ: mongo-mcp-server --help๋กœ ๋„์›€๋ง ํ™•์ธ
  • MongoDB ์—ฐ๊ฒฐ ๋ฌธ์ œ: --mongodb-url ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์ธ
  • ๋„๊ตฌ ์‹คํ–‰ ์˜ค๋ฅ˜: ๋„๊ตฌ ๊ตฌํ˜„๊ณผ ์ž…๋ ฅ ๋งค๊ฐœ๋ณ€์ˆ˜ ํ™•์ธ
  • Docker ๋ฌธ์ œ: docker-compose logs mongo-mcp๋กœ ๋กœ๊ทธ ํ™•์ธ

Docker ๊ตฌ์„ฑ

Docker ์„ค์ •์—๋Š” ๋‹ค์Œ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค:

  • Python 3.12 ๊ธฐ๋ณธ ์ด๋ฏธ์ง€
  • Asia/Seoul ํƒ€์ž„์กด
  • MongoDB 4.4 ์ธ์Šคํ„ด์Šค
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์œ„ํ•œ ์˜๊ตฌ ๋ณผ๋ฅจ
  • ์–‘์ชฝ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ํ—ฌ์Šค ์ฒดํฌ
  • ์ž๋™ํ™”๋œ ๋„คํŠธ์›Œํฌ ๊ตฌ์„ฑ

๋ผ์ด์„ ์Šค

์ด ํ”„๋กœ์ ํŠธ๋Š” MIT ๋ผ์ด์„ ์Šค ํ•˜์— ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค - ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜์„ธ์š”.