Cursor에서 MCP 서버 연동해서 사내 API 문서 자동 참조하기

문제 상황

레거시 프로젝트를 리팩토링하면서 사내 API를 자주 호출해야 했는데, API 문서가 Notion에 흩어져 있어서 매번 찾아보는 게 번거로웠다. Cursor로 코드를 작성할 때도 API 스펙을 일일이 복사 붙여넣기 해야 했다.

MCP로 해결

Claude의 Model Context Protocol(MCP)을 사용하면 외부 데이터 소스를 LLM에 연결할 수 있다는 걸 알게 됐다. Cursor도 MCP를 지원하기 시작해서, 사내 API 문서를 제공하는 간단한 MCP 서버를 만들어봤다.

// api-docs-mcp-server/index.ts
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import fs from 'fs/promises';

const server = new Server({
  name: 'api-docs-server',
  version: '1.0.0',
}, {
  capabilities: {
    resources: {},
  },
});

server.setRequestHandler('resources/list', async () => {
  return {
    resources: [
      { uri: 'api://user', name: 'User API' },
      { uri: 'api://payment', name: 'Payment API' },
    ],
  };
});

server.setRequestHandler('resources/read', async (request) => {
  const apiDocs = await fs.readFile('./docs/api-spec.json', 'utf-8');
  return { contents: [{ uri: request.params.uri, text: apiDocs }] };
});

const transport = new StdioServerTransport();
server.connect(transport);

Cursor 설정에 MCP 서버를 추가했다.

// ~/.cursor/mcp.json
{
  "mcpServers": {
    "api-docs": {
      "command": "node",
      "args": ["/path/to/api-docs-mcp-server/dist/index.js"]
    }
  }
}

결과

이제 Cursor에서 "User API의 로그인 엔드포인트 호출하는 코드 작성해줘"라고 입력하면, MCP 서버를 통해 API 스펙을 참조해서 정확한 코드를 생성해준다. 문서 찾아다니는 시간이 확실히 줄었고, API 스펙이 변경되면 JSON 파일만 업데이트하면 돼서 관리도 편하다.

다음에는 Git 커밋 히스토리나 Jira 이슈도 MCP로 연동해볼 생각이다.