[MCP_3] MCP Server Configuration (2)

코딩을 뿌리는 감자·2025년 11월 2일

MCP

목록 보기
3/4
post-thumbnail

목차

이어서...

[MCP_2] MCP Server Configuration (1) 해당 페이지에 이어서, 남은 연동 대상들에 대해서 알아보도록 할 것이다.

첫 번째와 두 번째 연동 대상이었던 Intellij와 Atlassian에 이어서, Local DB, SSH DB 그리고 Postman을 연동한 과정과 그 결과 어떤 식으로 활용할 수 있었는지에 대해 다루어 볼 것이다.

세 번째 연동 대상: Local DB

업무 중 특정 데이터를 확인하기 위해 데이터베이스를 직접 조회하는 일이 생각보다 쉽지 않다는 점을 깨달았다.

이에 Local Database를 MCP와 연동하여,

"해당 데이터와 연관관계를 맺고 있는 데이터들에 대해서 알려줘."

와 같은 질의가 가능하도록 하고자 했다.

네 번째 연동 대상: SSH DB

Local DB와의 MCP 연동을 완료한 이후에는 SSH를 통해 접근할 수 있는 dev DB도 MCP에 연동하여 업무 효율을 높이고자 했다.

사실 SSH DB 연동을 가장 먼저 진행하고 싶었으나, 먼저 Local DB를 통해 MCP 연결을 검증한 뒤 SSH DB 연동을 단계적으로 진행하였다.

다섯 번째 연동 대상: Postman

업무 중 API 검증을 위해 Postman을 자주 사용한다. 특히 dev뿐만 아니라 여러 환경이 존재하기 때문에, 환경이 바뀔 때마다 base path, space, token 등을 수정하는 과정이 번거로웠다.

이에 Postman을 MCP에 연동하여 Controller 단위의 API collection을 보다 쉽게 작성하고, 환경 전환 시에도 효율적으로 검증을 진행할 수 있도록 하고자 했다.

Local DB MCP Server

사실 타 MCP Server를 등록하는 과정과 유사하게 등록하였다.

  1. Properties 설정 (보안이 필요한 정보들을 application-secret.yml이나, .env 파일에 저장)
  2. Service 코드 작성을 통한 Tool 등록

아래 글 중 Java MCP Server 예시를 참고하며, 구성하였다.

https://modelcontextprotocol.io/docs/develop/build-server#java

SSH DB MCP Server

해당 서버 구현 또한, Properties를 설정하고 Tool을 등록하였다.

애플리케이션 시작 시 자동으로 SSH 터널을 생성하고, 로컬 포트를 통해 원격 RDS에 접근할 수 있도록 구성했다.

또한, 보안을 위해 SSH 연결에서는 읽기 전용 쿼리만 허용하도록 검증 로직을 구현했다:

private boolean isReadOnlyQuery(String trimmedQuery) {
    String[] allowedPrefixes = {
        "SELECT", "SHOW", "DESCRIBE", "DESC", "EXPLAIN"
    };

    for (String prefix : allowedPrefixes) {
        if (trimmedQuery.startsWith(prefix)) {
            return true;
        }
    }
    return false;
}

INSERT, UPDATE, DELETE 등의 쿼리는 자동으로 차단되어 실수로 개발 DB의 데이터가 변경되는 것을 방지한다.

이를 통해서 이제 다음과 같은 요청이 가능해졌다.

"SSH 터널로 dev_*** 데이터베이스의 potato 테이블을 조회해줘"

"개발 DB에서 space가 'satangmasitda' 인 활성화된 데이터 개수를 세어줘"

업무 활용에 있어서 만족도가 굉장히 높은 MCP 서버 구현이었다. 특히, 급하게 dev 환경 DB 와 타 환경 DB의 차이를 확인해야할 때, 아주 빠르게 원인 파악이 가능해졌다.

Postman MCP Server

Postman API를 발급 받아서 연동할 수 있다. 연동을 통해 claude code에서 collection을 생성하고 관리할 수 있도록 구현하였다.

postman:
  api-key: your-api-key
  api-url: https://api.postman.com
  local-save-path: /Users/potato/Desktop/postman #json을 저장할 폴더 위치
  default-base-url: http://localhost:8080

Controller 분석을 통한 자동 생성

가장 핵심적인 기능은 Spring Controller 코드를 분석하여 Postman Collection을 자동으로 생성하는 것이다:

generateCollectionFromController Tool

@Tool(description = "Generate a Postman collection from Spring Controller endpoints.")
public String generateCollectionFromController(
    @ToolParam(description = "Name of the collection") String collectionName,
    @ToolParam(description = "Base URL for API requests") String baseUrl,
    @ToolParam(description = "Base path prefix") String basePath,
    @ToolParam(description = "JSON array of endpoint definitions") String endpointsJson,
    @ToolParam(description = "Upload to Postman Cloud") Boolean uploadToCloud
)

Claude Code는 Intellij MCP를 통해 Controller 파일을 읽고 분석한 후, @RequestMapping, @GetMapping 등의 어노테이션을 파싱하여 endpoint 정보를 추출한다. 이를 generateCollectionFromController tool에 전달하면 자동으로 Postman Collection이 생성된다.

Collection 구조 생성

이후, Postman Collection v2.1.0 포맷에 맞춰 JSON 구조를 생성한다. 이후, properties에 넣어두었던 postman cloud에 생성한 json 파일을 업로드 한다.

마무리

이렇게 MCP Server 구성 방법에 대한 내용을 여기서 마무리하려고 한다. 처음에 Tool과 Properties만 잘 설정해 둔다면, 이후에는 다른 MCP Server를 추가할 때마다 이전 과정을 반복하면서 약간만 변형하면 된다.

다음 글에서는 SKILL을 통해 MCP Tool을 어떻게 개선했는지, 그리고 그 결과 Claude Code를 어떻게 활용할 수 있게 되었는지에 대해 살펴보겠다.

0개의 댓글