에이전트에게 LegalT3ch 글을 읽히다 (MCP)
먼저 결과부터 보여드릴게요. 제 에이전트한테 이렇게 시켰어요.
LegalT3ch 게시판에서 최근 글 목록 가져와줘
잠시 후, 화면에 표가 하나 떴어요.
LegalT3ch 최근 게시물 20개입니다:
┌─────┬──────────────────────────────────────────────────┬─────────────┬──────────────┐
│ # │ 제목 │ 게시판 │ 날짜 │
├─────┼──────────────────────────────────────────────────┼─────────────┼──────────────┤
│ 226 │ 최근 서초동 분위기가 심상치 않다는 건… │ 익명 포럼 │ 6/9 AM 6:30 │
│ 225 │ AI가 선택하는 온라인 쇼핑몰, 절반 이상의 몰락 │ 뉴스 & 링크 │ 6/9 AM 12:43 │
│ ... │
│ 214 │ [변호사의 로컬LLM 세팅기] 16화: 에이전트한테… │ AI 인사이트 │ 6/7 PM 2:50 │
│ ... │
│ 206 │ [변호사의 로컬LLM 세팅기] 15화: 에이전트가 첫 마디… │ AI 인사이트 │ 6/6 PM 2:26 │
└─────┴──────────────────────────────────────────────────┴─────────────┴──────────────┘

게시판 글 목록을, 브라우저 한 번 안 열고, 제 책상 위 AI가 직접 가져온 거예요. 14화에서 처음 만든 에이전트가 웹도 안 거치고 게시판 데이터를 손에 들고 있는 셈이죠. 심지어 제가 쓴 16화, 15화 제목까지 정확히 박혀 있어요.
이게 오늘 한 일이에요. MCP라는 걸로 제 AI와 외부 게시판을 연결했어요. 어떻게 여기까지 왔는지 처음부터 풀어볼게요.
MCP가 뭔데
요즘 AI 쪽에서 자주 보이는 단어예요. Model Context Protocol. 풀어쓰면 “모델이 맥락(데이터)을 가져오는 표준 약속” 정도예요.
말은 거창한데 발상은 단순해요. AI가 외부 서비스의 데이터를 쓰려면, 서비스마다 제각각인 방식을 일일이 익혀야 하잖아요. 그걸 하나의 공통 규격으로 통일하자는 거예요. USB를 떠올리면 돼요. 예전엔 기기마다 충전 단자가 다 달랐는데, USB-C로 통일되니까 충전기 하나로 다 되잖아요. MCP가 AI 세계의 그 USB-C 같은 거예요.
제가 글을 올리는 커뮤니티(LegalT3ch)가 마침 MCP 연결을 지원한다는 걸 알게 됐어요. 안내 페이지를 보니, 토큰 하나 발급받아서 AI 클라이언트에 등록하면 게시판 글을 직접 읽을 수 있다고요. “최근 공정거래법 글 요약해줘” 같은 걸 AI한테 시킬 수 있다는 거예요.
당장 해보고 싶었어요. 그런데 시작부터 막혔어요.
세 갈래 길 앞에서
안내 페이지에 연결 방법이 세 가지 탭으로 나뉘어 있었어요.
- Claude Desktop 용
- Cursor / Windsurf 용
- mcp-remote (범용) 용
문제는, 제가 쓰는 건 이 셋 중 어느 것도 아니라는 거예요. 제 에이전트는 OpenClaw거든요. “OpenClaw용 탭”은 당연히 없죠.
여기서 잠깐 멈췄어요. 세 개 중 뭘 베껴야 하나. 아무거나 골라서 욱여넣으면 될 것 같지도 않았고요. 자세히 읽어보니 세 탭이 갈리는 진짜 이유가 보였어요. 안내 페이지의 한 문장이 핵심이었어요.
LegalT3ch 서버는 SSE가 아니라 HTTP POST 방식을 쓴다. 클라이언트는 원격 MCP에 SSE로 접속하려 하는데,
mcp-remote가 그 차이를 중계해준다.
읽고 나니 두 부류로 정리됐어요.
- Cursor 탭 —
url과headers를 직접 적는 방식. 클라이언트가 원격 MCP를 네이티브로 다룰 수 있을 때 씁니다. - Claude Desktop / 범용 탭 —
command에npx를 적고mcp-remote라는 중계기를 끼우는 방식. 클라이언트가 그걸 직접 못 다룰 때 씁니다.
그러니까 질문은 하나로 좁혀졌어요. OpenClaw는 둘 중 어느 쪽이냐? 원격 MCP를 그냥 붙일 수 있으면 Cursor 방식, 아니면 중계기를 끼워야 하니 Claude Desktop 방식.
추측으로 고르긴 싫었어요. 추측해서 욱여넣었다가 안 되면, 왜 안 되는지 며칠 헤맬 수도 있거든요(그동안 충분히 겪었어요). 그래서 OpenClaw한테 직접 물어보기로 했어요.
도구한테 직접 물어보는 법
OpenClaw는 명령줄 도구예요. 그리고 거의 모든 명령줄 도구는 --help를 붙이면 자기가 뭘 할 수 있는지 알려줘요. MCP 관련 기능이 있는지부터 봤어요.
openclaw --help 2>&1 | grep -i mcp
💡
2>&1은 프로그램이 내보내는 두 종류의 출력(정상 출력과 에러 출력)을 하나로 합쳐주는 거예요. 도구에 따라 도움말을 에러 쪽으로 내보내기도 하는데, 그러면grep이 못 잡거든요. 합쳐두면 어느 쪽으로 나오든 빠짐없이 걸러져요.| grep -i mcp는 그 결과 중 mcp가 들어간 줄만 뽑는 것,-i는 대소문자 무시.
mcp * Manage OpenClaw MCP config and channel bridge
mcp라는 전용 명령이 있네요. 한 단계 더 들어가요.
openclaw mcp --help
Commands:
list List configured MCP servers
set Set one configured MCP server from a JSON object
show Show one configured MCP server or the full MCP config
unset Remove one configured MCP server
set이 보여요. 설명이 “JSON 객체로 MCP 서버 하나를 설정한다”예요. 그럼 set이 정확히 어떤 JSON을 받는지가 결정타예요. 또 물어봤어요.
openclaw mcp set --help
Usage: openclaw mcp set <name> <value>
Arguments:
name MCP server name
value JSON object, for example {"command":"uvx","args":["context7-mcp"]}
여기서 답이 나왔어요. 예시를 보세요. {"command": "uvx", "args": [...]}. 즉 OpenClaw는 MCP 서버를 **“실행할 명령”**으로 등록해요. url을 직접 받는 게 아니라, 프로세스를 띄우는 방식이에요.
그러니 세 탭 중 답은 명확했어요. Cursor 방식(url 직접)이 아니라 Claude Desktop / 범용 방식(command + mcp-remote 중계). OpenClaw가 받는 형식이 그쪽이니까요.
비유하면 이래요. LegalT3ch 서버는 한 가지 언어(HTTP POST)로만 말하는데, OpenClaw는 다른 언어(프로세스 실행)만 알아들어요. 둘이 직접 대화가 안 돼요. 그 사이에 통역사를 한 명 세우는 게 mcp-remote예요. Ope여기까지 와서 알게 된 게 하나 있어요. **연결 작업의 절반은 “내 도구가 무엇을 받아들이는지 확인하는 것”**이라는 점. 안내서를 그대로 베끼는 게 아니라, 내 환경(OpenClaw)에 맞게 한 번 번역하는 단계가 꼭 있어요. 그 번역의 근거를 추측이 아니라 --help에서 가져왔다는 게 오늘의 핵심이었어요.
그런데 막상 연결해서 써보니, 매번 응답 전에 묘하게 몇 초씩 멈추는 게 거슬렸어요. “This response is taking longer than expected”가 자꾸 떴거든요. 처음엔 통역사 부르느라 그런 줄 알았는데, 파보니 전혀 다른 범인이 있었어요. 그 이야기는 따로 풀어볼게요. nClaw가 통역사한테 말하면, 통역사가 LegalT3ch가 알아듣는 말로 바꿔서 전달해주는 거죠.
통역사를 부를 수 있는지부터
mcp-remote라는 통역사는 npx라는 도구로 실행돼요. npx는 Node.js에 딸려오는 명령인데, 마침 16화에서 에이전트를 설치할 때 Node가 이미 깔렸어요. 그래도 진짜 있는지 확인하고 가는 게 안전해요.
node --version && npx --version
v24.15.0
11.12.1
둘 다 정상. 이제 등록할 차례예요.
한 줄로 붙이기
안내 페이지의 JSON에서, 바깥쪽 서버 이름(legalt3ch)만 따로 빼고 안쪽 객체를 set에 넘기는 형태예요.
openclaw mcp set legalt3ch '{"command":"npx","args":["-y","mcp-remote","https://legalt3ch.com/api/mcp","--header","Authorization:Bearer 토큰"]}'
💡 풀어보면 —
npx로mcp-remote(통역사)를 실행하고, 그 통역사한테 “LegalT3ch 주소는 여기고, 인증 토큰은 이거다”를 넘겨주는 한 줄이에요.-y는 “설치할 거냐고 묻지 말고 그냥 진행해”라는 뜻.
엔터를 치니 이런 게 떴어요.
Config overwrite: /home/rocklassic/.openclaw/openclaw.json
(... backup=/home/rocklassic/.openclaw/openclaw.json.bak)
Saved MCP server "legalt3ch" to .../openclaw.json.
두 가지가 마음에 들었어요. 첫째, 저장됐다는 확인. 둘째, 자동으로 백업(.bak)을 떠뒀다는 것. 혹시 잘못돼도 되돌릴 수 있어요. 등록됐는지 다시 확인해봤어요.
openclaw mcp list
MCP servers (...):
- legalt3ch
아까는 “등록된 MCP 없음”이었는데 이제 legalt3ch가 떴어요. 1차 성공.
“설정에 적혔다”와 “진짜 된다”는 다르다
여기서 끝내고 싶은 마음이 굴뚝같았지만, 짚을 게 있었어요. 지금은 설정 파일에 글자가 적힌 것뿐이에요. 실제로 LegalT3ch 서버와 통신이 되는지는 아직 몰라요. 그러니 진짜 한 번 써봐야 해요.
에이전트를 띄우고 시켰어요.
LegalT3ch 게시판에서 최근 글 목록 가져와줘
그랬더니 화면이 잠깐 멈춘 듯하더니 이런 안내가 떴어요.
This response is taking longer than expected.
당황했는데, 이건 예상한 거였어요. 통역사(mcp-remote)를 처음 부르는 거라, npx가 그 프로그램을 받아오고 LegalT3ch에 붙는 데 시간이 좀 걸리거든요. 16화에서 브라우저 엔진 받느라 멈춘 것처럼 보였던 것과 비슷해요. 잠깐 기다리니, 글 맨 위에 보여드린 그 표가 떴어요.
이게 진짜일까, 또 지어낸 걸까
14화에서 비슷한 의심을 한 번 한 적이 있어요. 에이전트가 날씨를 너무 깔끔한 숫자로 답하길래 지어낸 줄 알고 따져봤는데, 그땐 검증해보니 진짜 데이터였죠. 의심이 늘 환각으로 끝나는 건 아니라는 것. 그래서 이번에도 바로 믿지도, 바로 의심하지도 않고 따져봤어요. 이 표가 진짜 게시판에서 온 걸까, 아니면 모델이 그럴듯하게 만들어낸 걸까?
확인해보니 진짜 였어요. 진짜로 연결된 거예요.
한 가지 김샜던 점
들뜬 김에 다음 욕심이 생겼어요. “이걸로 블로그 글도 올릴 수 있는 거 아냐?” 게시판을 읽을 수 있으면 쓸 수도 있지 않을까.
안내 페이지를 다시 보니, 답은 아니오였어요.
MCP를 통해 AI는 게시글을 읽기만 할 수 있습니다. 작성, 댓글, 좋아요 등 쓰기 기능은 지원하지 않습니다.
읽기 전용이에요. 보안상 당연한 설계예요 — 토큰 하나로 남의 AI가 내 계정으로 글을 막 쓰게 두면 위험하니까요. 그러니 “에이전트가 알아서 블로그를 올려주는” 그림은 이 MCP로는 안 돼요. 그건 다른 방법을 찾아야 하는 별도 숙제로 남겨뒀어요.
오늘의 정리
- ✅ MCP = AI가 외부 데이터를 가져오는 표준 규격. USB-C 같은 통일 약속
- ✅ 연결 방식은 클라이언트마다 다름. 안내서의 세 탭(Claude Desktop / Cursor / 범용)은 “어떤 형식으로 받느냐”의 차이
- ✅ 추측 말고
--help로 물어봤음.openclaw mcp set이command방식을 받는 걸 확인 → Claude Desktop 방식(mcp-remote 중계)이 답 - ✅
mcp-remote= 통역사. OpenClaw(프로세스 언어)와 LegalT3ch(HTTP POST 언어) 사이를 중계 - ✅
openclaw mcp set한 줄로 등록. 자동 백업(.bak)까지 떠줌 - ✅ 연결 검증: 내 글 제목이 정확하고, 익명 글 작성자가 명세대로 비어 있음 → 환각 아닌 진짜 데이터
- ⚠️ 읽기 전용: 글 작성·업로드는 이 MCP로 불가. 별도 방법 필요
읽어주셔서 감사합니다.