프로그래밍공부(Programming Study)/AI&ML-Agent AI

Hello World MCP 서버 – Python & Node.js 구현과 Amazon Q Developer 연결

Chann._.y 2025. 9. 19.
728x90

 

직접 구현한 MCP server로 인사드립니다.

 

이번 글에서는 가장 간단한 Hello World MCP 서버를 직접 구현해보고,
Amazon Q Developer CLI에서 실제로 동작시키는 과정을 정리합니다.


1. Python 버전 Hello World MCP 서버

(1) 프로젝트 초기화

mkdir hello-mcp-server
cd hello-mcp-server

(2) Python 코드 작성

hello_mcp_server.py

#!/usr/bin/env python3
import asyncio
from mcp.server import Server
from mcp.server.stdio import stdio_server
from mcp.types import Tool, TextContent

server = Server("hello-mcp-server")

@server.list_tools()
async def list_tools() -> list[Tool]:
    return [
        Tool(
            name="say_hello",
            description="간단한 인사말을 반환합니다",
            inputSchema={
                "type": "object",
                "properties": {
                    "name": {"type": "string", "description": "인사할 대상의 이름"}
                }
            }
        )
    ]

@server.call_tool()
async def call_tool(name: str, arguments: dict) -> list[TextContent]:
    if name == "say_hello":
        target = arguments.get("name", "World")
        return [TextContent(type="text", text=f"Hello, {target}!")]
    raise ValueError(f"Unknown tool: {name}")

async def main():
    async with stdio_server() as (reader, writer):
        await server.run(reader, writer, server.create_initialization_options())

if __name__ == "__main__":
    asyncio.run(main())

def run():
    asyncio.run(main())

(3) pyproject.toml

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[project]
name = "hello-mcp-server"
version = "1.0.0"
dependencies = ["mcp>=0.4.0"]

[project.scripts]
hello-mcp-server = "hello_mcp_server:run"

2. Node.js 버전 Hello World MCP 서버

(1) 프로젝트 초기화

mkdir hello-mcp-server-node
cd hello-mcp-server-node
npm init -y
npm install mcp-server

(2) JavaScript 코드 작성

server.js

import { Server } from "mcp-server";

const server = new Server("hello-mcp-server-node");

server.listTools(async () => [
  {
    name: "say_hello",
    description: "간단한 인사말을 반환합니다",
    inputSchema: {
      type: "object",
      properties: {
        name: { type: "string", description: "인사할 대상의 이름" }
      }
    }
  }
]);

server.callTool(async (name, args) => {
  if (name === "say_hello") {
    const target = args.name || "World";
    return [{ type: "text", text: `Hello, ${target}!` }];
  }
  throw new Error(`Unknown tool: ${name}`);
});

server.run();

(3) package.json 수정

{
  "name": "hello-mcp-server-node",
  "version": "1.0.0",
  "type": "module",
  "scripts": {
    "start": "node server.js"
  },
  "dependencies": {
    "mcp-server": "^0.4.0"
  }
}

3. Q Developer MCP 설정

mcp.json

{
  "mcpServers": {
    "hello-server-python": {
      "command": "uv",
      "args": ["run", "hello-mcp-server"]
    },
    "hello-server-node": {
      "command": "npm",
      "args": ["run", "start"]
    }
  }
}

4. 테스트

  • Python:
  • uv run hello-mcp-server -> 프롬프트 그대로 유지되는 경우 && ps aux | grep hello-mcp-server 실행 시 uv run hello-mcp-server / /.venv/bin/hello-mcp-server 프로세스 실행중일 경우 O.K
  • Node.js:
  • npm run start
  • Q Developer:
  • 사용자: "Hello DevOps team이라고 인사해줘" Q Developer: (say_hello 도구 사용) → "Hello, DevOps team!"

5. 마무리

  • Python과 Node.js 두 환경에서 Hello World MCP 서버를 만들고 실행
  • Amazon Q Developer CLI의 mcp.json에 연결해 실제 대화에 활용 가능
  • 이후에는 사내 CI/CD, 모니터링, IaC 검증 등 DevOps 업무용 MCP 서버로 확장 가능

📌 다음 글 예고
다음글에서는 단순한 예제를 넘어서, 실제로 쓸만한 MCP 서버를 기획하고 설계하는 방법을 다룹니다.
DevOps 환경에서 활용 가능한 프로젝트 아이디어(예: IaC 검증, 보안 정책 점검, CI/CD 파이프라인 자동화 등)를 예시로 들고, 이를 MCP 서버로 어떻게 구현할 수 있을지 로드맵을 제시하겠습니다.

728x90

댓글