이 영상에서 단테는 개발자가 아닌 사람도 이해할 수 있도록 MCP(Model Context Protocol)가 왜 등장했는지 설명하고, Obsidian MCP 서버를 Claude Desktop과 Cursor에 연결해 노트를 만들고 고치는 과정을 보여 줍니다. 영상 게시 시점(2025-04-13) 기준 macOS 환경의 설정이며, MCP를 처음 접하는 분이나 AI로 Obsidian 노트를 관리해 보고 싶은 분에게 맞는 내용입니다.
왜 컨텍스트가 중요한가
API는 웹이나 모바일 앱 같은 프로그램이 서버의 데이터를 표시하거나 수정할 수 있게 해 주는 기능입니다. 요즘은 코딩뿐 아니라 통계, 연구, 자료 조사 등 여러 분야에서 LLM의 도움을 받는데, 답변 품질은 프롬프트에 사용자 요청과 관련된 컨텍스트가 얼마나 많이, 정확하게 담기는지에 따라 크게 달라집니다. 개발자들이 Cursor나 Windsurf 같은 도구로 프로젝트 코드를 직접 컨텍스트에 넣는 것도 그래서입니다.
초기 LLM과 비교해 두드러진 변화가 AI 에이전트입니다. 에이전트는 사용자를 대신해 작업을 수행합니다. 코딩을 예로 들면, 테스트가 실패했을 때 테스트 코드가 틀렸는지, 시나리오가 틀렸는지, 아니면 실패가 의도된 상황인지를 대화 맥락으로 판단합니다. 개발자가 아니어도 n8n 같은 워크플로 자동화 도구로 에이전트를 활용할 수 있습니다.
MCP 이전: 모델마다 다른 함수 호출
MCP 이전에는 함수 호출(function calling)을 썼습니다. 개발자가 만든 API를 모델에 제공하면 모델이 판단해 함수를 호출하는 방식입니다. 예를 들어 작업 성공 시 Slack 메시지를 보내고 실패 시 실패 알림을 보내는 워크플로를 만들 때, Jira나 데이터베이스, Slack 같은 외부 리소스 정보를 가져오려면 함수 호출을 구현해야 했습니다.
문제는 GPT를 쓰느냐 Claude를 쓰느냐에 따라 함수 호출 구현이 달랐다는 점입니다. 다른 회사에서 더 좋은 모델이 나오면 함수를 다시 만들어 워크플로를 고쳐야 했고, 코딩에 익숙하지 않은 사람에게는 번거로운 일이었습니다.
MCP의 구조
MCP는 AI 에이전트가 외부 리소스를 쓸 때 필요한 대화 방식을 규격화한 프로토콜입니다. 이름 그대로 모델과 컨텍스트를 어떻게 주고받을지에 대한 약속입니다.
- MCP 클라이언트: MCP 서버에 컨텍스트를 요청하고 받는 쪽입니다. 채팅 앱, 에이전트 프로그램, Cursor나 Copilot, Windsurf 같은 개발 도구가 해당됩니다.
- MCP 서버: Confluence, Figma, Notion 같은 외부 서비스의 API나 SDK를 써서 데이터를 가져오고, 그 결과를 클라이언트에 돌려줍니다.
- MCP 도구: 서버가 클라이언트에 제공하는 함수입니다. 클라이언트는 외부 서비스와 직접 통신하지 않고 서버가 정해 둔 도구만 쓰며, 모델은 어떤 도구를 쓸지 판단합니다.
모든 모델이 같은 규격을 쓰기 때문에 MCP는 흔히 USB-C 포트에 비유됩니다. Google Drive나 Slack용 MCP 서버가 이미 있다면, 모델이 바뀌어도 추가 코딩 없이 그 서비스의 정보를 가져올 수 있습니다. 레고 블록처럼 서비스를 조립해 쓸 수 있어 에이전트 기능을 만드는 속도가 빨라집니다.
Obsidian MCP 서버 연결하기
영상은 Homebrew와 Python이 설치된 맥북을 기준으로 합니다. 사용할 서버인 mcp-obsidian은 파이썬 패키지 매니저 uv로 실행하므로 uv를 먼저 설치하고, mcp-obsidian Git 저장소를 클론합니다.
- Obsidian 설정의 커뮤니티 플러그인에서 Local REST API 플러그인을 찾아 설치하고, 옵션에서 API 키를 복사합니다. 로컬에서만 쓰므로 노출 위험은 크지 않다고 설명합니다.
- Claude Desktop 설정에서 설정 편집(또는 MCP 서버 추가)을 누르면 MCP 설정 파일이 열립니다. 무료 플랜에서도 MCP 서버를 쓸 수 있습니다.
- 저장소 README의 설정을 붙여 넣고, command에는 uv의 위치(
which uv로 확인), args에는 디렉터리 옵션과 mcp-obsidian 경로, 실행 명령을 넣고, API 키를 채웁니다.
{
"mcpServers": {
"mcp-obsidian": {
"command": "<which uv 결과 경로>",
"args": ["--directory", "<mcp-obsidian 경로>", "run", "mcp-obsidian"],
"env": { "OBSIDIAN_API_KEY": "<복사한 API 키>" }
}
}
}
uv를 쓰면 서버를 따로 실행할 필요 없이 Claude Desktop을 다시 켤 때 자동으로 MCP 서버가 뜹니다. 재시작하면 입력창에 MCP 도구 아이콘이 생기고, 누르면 Obsidian 서버가 제공하는 도구 목록이 보입니다.
실제 사용: 노트 작성과 번역
"각 나라의 4월 날씨에 대한 글을 Obsidian에 작성해 달라"고 하자, Claude는 append content 도구를 호출해 Obsidian 보관함 안에 날씨 마크다운 파일을 만들었습니다. 처음 도구를 쓸 때 허용 여부를 묻는 창이 뜨면, 이 대화에서 항상 허용하도록 선택하면 됩니다. 이렇게 만든 노트들은 Obsidian 그래프 뷰에서 서로 링크로 연결된 모습도 확인했습니다.
Cursor에서는 Cmd+Shift+P로 명령 팔레트를 열고 MCP 설정에서 새 글로벌 MCP 서버를 추가합니다. 설정 내용은 Claude Desktop과 같고, API 키까지 넣으면 서버가 활성화되며 사용 가능한 도구가 표시됩니다. 기존 노트를 한글로 번역해 달라고 하자, Cursor는 파일에 이미 한글과 영문이 함께 있으니 영문을 지우려는 것이냐고 되물었습니다. 로컬 파일을 제대로 읽고 있다는 뜻이고, 이후 도구로 내용을 읽어 한글 버전을 저장했습니다.
정리
- LLM 답변 품질은 컨텍스트에 달려 있고, MCP는 외부 서비스의 컨텍스트를 가져오는 방식을 표준화한 프로토콜입니다.
- MCP 이전에는 모델마다 함수 호출을 따로 구현해야 했지만, MCP 서버가 있으면 모델이 바뀌어도 그대로 쓸 수 있습니다.
- Obsidian 연결에는 Local REST API 플러그인의 API 키, uv, mcp-obsidian 저장소가 필요합니다.
- Claude Desktop과 Cursor 모두 같은 형식의 설정으로 연결되며, 도구 사용 허용 후 노트 작성과 수정이 가능합니다.

