저번에 이어 claude 에서 MCP(Model Context Protocol)를 이용해서 Brave API를 이용해 실시간 검색이 가능하도록 해 볼겁니다.
우선 저번 글을 읽지 않았다면 MCP 1편 : MCP 개념과 준비할 것들 과 MCP 2편 : Claude 와의 만남 를 먼저 보시고 오시기 바랍니다.
또한 저는 claude 유료 플랜에서 작성하는 글이며, 무료 플랜에서는 기능적인 제약이 있을수 있습니다.
그리고, 윈도우즈에서 설치 및 실행하는 결과입니다.
(밑에서는 존칭 및 경어체를 사용하지 않으니, 양해해 주시기 바랍니다.)
Bing 이래로 가장 빠르게 성장하는 독립 검색 엔진으로 검색과 AI 앱을 강화하세요. 한 번의 호출로 수십억 페이지의 인덱스에 액세스하세요.
라고 공식 사이트(https://brave.com/ko/search/api/)에서 홍보하고 있습니다.
이것을 현재 Free를 구독하면 초당 1번으로 매달 2,000 쿼리를 무료로 사용할수 있다.
Data for Search와 Data for AI, Spellcheck, Suggest 를 Free로 구독이 가능하다.구독을 해야 API Key 생성이 가능하니, 구독후 API Key를 생성하자.
이제 MCP Server를 사용해 보자.
https://www.npmjs.com/package/@modelcontextprotocol/server-brave-search
@modelcontextprotocol/server-brave-search
MCP server for Brave Search API integration. Latest version: 0.6.2, last published: 4 months ago. Start using @modelcontextprotocol/server-brave-search in your project by running `npm i @modelcontextprotocol/server-brave-search`. There are 3 other projects
www.npmjs.com
여기서 server용 json 코드를 가져오면 된다.
{
"mcpServers": {
"brave-search": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-brave-search"
],
"env": {
"BRAVE_API_KEY": "YOUR_API_KEY_HERE"
}
}
}
}
그런데, 우리는 이미 이전에 filesystem mcp를 이미 추가를 한 상태이다. 그래서 두 가지를 같이 사용하게 되면 이렇게 된다.
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "D:\\KAN_WebWork\\MCP"]
},
"brave-search": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-brave-search"
],
"env": {
"BRAVE_API_KEY": "xxxxxxxx"
}
}
}
}
BRAVE_API_KEY 에 위에서 brave api에서 발급받은 키만 입력해 주면 된다.여기서 주의 할것은 json 타입에 오류가 없어야 한다.
특히 서버를 추가할때 서버끝단에 ,(코마)를 추가하고 삭제를 잘 해야 한다.
만일 모르겠으면 그냥 claude에게 json 구문 오류 있는지 체크해 달라고 하면 알아서 수정해 준다.
서버 추가시 오류가 발생했다면 밑에 처리 방법을 기재해 두었으니 참조해 주기 바란다.
여기서 잠깐.. 위 json에서
filesystem, brave-search 로 두개의 식별자가 있는데.. 이들이 각각의 서버라고 지칭되는 것들이다.
이들이 각각의 서버로써 호출이 되면 npx로 실행(초기에 패키지 설치후 로컬 패키지로 명령어를 실행)하게 되게 claude에게 데이타를 제공해서 원하는 답변을 만들어 내는 것이다.
claude가 혼자서 처리하던 것을 이제는 MCP들이 서포트하면서 클라우드 AI들이 못하는 로컬의 파일 제어나 실시간 검색등을 할수 있게 되는 것이다.
brave MCP를 설치하고 오류를 발생시켰다. 로그 파일은 C:\Users\사용자명\AppData\Roaming\Claude\logs 이 존재한다.
npm ERR! code ENOENT npm ERR! syscall lstat npm ERR! path C:\Users\KAN\AppData\Local\AnthropicClaude\app-0.8.1\${APPDATA} npm ERR! errno -4058 npm ERR! enoent ENOENT: no such file or directory, lstat 'C:\Users\KAN\AppData\Local\AnthropicClaude\app-0.8.1\${APPDATA}' npm ERR! enoent This is related to npm not being able to find a file. npm ERR! enoent npm ERR! A complete log of this run can be found in: C:\Users\KAN\npm-cache\_logs\2025-03-27T09_25_53_997Z-debug-0.log 2025-03-27T09:25:54.432Z [brave-search] [info] Server transport closed
APPDATA밑에 npm을 찾지 못하는 현상이 발생했는데, 다른 server들은 이곳에 npm이 없어도 잘 작동했는데, 왜 brave만 문제인지는 모르겠으나.. 이런 경우 APPDATA를 직접 지정해 주면 된다.
"env": {
"APPDATA": "D:\\00.DevTool\\09.NVM\\nvm\\v22.14.0\\node_modules",
"BRAVE_API_KEY": "xxxxxxxxxxxx"
}
node 여러가지 버전이 설치되어 있어서 NVM으로 관리를 해서 이처럼 경로가 지정된 것이고, 일반적으로는 그냥 node 설치된 곳으로 지정하면 될것이다.
그외 로그 기록에 info용 정보도 기록이 되니, MCP를 이해하는데 보면 좀 더 도움이 될거 같다.
2025-03-27T09:51:13.636Z [brave-search] [info] Message from client: {"method":"tools/call","params":{"name":"brave_web_search","arguments":{"query":"서울 날씨 오늘 3월 27일 2025","count":5}},"jsonrpc":"2.0","id":39}
2025-03-27T09:51:18.773Z [brave-search] [info] Message from server: {"jsonrpc":"2.0","id":39,"result":{"content":[{"type":"text","text":"Title: 단기예보 - 예보 - 날씨 - 기상청 날씨누리\nDescription: <strong>날씨</strong> 바다 영상·일기도 태풍 기후 기후변화 지진·화산 테마날씨 황사 관측 소식·지식 ... 관심지역토글 선택해제됨 도움말 별표를 누르면 관심지역으로 등록 또는 삭제할 수 있습니다 ... □ (종합) 오늘~내일 강풍과 풍랑 유의, 당분간 대기 건조, 산불 등 화재 각별히 유의○ (<strong>오늘</strong>, <strong>27일</strong>...\nURL: https://www.weather.go.kr/w/weather/forecast/short-term.do?stnId=109\n\nTitle: 서울 ·경기도 중기예보 - 예보 - 날씨 - 기상청 날씨누리\nDescription: 담당관리 : 본청 문의 : 전국 국번없이 131(기상상담전화, 유료) · 대전 (35208) 대전광역시 서구 청사로 189 정부대전청사 1동 11~14층\nURL: https://www.weather.go.kr/w/weather/forecast/mid-term.do?stnId1=109\n\nTitle: 과거관측 - 일별자료 - 기상청 날씨누리\nDescription: 기상자료개방포털 바로가기 메인화면 날씨달력 통계분석 자료 조회 방법 · 날씨달력 <strong>서울</strong>(유)/ 2025년 <strong>3월</strong>\nURL: https://www.weather.go.kr/w/observation/land/past-obs/obs-by-day.do\n\nTitle: 서울특별시, 서울시, 대한민국 월별 날씨 | AccuWeather\nDescription: Get the monthly weather forecast for 서울특별시, 서울시, 대한민국, including daily high/low, historical averages, to help you plan ahead.\nURL: https://www.accuweather.com/ko/kr/seoul/226081/march-weather/226081\n\nTitle: 전국 중기예보 - 예보 - 날씨 - 기상청 날씨누리\nDescription: 담당관리 : 본청 문의 : 전국 국번없이 131(기상상담전화, 유료) · 대전 (35208) 대전광역시 서구 청사로 189 정부대청사 1동 11~14층\nURL: https://www.weather.go.kr/w/weather/forecast/mid-term.do"}],"isError":false}}
우선 기존 AI에서 서울 날씨를 물어본 결과이다. claude에서는 실시간 정보를 기본적으로 제공하지 않는다.그래서 이 같은 답변만 가능하다. 하지만 이제 MCP를 장착해서 질문을 하면..
이처럼 실시간으로 검색을 데이타를 제공해 주고 있다.
brave는 brave_web_search , brave_local_search 가 가능한데, 그냥 한 것은 web_search이고.. local_search로 해 보니 free라서 안되는지 아니면 국내라서 안되는건지는 모르겠다.
local_search에는 "내 근처"를 지칭하라고 되어 있으니 참조하자.
단순히 json 코드 몇줄을 추가함으로써 기존 클라우드 AI에 없는 기능이 추가가 되었다.
이것이 MCP의 막강한 기능인 것이다. 원하는 서버를 추가를 하면 원하는 형태로 커스텀이 가능해서 더욱 편하게 원하는 답변을 얻어낼 수 있는 것이다.
그럼 이런 서버들은 어디서 정보를 얻어야 할것인지가 궁금할 것이다.
modelcontextprotocol의 공식 git이나 plusemcp에서 서버들을 찾으면 된다.
https://github.com/modelcontextprotocol/servers
GitHub - modelcontextprotocol/servers: Model Context Protocol Servers
Model Context Protocol Servers. Contribute to modelcontextprotocol/servers development by creating an account on GitHub.
github.com
위의 서버중 DB 관련된 MCP를 하나 더 사용해 보자.
https://www.npmjs.com/package/@modelcontextprotocol/server-postgres
@modelcontextprotocol/server-postgres
MCP server for interacting with PostgreSQL databases. Latest version: 0.6.2, last published: 4 months ago. Start using @modelcontextprotocol/server-postgres in your project by running `npm i @modelcontextprotocol/server-postgres`. There are 3 other project
www.npmjs.com
현재 진행중인 프로젝트에 postgreSQL을 사용해서 한번 사용해 보았는데, 너무 좋았다.(MySQL용도 있으니 걱정하지 말자)
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "D:\\KAN_WebWork\\MCP"]
},
"brave-search": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-brave-search"
],
"env": {
"APPDATA": "D:\\00.DevTool\\09.NVM\\nvm\\v22.14.0\\node_modules",
"BRAVE_API_KEY": "xxxxxxxxxxxx"
}
},
"postgres": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-postgres",
"postgresql://localhost/mydb"
]
}
}
}
이렇게 서버가 3개가 되었다. filesystem, brave-search, postgres
postgresql에 접속할 서버주소를 잘 기재해 주면 된다. 외부 접속을 오픈한 상태라면 정상적으로 접근이 가능하다.
다만 패스워드에 특수기호가 들어가 있으면 url 인코딩을 해 줘야 한다. 특히 패스워드에 @는 %40 로 변환해 줘야 한다.
데이타베이스라서 당연히 read-only만 가능하다.
질문을 하니, 디비에서 조회해서 데이타를 잡아다 주는 것을 볼수 있다.. ㅋㅋㅋ
클라이언트 툴을 실행해 sql query를 날리지 않고, 질문만 하면 답을 해 준다.. 오.. 많이 놀라웠다.
특히, 테이블 구조나 schema등을 설명해 주고, 컬럼이 뭐가 어떻고 이런 설명을 이제 할 필요가 없다.
왜? MCP로 디비에 바로 접근이 가능하니, 알아서 유추하고 필요한 정보를 알아서 가져오기 때문이다.
직접 정보에 접근해서 조회를 하니, 더욱 정확하고 간결한 답변이 가능하니.. 이 얼마나 좋은가??
로컬에서 접근하니 클라우드 AI를 통하는 것보다는 더욱 안정성이 보장되는거 같기도 하고..
(근데, 조금 걱정은 된다.. 하지만 그렇다고 이 신기술을 안 쓰기에는 너무 막강하다.)
맛보기로 MCP와 관련된 기능을 최대한 자세히 기술한다고 해 보았습니다.
어땠는지 모르겠네요.. ㅎㅎ
오늘도 좋은 하루 보내시기 바랍니다.. ^^;
끝.
Microsoft AI Skills Fest (2025. 4월 8일부터) (0) | 2025.04.07 |
---|---|
MCP 4편 : Playwright MCP Server로 웹 자동화 테스트 (0) | 2025.03.31 |
MCP 2편 : Claude 와의 만남 (0) | 2025.03.28 |
MCP 1편 : MCP 개념과 준비할 것들 (2) | 2025.03.27 |