콘텐츠로 이동

타입스크립트 MCP 서버

대형 언어 모델(LLM)에 컨텍스트를 제공하기 위한 TypeScript Model Context Protocol (MCP) 서버 생성하기

Model Context Protocol (MCP)는 AI 어시스턴트가 외부 도구 및 리소스와 상호작용할 수 있도록 하는 개방형 표준입니다. LLM이 다음을 수행할 수 있는 일관된 방식을 제공합니다:

  • 작업 수행 또는 정보 검색을 위한 도구(함수) 실행
  • 컨텍스트 또는 데이터를 제공하는 리소스 접근

TypeScript MCP 서버를 두 가지 방식으로 생성할 수 있습니다:

  1. 설치 Nx Console VSCode Plugin 아직 설치하지 않았다면
  2. VSCode에서 Nx 콘솔 열기
  3. 클릭 Generate (UI) "Common Nx Commands" 섹션에서
  4. 검색 @aws/nx-plugin - ts#mcp-server
  5. 필수 매개변수 입력
    • 클릭 Generate
    매개변수 타입 기본값 설명
    project 필수 string - The project to add an MCP server to
    name string - The name of your MCP server (default: mcp-server)

    생성기는 기존 TypeScript 프로젝트에 다음 파일들을 추가합니다:

    • 디렉터리your-project/
      • 디렉터리src/
        • 디렉터리mcp-server/ (사용자 지정 이름 지정 시 변경됨)
          • index.ts MCP 서버 진입점
          • server.ts 메인 서버 정의
          • 디렉터리tools/
            • add.ts 샘플 도구
          • 디렉터리resources/
            • sample-guidance.ts 샘플 리소스
      • package.json bin 항목 및 MCP 종속성 추가됨
      • project.json MCP 서버 실행 타겟 업데이트됨

    도구는 AI 어시스턴트가 호출할 수 있는 기능입니다. server.ts 파일에 새 도구를 추가할 수 있습니다:

    server.tool("toolName", "tool description",
    { param1: z.string(), param2: z.number() }, // Zod를 사용한 입력 스키마
    async ({ param1, param2 }) => {
    // 도구 구현
    return {
    content: [{ type: "text", text: "Result" }]
    };
    }
    );

    리소스는 AI 어시스턴트에 컨텍스트를 제공합니다. 파일에서 정적 리소스를 추가하거나 동적 리소스를 생성할 수 있습니다:

    const exampleContext = '반환할 컨텍스트 내용';
    server.resource('resource-name', 'example://resource', async (uri) => ({
    contents: [{ uri: uri.href, text: exampleContext }],
    }));
    // 동적 리소스
    server.resource('dynamic-resource', 'dynamic://resource', async (uri) => {
    const data = await fetchSomeData();
    return {
    contents: [{ uri: uri.href, text: data }],
    };
    });

    MCP를 지원하는 대부분의 AI 어시스턴트는 유사한 구성 방식을 사용합니다. MCP 서버 세부 정보가 포함된 설정 파일을 생성하거나 업데이트해야 합니다:

    {
    "mcpServers": {
    "your-mcp-server": {
    "command": "npx",
    "args": ["tsx", "/path/to/your-mcp-server/index.ts"]
    }
    }
    }

    MCP 서버를 개발하는 동안 --watch 플래그를 구성하면 AI 어시스턴트가 항상 최신 버전의 도구/리소스를 인식합니다:

    {
    "mcpServers": {
    "your-mcp-server": {
    "command": "npx",
    "args": ["tsx", "--watch", "/path/to/your-mcp-server/index.ts"]
    }
    }
    }

    특정 AI 어시스턴트와 MCP를 구성하려면 다음 문서를 참조하세요:

    MCP 서버를 테스트하고 사용하는 가장 쉬운 방법은 AI 어시스턴트와 연동하는 것입니다(위 참조). 하지만 STDIO 전송에서 Streamable HTTP 전송으로 전환할 때 유용할 수 있는 <your-server-name>-serve 타겟을 사용해 서버를 실행할 수도 있습니다.

    Terminal window
    pnpm nx run your-project:your-server-name-serve

    이 명령어는 파일 변경 시 서버를 자동으로 재시작하는 tsx --watch를 사용합니다.