AdMob API MCP 서버 만들기 - Part 4: Gemini CLI에 MCP 서버 연결하기
지난 3부까지 열심히 달려와 드디어 우리만의 AdMob API MCP 서버를 만들고, MCP Inspector로 기능 테스트까지 마쳤습니다.
이제 우리가 만든 서버를 실제로 활용할 차례입니다! AI 서비스가 우리 서버를 인식하고 사용하게 하려면 약간의 연결 작업이 필요한데요. 이번 포스트에서는 Gemini의 강력한 도구인 Gemini CLI를 사용해서 우리가 만든 MCP 서버를 Gemini와 연결하는 방법을 쉽고 재미있게 알아보겠습니다.
Gemini CLI, 그게 뭔가요?
Gemini CLI는 강력한 Gemini를 우리 개발자들에게 친숙한 명령줄(CLI) 환경에서 사용할 수 있게 해주는 도구입니다. 보통 이런 AI 서비스를 마음껏 쓰려면 유료 플랜을 구독해야 하지만, Gemini CLI는 구글 계정으로 로그인만 하면 하루에 최대 1,000번까지 무료로 요청을 보낼 수 있어요. 덕분에 부담 없이 마음껏 테스트하며 가지고 놀기 정말 좋죠!
Gemini CLI 설치 방법은 프로젝트 사이트에 아주 자세히 나와 있으니, 가이드를 참고해서 설치를 먼저 완료해 주세요.
Gemini CLI에 나만의 MCP 서버 연결하기
자, 이제 가장 중요한 단계입니다. 우리가 만든 MCP 서버를 Gemini CLI에 연결해 봅시다. 방법은 간단해요. Gemini CLI의 설정 파일(settings.json
)에 우리 서버 정보를 등록해 주기만 하면 됩니다.
설정 파일은 아래 경로에서 찾을 수 있어요.
- macOS / Linux:
~/.gemini/settings.json
- 예:
/Users/<사용자 계정명>/.gemini/settings.json
- 예:
- Windows:
%USERPROFILE%\.gemini\settings.json
- 예:
C:\Users\<사용자 계정명>\.gemini\settings.json
- 예:
settings.json
파일을 열고, 아래와 같이 mcpServers
항목에 우리가 만든 MCP 서버 정보를 추가해 주세요.
{
"mcpServers": {
"AdMob": {
"command": "node",
"args": [
// 예) /Users/kunny/repo/admob-mcp-server/build/index.js
"<MCP 서버 경로>/build/index.js"
],
"env": {
// 예) /Users/kunny/repo/admob-mcp-server/credentials
"CREDENTIALS_DIR": "<MCP 서버 경로>/credentials",
// 여러분의 애드몹 게시자 코드를 설정해 주세요.
"PUBLISHER_CODE": "pub-xxxxxxxxx"
},
"trust": true // Gemini CLI가 도구를 호출할 때마다 물어보는 절차를 생략해요.
}
},
...
}
연결 확인: “Gemini, 내 서버 잘 보여?”
연결이 잘 되었는지 확인해 볼까요? Gemini CLI를 실행하면, 연결된 MCP 서버 정보가 아래처럼 표시될 거예요.
Using:
- 1 MCP server (ctrl+t to view)
여기서 Ctrl-T
키를 누르거나 /mcp desc
명령어를 입력하면, 우리가 추가한 서버와 그 안의 도구 목록이 나타납니다.
Configured MCP servers:
🟢 AdMob - Ready (3 tools)
Tools:
- get_account:
Gets information about the AdMob publisher account.
- list_ad_units:
List the ad units under the AdMob publisher account.
- list_apps:
List the apps under the AdMob publisher account.
AdMob - Ready
라는 녹색 불이 보이면 성공입니다!
Gemini, 이제 너는 AdMob 전문가!
자, 이제 마법이 일어날 시간입니다! 우리가 만든 MCP 서버 덕분에, Gemini는 이제 우리의 AdMob 계정에 대한 전문가가 되었습니다. 평범한 Gemini에게는 없던 새로운 능력이 생긴 거죠. 몇 가지 질문을 던져볼까요?
애드몹 계정 정보 물어보기 (get_account
)
- 나: “Could you check the timezone of my AdMob account?”
- Gemini:
╭───────────────────────────────────────────────────────────────────╮ │ ✔ get_account (AdMob MCP Server) get_account (AdMob MCP Server) │ │ │ │ { │ │ "name": "accounts/pub-xxxxxxx", │ │ "publisherId": "pub-xxxxxxx", │ │ "reportingTimeZone": "Asia/Seoul", │ │ "currencyCode": "USD" │ │ } │ ╰───────────────────────────────────────────────────────────────────╯ ✦ Your AdMob account's timezone is Asia/Seoul.
보세요! Gemini가 스스로 get_account
도구를 찾아 실행하고, 그 결과를 바탕으로 “당신의 애드몹 계정 시간대는 Asia/Seoul 입니다.” 라고 똑똑하게 대답해 주네요.
등록된 앱 개수 물어보기 (list_apps
)
- 나: “How many Android apps registered under my AdMob account?”
- Gemini:
╭───────────────────────────────────────────────────────────────╮
│ ✔ list_apps (AdMob MCP Server) list_apps (AdMob MCP Server) │
│ │
│ ... first 108 lines hidden ... │
│ }, │
│ "appApprovalState": "APPROVED" │
│ }, │
│ { │
│ "name": │
│ "accounts/pub-xxxxxx/apps/yyyyyy", │
│ "appId": "ca-app-pub-xxxxxx~yyyyyy", │
│ "platform": "IOS", │
│ "manualAppInfo": { │
│ "displayName": "zzzzzz" │
│ }, │
│ "linkedAppInfo": { │
│ "appStoreId": "nnnnnn", │
│ "displayName": "zzzz" │
│ }, │
│ "appApprovalState": "APPROVED" │
│ }, │
│ ... │
│ ] │
╰───────────────────────────────────────────────────────────────╯
✦ You have 8 Android apps registered under your AdMob account.
이번에도 list_apps
도구를 호출해서 앱 목록을 가져온 뒤, 안드로이드 앱만 정확히 세어서 답변해 주는군요.
특정 앱의 광고 단위 개수 물어보기 (list_ad_units
)
- 나: “How many rewarded ad units are registered under XXX app under my AdMob account?”
- Gemini:
╭───────────────────────────────────────────────────────────────╮
│ ✔ list_apps (AdMob MCP Server) list_apps (AdMob MCP Server) │
│ │
│ ... first 108 lines hidden ... │
│ }, │
│ "appApprovalState": "APPROVED" │
│ }, │
│ { │
│ "name": │
│ "accounts/pub-xxxxxx/apps/yyyyyy", │
│ "appId": "ca-app-pub-xxxxxx~yyyyyy", │
│ "platform": "IOS", │
│ "manualAppInfo": { │
│ "displayName": "zzzzzz" │
│ }, │
│ "linkedAppInfo": { │
│ "appStoreId": "nnnnnn", │
│ "displayName": "zzzz" │
│ }, │
│ "appApprovalState": "APPROVED" │
│ }, │
│ ... │
│ ] │
╰───────────────────────────────────────────────────────────────╯
╭───────────────────────────────────────────────────────────────────────╮
│ ✔ list_ad_units (AdMob MCP Server) list_ad_units (AdMob MCP Server) │
│ │
│ ... first 548 lines hidden ... │
│ "adTypes": [ │
│ "RICH_MEDIA", │
│ "VIDEO" │
│ ] │
│ }, │
│ { │
│ "name": │
│ "accounts/pub-xxxxxx/adUnits/nnnnnn", │
│ "adUnitId": "ca-app-pub-xxxxxx/nnnnnn", │
│ "appId": "ca-app-pub-xxxxxx~yyyyyy", │
│ "displayName": "XXXXXX", │
│ "adFormat": "BANNER", │
│ "adTypes": [ │
│ "RICH_MEDIA", │
│ "VIDEO" │
│ ] │
│ }, │
│ ... │
│ ] │
╰───────────────────────────────────────────────────────────────────────╯
✦ There are 3 rewarded ad units for the Android version and 3 for the iOS
version of the XXXXXX app, for a total of 6 rewarded
ad units.
이번엔 더 복잡한 질문입니다. Gemini는 먼저 list_apps
로 앱 정보를 찾고, 그 다음 list_ad_units
로 광고 단위 목록을 가져와서 두 정보를 조합한 뒤에야 완벽한 답변을 내놓았습니다. 정말 똑똑하죠?
마무리하며
이번 포스트를 통해 우리가 직접 만든 MCP 서버를 Gemini CLI에 연결하고, Gemini에게 새로운 능력을 부여하는 방법을 함께 알아보았습니다. 이제 여러분의 Gemini는 세상에 단 하나뿐인, 여러분만의 ‘AdMob 전문가 비서’ 가 된 셈입니다.
여기서 멈추지 않고, 다음 포스트에서는 한 걸음 더 나아가 보겠습니다. 애드몹 네트워크 리포트와 미디에이션 리포트 기능을 도구로 추가해서, Gemini가 애드몹 계정의 ‘실적’에 대한 질문까지 답할 수 있도록 만들어 볼 거예요. 기대해 주세요!