티스토리 뷰
1. MCP Server 디버깅을 위한 MCP Inspector
[ MCP Inspector의 필요성 ]
이전에 작성한 토스 테크 블로그에서는 MCP 서버가 제공하는 기능들에 대하여 살펴보았다. 해당 포스팅에서 살펴볼 수 있듯이, MCP 서버는 크게 다음의 3가지 기능을 제공할 수 있다.
- Prompts: 사용자가 선택하여 호출하는 대화형 템플릿
- Resources: 클라이언트가 첨부하고 관리하는 컨텍스트 데이터
- Tools: 클라이언트가 첨부하고 관리하는 컨텍스트 데이터
또한 “MCP 서버 프로토콜, SSE에서 Streamable HTTP 방식으로의 대변경” 포스팅에서는 MCP의 표준 프로토콜에 대해 살펴보았다. MCP 표준 프로토콜은 클라이언트와 서버 간 메시지 교환을 위해 JSON-RPC 2.0 기반의 데이터 형식을 사용하는 것이다.
{
"jsonrpc": "2.0",
"method": "subtract",
"params": [42, 23],
"id": 1
}
JSON-RPC 2.0 기반의 데이터 교환은 HTTP와 달리 상태 코드나 리소스 개념을 사용하지 않아서 의미적 표현이 다소 부족한 편이다. 또한 디버깅 및 문서화가 어려운 부분이 있다. 실제로 MCP 서버를 개발하는 과정에서 작성된 Tools가 제대로 노출되는지 그리고 동작하는지 확인하는 데 어려움을 겪었다. 이를 위해 MCP 진영에서는 MCP 서버 개발을 도와주는 도구인 MCP Inspector를 제공한다.
[ MCP Inspector에 대하여 ]
MCP Inspector는 MCP 서버를 테스트하고 디버깅하기 위한 UI 기반의 개발자 도구이다. MCP Inspector는 별도의 설치 없이 npx 명령어를 통해 바로 실행할 수 있다.
npx @modelcontextprotocol/inspector
해당 명령어를 실행하면 다음과 같이 MCP Inspector가 실행되고, 터미널에서 접속 경로를 통해 접속할 수 있다.

해당 경로로 접속하면, 다음과 같이 MCP Inspector의 UI가 실행되고, 좌측에 접속 정보를 입력한 후에 Connect 버튼을 클릭하면 연결이 된다.

연결된 상태에서는 해당 MCP 서버가 제공하는 다양한 도구들을 직접 확인할 수 있다. Tools를 선택하면 우리가 구현했던 Tools를 모두 확인할 수 있다.

그리고 Tools 탭으로 이동해서 해당 MCP Server가 제공하는 Tool 목록을 확인할 수 있다. 예를 들어 다음과 같이 덧셈을 처리하는 CalculatorTools가 구현되어 있다고 하자.
@Service
class CalculatorTools {
@Tool(description = "두 수를 더합니다.")
fun add(
@ToolParam(description = "첫 번째 피연산자") a: BigDecimal,
@ToolParam(description = "두 번째 피연산자") b: BigDecimal
): BigDecimal {
return a + b
}
}
@Configuration
class CalculatorToolsConfig {
@Bean
fun calculatorToolCallbackProvider(
calculatorTools: CalculatorTools
): ToolCallbackProvider {
return MethodToolCallbackProvider.builder()
.toolObjects(calculatorTools)
.build()
}
}
그리고 Tools 탭으로 이동한 후에 List Tools 버튼을 누르면 다음과 같이 우리가 구현한 add 라는 Tool이 존재함을 확인할 수 있다. 해당 Tool을 클릭하고 파라미터를 입력한 후에 Run Tool 버튼을 누르면 해당 Tool을 호출하여 실행 결과를 확인할 수 있다.

MCP 서버를 MCP Inspector 없이 개발하려면 문제가 발생한 지점을 찾고 해결하는 데 많은 시간을 쏟을 수 있다. 따라서 해당 도구를 이용해 빠르게 문제를 진단하고 해결할 수 있도록 하자.
