mcp는 새로운 데이터 소스를 연결할 때 맞춤 구현이 필요하다는 불편함을 해소하기 위해 나타났다.
mcp는 호스트
, 클라이언트
, 서버
로 구성된다.
엔트로픽에서 제공하는 코드를 조합하면 호스트
, 클라이언트
의 구현은 어렵지 않다 그러나 비개발자들이 활용할 인터페이스 (ex. claude desktop) 을 구축하기에 현실적 한계가 있다.
다만 외부 유출이 우려되는 민감 데이터를 다룰 경우 커스텀 호스트
를 구축하는걸 권장한다.
반면 서버
는 특정 기능, 데이터 소스에만 집중하면 되므로 호스트, 클라이언트를 개발하는 것 보다 비교적 쉽다.
MCP는 모듈식 설계를 바탕을 두고 있기에 서버 중심의 접근 방식을 장려한다.
각 mcp 서버가 독립적으로 작동하고, 서로 유기적으로 연결되어 동작한다. 그러므로 전체 시스템을 모두 이해하지 않아도 특정 기능에만 집중 개발할 수 있다. (진입장벽이 낮아짐)
많은 MCP 서버가 node 환경에서 동작하기에 로컬 환경에서 기존 mcp 서버를 구동시키기 위해 node.js를 설치한다.
해당 책에서 mcp 호스트로 claude desktop 을 사용한다. 그 이유는 다음과 같다
개발된 mcp 서버를 claude desktop이라는 호스트에 바로 연결하여 사용할 수 있다. (claude desktop 애플리케이션 설치 과정은 책 참고)
claude_desktop_config.json 파일은
mcp에 입력하거나 요청한 정보를 기록하는 로그를 보는 방법도 있다. (책 참고)
이미 개발된 MCP 들 중 활용하기 좋은 것들에 대해 살펴보자
앤트로픽에서 제공하는 MCP 서버들은 MCP 깃허브에서 확인할 수 있다. 그중 아래 서버들을 집중적으로 살펴보자
ai 시스템이 로컬 파일 시스템과 상호작용할 수 있게 해주는 MCP 서버다.
해당 서버는 Node.js 기반으로 구현되었다.
Filesystem MCP 존재 이전의 삶
Filesystem MCP 존재 이후의 삶
https://github.com/modelcontextprotocol/servers/tree/main/src/filesystem
filesystem 서버는 Docker와 npx(node package execute)라는 두 가지 방식으로 활용할 수 있다.
claude_desktop_config.json
파일에 다음과 같은 내용을 추가하여 Claude Desktop에 filesystem mcp 서버를 연결할 수 있다.
{
"mcpServers": { // mcpServers : MCP 서버들의 설정을 담는 최상위 객체
"filesystem": { // "filesystem": 파일시스템 접근을 위한 MCP 서버의 이름
"command": "npx", // 서버를 실행할 명령어 (Node.js 패키지 실행 도구)
"args": [ // npx 명령어에 전달될 인자들의 배열
"-y", // npx가 패키지를 자동으로 설치하도록 하는 플래그 (yes to all prompts)
"@modelcontextprotocol/server-filesystem", // 실행할 MCP 파일시스템 서버 패키지명
"/Users/username/Desktop", // 첫 번째 허용된 디렉토리 경로
"/Users/username/Desktop/mcp_test" // 두 번째 허용된 디렉토리 경로
]
}
}
}
이제 ai는 "/Users/username/Desktop", "/Users/username/Desktop/mcp_test"와 같은 경로에 접근할 수 있게 된다.
호스트를 재실행하면 아래와 같이 mcp 서버의 3가지 기능(리소스, 도구, 프롬프트) 중 도구 기능이 보여진다.
filesystem 메뉴가 보인다. 클릭해보자
mcp 서버에서 제공하는 도구 리스트가 나온다
ai는 mcp 도구들을 사용하면서 요청을 수행한다.
mcp 서버를 활용하여 저장한 파일을 읽어 달라고 요청했다
이처럼 Filesystem MCP 서버를 통해 ai가 제한된 디렉토리 속 파일을 읽고 쓸수있게 된다.
사내 시스템에서 filesystem 기반 서버를 사용하면 로그 분석에 용이 할 수도?
추가적으로 어떤 활용방안이 있을까 논의해보자