[MCP] Claude Code에서 Intellij와 Wiki MCP 서버 연동하기

코딩을 뿌리는 감자·2025년 10월 6일
0

MCP

목록 보기
1/1

Claude Code와 MCP 연동의 필요성

현재 Claude Code는 터미널 환경에서 사용할 수 있도록 설정해 두었다.

Claude Code를 도입한 가장 큰 이유는 MCP 서버를 자유롭게 연결하고 제어하기 위함이었다.

(물론 최근에는 Claude Desktop에서도 MCP 연동이 가능해지면서 Claude Code의 필요성이 조금 줄긴 했지만, 한도에 걸리지 않고 Claude를 사용할 수 있다는 점은 여전히 큰 장점이다.)

첫 번째 MCP 서버 연동 대상 : Intellij

현재 많은 개발자들이 Cursor를 통해 LLM 기능을 프로젝트 전반에 자유롭게 활요하고 있다. 그만큼 VSCode 생태계로의 이동도 많아졌지만, 기존에 Intellij에 익숙한 사용자들은 여전히 단축키나 워크플로우 이질감 때문에 Intellij를 선호하고 있는 상황이다.

이미지 출처: naver blog

나 역시 현재는 Cursor와 Intellj를 병행하여 사용중이다. ( 코드 작성은 Intellij에서, LLM 호출은 필요할 때마다 Cursor에서) 하지만 이렇게 병행할 경우, 화면이 분산되고, 툴 간 전환이 자주 발생해서 불편함이 크다. 따라서, Intellij 자체에 Claude MCP 서버를 연결함으로써, IntelliJ를 Cursor처럼 쓰고 싶은 욕구가 있었다. 이것이 Claude code를 도입하고 MCP를 구성한 첫 번째 이유였다.

두 번째 연동 대상 : Wiki

두 번째로 MCP 연동을 적용한 대상은 Atlassian Wiki였다. 목표는 다음과 같다:

  • Claude에게 Wiki기반 정보를 탐색하게 하거나
  • 문서 작성 요청을 통해 글을 대신 작성하게 하는 것

Intellij의 경우, 2025년 2월 릴리스를 기준으로 JetBrains에서 공식적으로 MCP Server를 지원하게 되어 연동이 간편하다. 하지만 Wiki는 직접 MCP 서버를 개발해야 하며, 구현 복잡도나 연동 과정도 그만큼 많아지는 편이다.

그래서 이 문서에는 보다 간단한 Intellij MCP 연동부터 먼저 설명하고자 한다.

Intellij MCP Server

intellij의 경우엔 MCP server를 지원해주기 때문에, 간단히 enable만 해주면 된다.

버전 확인

Intellij를 mcp 연동하기 위해서 가장 중요했던 부분은 버전 확인이다. 2025.2월 release가 꼭 반영되어 있어야 한다.

MCP Server Plugin

다음으로 MCP Server plugin을 enable 해준다.

settings > plugins 에서 MCP Server를 검색하고 Enable 하면 된다.

MCP Server Auto-Configure

Settings > Tools > MCP Server 에서 Claude Code를 Auto-Configure할 수 있다. Tools에서 MCP Server가 보이지 않는다면, 2025.2 릴리즈가 반영되지 않는 것일수도 있으니 확인 바란다.

이후, Claude Code에서 /mcp 명령어로 Intellij와의 통합이 가능해지며, cursor 처럼 claude가 코드 파일을 탐색.편집.실행할 수 있게 된다.

이후, Auto-Configure 옆에 있는 화살표를 누르게 되면 Copy Config라는 버튼이 보인다. 복사한 내용은 아래와 같다.


{
  "jetbrains": {
    "url": "http://localhost:64342/sse",
    "type": "sse"
  }
}

해당 코드는 mcp client(claude code)로 하여금 intellij를 mcp server로서 인식하게 해주는 코드이다. 해당 url 주소로 claude code가 SSE 연결을 열게 된다.

해당 코드를 원래 root directory / .claude.json 편집을 통해 넣어주어야 하는데, Auto-Configure를 누르는 순간에 이미 해당 json에 편집 적용이 되었다.

intellij MCP 연동 확인

터미널에서 claude code로 들어간 후, /mcp 명령어를 통해 jetbrains (intellij) 가 잘 연결되었음을 확인할 수 있다.

이후, leo-banner에 테스트 파일 만들어줘. 라고 요청하면 잘 생성하는 것을 확인할 수 있다.


Wiki MCP Server

다음으로, wiki를 mcp 연동해보자.

wiki는 기본적으로 mcp server를 제공해주지 않기 때문에, mcp server를 직접 만들어주어야 한다.

MCP Server Example : 해당 문서에서 언어 별로 어떻게 MCP Server를 만드는지 간단한 예제가 있었다. 이를 참고해서 서버를 구성하였다. 언어의 경우, 익숙한 언어인 Java (Spring)을 선택하였다.

서버를 구성하면서 주의해야 하는 점은 STDIO 기반 서버로 구성하게 될 경우에는 로깅에 조심해야 한다. 로깅이 JSON_RPC 메시지를 손상시킬 수 있다.

Dependency 설정

dependencies {
  implementation platform("org.springframework.ai:spring-ai-starter-mcp-server")
  implementation platform("org.springframework:spring-web")
}

dependency를 이렇게 추가하라고 하지만, 사실 이렇게 추가하면 mcp 관련 어노테이션을 불러오지 못한다.

platform 은 BOM 용으로 사용하는 키워드이다. (버전 맞추기 위해서) 하지만, spring-ai-mcp-server는 일반 JAR 라이브러리지 BOM이 아니기 때문에 동작하지 않는다.


// BOM을 명시적으로 선언해서 전체 버전 일치 유도
implementation platform("org.springframework.ai:spring-ai-bom:1.1.0-M3")
 
// 실제 사용할 MCP 서버용 라이브러리
implementation 'org.springframework.ai:spring-ai-starter-mcp-server'

따라서, 위와 같이 dependency를 다시 적어주었다.

sonatype : 해당 라이브러리 저장소에서 spring-ai-mcp-server에 대한 gradle snippets를 참고해서 적었다.

application.yml

다음으로, yml 파일들을 작성하였다.

spring:
  application:
    name: mcp_server
  main:
    banner-mode: off

MCP 기반 서버는 앞에서 말했듯, 로그에 민감하기 때문에 banner-mode를 off로 설정하였다.

application-secret.yml

다음으로, application-secret.yml을 구성해주어, 보안 관련된 것들을 따로 관리해 주었다. (.gitignore)

wiki:
  base-url: https://atlassian.net/wiki
  email: 이메일@gmail.com
  api-token: 개인 wiki 토큰 생성
  space-key: 스페이스 키

이제 본격적으로 코드 작성으로 넘어간다.

WikiService

본격적인 WikiService에 대한 코드 확인은 아래 github repository를 통해 확인할 수 있다.

Github repository : https://github.com/20hyukim/personal-mcp-server

일부 코드를 발췌하여 살펴보면 다음과 같다 :

@Tool(description = "Search wiki pages by keyword in title")
public String searchPages(
        @ToolParam(description = "Search keyword") String keyword
) {
    String cql = "title~\"" + keyword + "\"";
    String uri = "/rest/api/content/search?cql=" + UriUtils.encode(cql, StandardCharsets.UTF_8);
 
    return restClient.get()
            .uri(uri)
            .retrieve()
            .body(String.class); // Claude에게 JSON 결과 그대로 전달
}

이 메서드는 @Tool 어노테이션을 통해 Claude Code에서 호출 가능한 MCP Tool로 등록된다. Claude가 이 MCP 서버에 연결되면, /searchPages와 같은 명령어를 통해 이 메서드를 실행할 수 있게 된다.

내부적으로는 Atlassian Confluence Wiki의 REST API 중 /rest/api/content/search 엔드포인트를 호출하며, title~ “키워드” 형식의 Query Language를 사용하여 제목에 키워드가 포함된 페이지들을 검색한다.

요청 결과는 JSON 형태로 반환되며, body로 변환해 가공 없이 그대로 claude에게 전달해주게 된다. 즉, claude는 이 결과를 그대로 받아 내용을 요약하거나, 정제해여 추가적인 작업을 수행하게 된다.

이렇게 service코드 작성을 마지막으로 코드 작성이 완료되었다.

~/.claude.json

글로벌 설정 해주는 ~/.claude.json에 wiki mcp 서버를 추가할 것이다. 그전에 해당되는 mcp_server를 빌드하는 것을 잊지 말자.

해당 파일에서 mcpServers에 해당하는 필드에 mcp_server 를 추가해준다.


"mcpServers": {
  "jetbrains": {
    "type": "sse",
    "url": "http://localhost:64342/sse"
  },
  "mcp_server": {
    "command": "java",
    "args": [
      "-Dspring.ai.mcp.server.stdio=true",
      "-jar",
      "/jar파일까지의 절대 경로/mcp_server-0.0.1-SNAPSHOT.jar"
    ],
    "transport": "stdio"
  }
}

"/jar파일까지의 절대 경로/mcp_server-0.0.1-SNAPSHOT.jar" 보시다 싶이, 빌드된 파일의 jar 절대 경로를 적어주었다.

wiki mcp_server 연동 확인

작성한 .claude.json을 저장해주고, terminal을 닫았다가 켜준다.

동일하게, /mcp 로 mcp_server가 연동되어 있음을 확인할 수 있다.


돌아보며

MCP를 직접 다뤄보면서, 하나의 문턱을 넘은 듯한 느낌을 받았다. 이 경험을 통해, 앞으로 개발 과정에서 필요하다고 느껴지는 대상들을 MCP 서버로 연동해두고, Claude를 통해 자유롭게 활용할 수 있을 것이라는 확신이 생겼다.

예를 들어 추후에 MySQL이나 Postman 같은 도구들과 연동해 두면, API 테스트나 쿼리 실행처럼 반복적인 작업을 훨씬 더 편리하게 처리할 수 있을 것이라 기대된다.

0개의 댓글