본문으로 건너뛰기

MCP 설정 및 서버 스캐폴드

중급

MCP를 통해 Claude를 도구에 연결하기 위한 복사해 붙여넣는 스타터입니다. 필요한 만큼만 추리세요.

.mcp.json — 서버 선언 (프로젝트 공유)

{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": { "GITHUB_TOKEN": "${GITHUB_TOKEN}" }
},
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres", "${DATABASE_URL}"]
}
}
}

:::warning 비밀 값을 파일 밖에 두세요 환경 변수를 참조하세요(${GITHUB_TOKEN}) — 커밋되는 파일에 토큰을 하드코딩하지 마세요. :::

최소 stdio 서버 (TypeScript)

도구 하나를 노출하는 아주 작은 서버입니다. 핸들러를 여러분의 데이터에 맞게 조정하세요.

import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";

const server = new McpServer({ name: "echo", version: "1.0.0" });

server.tool(
"echo",
{ text: z.string().describe("Text to echo back") },
async ({ text }) => ({ content: [{ type: "text", text: `You said: ${text}` }] }),
);

await server.connect(new StdioServerTransport());

최소 stdio 서버 (Python)

from mcp.server.fastmcp import FastMCP

mcp = FastMCP("echo")

@mcp.tool()
def echo(text: str) -> str:
"""Echo the text back."""
return f"You said: {text}"

if __name__ == "__main__":
mcp.run() # stdio transport

서버를 배포하기 전에

  • 최소 권한 — 필요한 데이터/동작만 부여하세요(에이전트 보안).
  • 입력을 검증하세요. 오류는 결과로 반환하고, 충돌시키지 마세요.
  • 서드파티 서버를 검토하세요 연결하기 전에(서드파티 코드 검토).

다음