0. 들어가기 전에
대학교 학부 시절, 나는 전자공학을 전공했다. 전자공학도로서, 나는 전자회로를 수강했는데 한 교수님이 과제 제출 방식을 특이하게 설정하셨다. 과제 풀이를 작성한 다음 HTML로 코딩하여 제출하는 방식이었다. 교수님은 '전자회로 실력도 늘면서 동시에 웹페이지 코딩 능력도 키울 수 있는' 좋은 경험이 될 거라 말씀하셨다. 맨 처음엔 그게 무슨 말도 안되는 소리인가 생각했지만 곰곰히 생각해보니 재밌을 것 같아서 한번 해보기로 했다. 학기가 끝날 때 즈음 나는 HTML로 간단한 문서를 작성하는 방법을 배울 수 있었다. 그러나 이 오래된 언어를 배워서 도대체 어디에 사용할까 하는 생각이 들었다.
그렇게 자연스레 HTML에 대한 지식이 잊혀질 즈음, 나는 유튜브를 통해 'Gemini CLI'에 대해 들을 수 있었다. 이 프로그램은 CLI, 즉 터미널 환경에서 LLM AI를 제공한다. 이때까지 나는 WWW, IDE 등 다양한 환경에서 LLM AI를 사용해봤지만 터미널에서는 한번도 사용해본 적이 없었다. 실은 Claude Code라는 강력한 CLI용 LLM AI가 있지만 이 프로그램의 최대 단점은 리눅스에서만 돌아간다는 사실이다.
그러나 Gemini CLI는 윈도우, 리눅스 등 모든 환경에서 돌아가기 때문에 많은 사용자를 끌어들일 수 있으며 어떤 운영체제에서든 쉽게 접근할 수 있다는 특징이 있다. 나는 이 프로그램을 설치하는 방법을 조사하던 중, 우연히 node.js를 알게 되었다. 이 프로그램은 자바스크립트를 웹 밖에서 사용할 수 있게 해주는 특징이 있다. 그리고 이 자바스크립트는 바로 HTML에서 비롯된다. 나는 이 사실을 알게 되고 나서야 교수님의 큰 그림을 이해할 수 있었다. 오늘 우리는 CLI 환경에서 사용할 수 있는 LLM AI 모델 중 하나인 Gemini CLI를 리눅스와 윈도우에 설치할 것이다. 그리고 최종적으로 MCP 서버들 중 하나인 'server-filesystem'를 추가해볼 것이다.
1. Gemini CLI 설치 및 설정 - 리눅스(우분투 위주)
리눅스에 대한 Gemini CLI 설치 및 설정 절차를 크게 요약하자면 아래와 같다:
-------------------------------------------------------------------------------------------------------
1) Python 설치
2) GCC 및 G++ 설치
3) Node.js 및 npm 설치
4) Gemini CLI 설치
5) 'server-filesystem' MCP 설정
-------------------------------------------------------------------------------------------------------
1) Python 설치
파이썬은 Node와 npm을 설치하기 위해 필요한 프로그램이다. 설치 명령어는 아래와 같다:
sudo apt-get install python3
2) GCC 및 G++ 설치
GCC(GNU C Compiler)는 리눅스에서 자주 사용되는 C 컴파일러이며 G++(GNU C++ Compiler)는 리눅스에서 자주 사용되는 C++ 컴파일러이다. Node.js를 설치하기 위해서는 C 컴파일러와 C++ 컴파일러 둘 다 필요하기 때문에 이 프로그램을 설치해야 한다. 설치 명령어는 아래와 같다:
sudo apt-get install g++-12 gcc-12
이후 컴파일러가 잘 작동하는지 확인하기 위해 vim 등을 사용하여 간단한 test.c 파일을 만들어서 컴파일을 진행해볼 수 있다. vim을 설치하는 방법은 아래의 링크를 통해 확인할 수 있다:
(https://zehonyi21.tistory.com/32)
// file name : test.c
#include <stdio.h>
int main() {
printf("Hello world\n");
return 0;
}
컴파일을 진행하기 위해 터미널을 실행한 다음 아래와 같은 명령어를 입력할 수 있다:
gcc test.c -o test.out
./test.out
3) Node.js 및 npm 설치
' 0. 들어가기 전에 ' 에서 언급했듯이, Node.js는 자바스크립트를 웹 밖에서 실행시켜주는 프로그램이다. 이 프로그램을 통해 Gemini를 CLI에서 불러올 수 있다. 나는 아래 링크의 도움을 많이 받았다:
(https://sonit.tistory.com/11)
Gemini CLI를 설치하려면 적어도 21버전 이상의 Node.js가 필요하다. Node.js와 npm을 설치하는 명령어는 아래와 같다:
wget https://nodejs.org/dist/latest-v21.x/node-v21.7.3-linux-x64.tar.gz
tar -xvf node-v21.7.3-linux-x64.tar.gz
sudo cp -r node-v21.7.3-linux-x64/* /usr/local
# Try "/usr/local/bin/node"
source ~/.bashrc
node --version
이후 설치가 잘 되었는지 버전을 확인할 수 있다. 명령어는 아래와 같다:
node --version
4) Gemini CLI 설치
이제 Gemini를 CLI에서 실행해볼 시간이다. 크게 2가지 방법 중 하나를 선택할 수 있다. 하나는 설치를 진행하지 않고 실행만 하는 npx 방식이 있다. 다른 하나는 설치를 진행한 다음 실행하는 npm 방식이 있다. 우리는 먼저 첫번째 방식을 사용해보고 다음으로 두번째 방식을 사용해서 둘 다 해보기로 한다.(만약 두번째 방식이 작동하지 않는다면 첫번째 방식을 먼저 적용해보기 바란다.) 이 방식들에 대해 나는 아래 링크의 도움을 많이 받았다:
(https://github.com/google-gemini/gemini-cli)
우선 npx 방식의 명령어는 아래와 같다:
npx https://github.com/google-gemini/gemini-cli
이 명령어를 통해 'github:google-gemini/gemini-cli' 패키지를 설치한다.
이후 Gemini CLI의 테마를 설정해야 한다. 잘 모를 경우 default로 설정한다.
다음으로 인증방식을 설정해야 한다. 가장 일반적인 방식은 gmail로 연동하는 방식이다.
연동을 성공적으로 마치면 아래와 같은 화면을 웹 브라우저에서 확인할 수 있다:
계정 연결까지 마치면 CLI 창에서 Gemini CLI를 확인할 수 있다. 간단한 질문을 한 뒤 아래의 명령어로 프로그램을 종료한다:
/quit
이제 npm 방식으로 직접 설치해볼 시간이다. 명령어는 아래와 같다:
sudo npm install -g @google/gemini-cli
설치가 끝나면 아래의 명령어를 통해 Gemini CLI를 실행한다:
gemini
5) 'server-filesystem' MCP 설정
MCP(Model Context Protocol)는 Anthropic에서 개발한 프로토콜, 즉 자료 전송 방식이다. 이 프로토콜이 있으면 Gemini CLI가 파일 접근을 비롯하여 외부 홈페이지 또는 API에 접근하여 수많은 자료를 전송할 수 있다. 그 결과 막대한 데이터를 다룰 수 있게 되어 기존에 비해 향상된 서비스를 제공할 수 있다. 오늘은 MCP 기능들 중 가장 기본적인 파일시스템 관련 기능을 추가해보려 한다. 이 과정을 통해 MCP 사용법을 익히게 된다면 추후에 다른 MCP들도 쉽게 적용할 수 있을 것이다.
MCP 설정을 할 때 나는 아래 링크의 도움을 많이 받았다:
(https://sinsucoding.tistory.com/31)
우선 vim 등으로 Gemini CLI의 설정을 수정해야 한다. 아래의 명령어를 사용하여 설정 파일을 편집할 수 있다:
vim ~/.gemini/settings.json
'settings.json' 파일을 아래와 같이 변경한다:
{
"theme": "Default",
"selectedAuthType": "oauth-personal",
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"~/Desktop",
"~/MyGemini_CLI"
]
}
}
}
이후 홈 폴더(/home/'사용자명')에 Desktop과 MyGemini_CLI 폴더를 생성한다. 그리고 새 터미널을 연 다음 'gemini'를 입력해서 MCP가 적용되었는지 확인한다.
이때 MCP 파일시스템이 잘 적용되었는지 확인하기 위해 접근가능한 디렉토리를 물어볼 수 있다. 명령어는 아래와 같다:
Tell me the directory that I can access in my filesystem
'Yes, allow once'를 선택하면 접근가능한 디렉토리 목록을 확인할 수 있다.
이외에도 다양한 MCP 서버가 있으니 시간이 있다면 한번쯤 찾아봐도 좋다고 생각한다.
2. Gemini CLI 설치 및 설정 - 윈도우(PowerShell)
윈도우에 대한 Gemini CLI 설치 및 설정 절차를 크게 요약하자면 아래와 같다:
-------------------------------------------------------------------------------------------------------
1) Python 설치
2) Visual Studio 설치
3) Node.js 및 npm 설치
4) Gemini CLI 설치
5) 'server-filesystem' MCP 설정
-------------------------------------------------------------------------------------------------------
1) Python 설치
파이썬은 Node와 npm을 설치하기 위해 필요한 프로그램이다.
윈도우로 Python을 설치하는 방법은 구글에 너무나도 많이 있기 때문에 여기서 직접 하나하나 설명하진 않겠다. 그러나 필요한 사람들이 있을까 봐 설치과정이 잘 적혀있는 링크를 남기겠다:
2) Visual Studio 설치
Visual Studio는 윈도우용 C++ 컴파일러이다.(VS Code와 헷갈리지 않도록 주의해야 한다.) 신기하게도 C 컴파일러의 기능 또한 포함하고 있다. 어떤 사람들은 이 컴파일러가 마음에 들지 않아서 또는 프로그램 빌드를 위해 윈도우에 GCC를 설치하기도 한다. 그러나 GCC는 리눅스에서 돌아가기 위해 설계된 프로그램이기 때문에 가급적 윈도우용 컴파일러인 Visual Studio를 사용하길 권장한다. 대부분의 윈도우 C언어 교재는 GUI를 기반으로 코딩을 설명한다. 그러나 올바른 코딩 습관을 익히려면 gcc나 CL명령어를 통해 CLI에서 먼저 코딩 경험을 쌓는 것이 중요하다고 생각한다. Node.js를 설치하기 위해서는 C 컴파일러와 C++ 컴파일러 둘 다 필요하기 때문에 이 프로그램을 설치해야 한다.
윈도우로 Visual Studio를 설치하는 방법은 구글에 너무나도 많이 있기 때문에 여기서 직접 하나하나 설명하진 않겠다. 그러나 필요한 사람들이 있을까 봐 설치과정이 잘 적혀있는 링크를 남기겠다:
(https://m.blog.naver.com/insideimagix/223317707123)
이후 컴파일러가 잘 작동하는지 확인하기 위해 vim 등을 사용하여 간단한 test.c 파일을 만들어서 컴파일을 진행해볼 수 있다. vim을 설치하는 방법은 아래의 링크를 통해 확인할 수 있다:
(https://zehonyi21.tistory.com/32)
// file name : test.c
#include <stdio.h>
int main() {
printf("Hello world\n");
return 0;
}
컴파일을 진행하기 위해 'Developer PowerShell for VS 2022'등을 실행한 다음 아래와 같은 명령어를 입력할 수 있다:
CL test.c
./test.exe
3) Node.js 및 npm 설치
' 0. 들어가기 전에 ' 에서 언급했듯이, Node.js는 자바스크립트를 웹 밖에서 실행시켜주는 프로그램이다. 이 프로그램을 통해 Gemini를 CLI에서 불러올 수 있다.
윈도우로 Node.js를 설치하는 방법은 구글에 너무나도 많이 있기 때문에 여기서 직접 하나하나 설명하진 않겠다. 그러나 필요한 사람들이 있을까 봐 설치과정이 잘 적혀있는 링크를 남기겠다:
(https://offbyone.tistory.com/441)
4) Gemini CLI 설치
이제 Gemini를 CLI에서 실행해볼 시간이다. 크게 2가지 방법 중 하나를 선택할 수 있다. 하나는 설치를 진행하지 않고 실행만 하는 npx 방식이 있다. 다른 하나는 설치를 진행한 다음 실행하는 npm 방식이 있다. 우리는 먼저 첫번째 방식을 사용해보고 다음으로 두번째 방식을 사용해서 둘 다 해보기로 한다.(만약 두번째 방식이 작동하지 않는다면 첫번째 방식을 먼저 적용해보기 바란다.) 이 방식들에 대해 나는 아래 링크의 도움을 많이 받았다:
(https://github.com/google-gemini/gemini-cli)
윈도우에서는 한 가지 주의해야 할 점이 있다. 파워쉘의 경우 보안 목적으로 스크립트 실행을 막아놨다. 이 설정을 풀기 위해 관리자 권한으로 파워쉘을 실행한 다음 아래와 같은 명령어를 입력해야 한다:
(https://itpro.tistory.com/100)
Set-ExecutionPolicy RemoteSigned
우선 npx 방식의 명령어는 아래와 같다:
npx https://github.com/google-gemini/gemini-cli
이 명령어를 통해 'github:google-gemini/gemini-cli' 패키지를 설치한다. 이후 Gemini CLI의 테마를 설정해야 한다. 잘 모를 경우 default로 설정한다. 다음으로 인증방식을 설정해야 한다. 가장 일반적인 방식은 gmail로 연동하는 방식이다. 연동을 성공적으로 마치면 아래와 같은 화면을 웹 브라우저에서 확인할 수 있다:
계정 연결까지 마치면 CLI 창에서 Gemini CLI를 확인할 수 있다. 간단한 질문을 한 뒤 아래의 명령어로 프로그램을 종료한다:
/quit
이제 npm 방식으로 직접 설치해볼 시간이다. 명령어는 아래와 같다:
npm install -g @google/gemini-cli
설치가 끝나면 아래의 명령어를 통해 Gemini CLI를 실행한다:
gemini
5) 'server-filesystem' MCP 설정
MCP(Model Context Protocol)는 Anthropic에서 개발한 프로토콜, 즉 자료 전송 방식이다. 이 프로토콜이 있으면 Gemini CLI가 파일 접근을 비롯하여 외부 홈페이지 또는 API에 접근하여 수많은 자료를 전송할 수 있다. 그 결과 막대한 데이터를 다룰 수 있게 되어 기존에 비해 향상된 서비스를 제공할 수 있다. 오늘은 MCP 기능들 중 가장 기본적인 파일시스템 관련 기능을 추가해보려 한다. 이 과정을 통해 MCP 사용법을 익히게 된다면 추후에 다른 MCP들도 쉽게 적용할 수 있을 것이다.
MCP 설정을 할 때 나는 아래 링크의 도움을 많이 받았다:
(https://sinsucoding.tistory.com/31)
우선 vim 등으로 Gemini CLI의 설정을 수정해야 한다. 아래의 명령어를 사용하여 설정 파일을 편집할 수 있다:
vim $HOME\.gemini\settings.json
'settings.json' 파일을 아래와 같이 변경한다:
{
"theme": "Default",
"selectedAuthType": "oauth-personal",
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"$HOME\\Desktop",
"$HOME\\MyGemini_CLI"
]
}
}
}
이후 홈 폴더(C:\Users\'사용자명')에 MyGemini_CLI 폴더를 생성한다. 그리고 새 파워쉘을 연 다음 'gemini'를 입력해서 MCP가 적용되었는지 확인한다.
이때 MCP 파일시스템이 잘 적용되었는지 확인하기 위해 접근가능한 디렉토리를 물어볼 수 있다. 명령어는 아래와 같다:
Tell me the directory that I can access in my filesystem
'Yes, allow once'를 선택하면 접근가능한 디렉토리 목록을 확인할 수 있다.
이외에도 다양한 MCP 서버가 있으니 시간이 있다면 한번쯤 찾아봐도 좋다고 생각한다.
3. 결론
오늘 우리는 Gemini CLI를 리눅스와 윈도우에 설치한 다음 MCP 서버를 연결하여 AI의 기능을 확장시킬 수 있었다. 사실 MCP는 Claude Code를 만든 회사인 Anthropic에서 개발한 프로토콜이다. 그러나 클로드 코드는 리눅스에서만 돌아간다는 큰 단점이 있다. 아무리 좋은 LLM AI를 만들더라도 써주는 사람이 없다면 그 프로그램은 아무 가치가 없다. 21세기를 이끌 트렌드는 크로스플랫폼이라고 생각한다. 스마트폰이 비-PC사용자를 웹에 연결시켰듯이, VS Code가 모든 운영체제의 텍스트 에디터를 하나로 통일시켰듯이, 그리고 C-type이 모든 충전 규격을 일원화시켰듯이 크로스플랫폼은 모든 사용자들이 하나되어 힘을 뭉칠 수 있도록 만들 것이다. 이때 조심해야 할 점은 맨 처음부터 크로스 플랫폼을 타깃으로 개발을 하는것이 아니라 네이티브들을 충분히 분석한 뒤 두 기능들을 통합해야 한다는 사실이다. 예를 들어 위의 비-PC사용자를 웹에 연결시키려면 데스크탑과 모바일용 웹페이지의 차이와 장단점을 잘 이해해야 한다. 그리고 텍스트 에디터를 하나로 통일시키려면 윈도우, 리눅스 등 각 운영체제별 텍스트 에디터의 작동방식을 잘 알고 있어야 한다. 마지막으로 충전규격을 일원화하려면 micro-5핀이나 lighting-8핀에 대해 오랜 시간동안 연구한 결과물들이 있어야 한다. 충분한 분석없는 마구잡이식 통합은 파멸을 불러일으킬 것이다. 구글의 Gemini CLI는 크로스플랫폼이라는 트렌드를 잘 잡아냈다고 생각한다. Gemini CLI는 윈도우, 리눅스 양쪽에서 돌아갈 뿐만 아니라 C-type을 목표로하는 MCP를 잘 포용하고 있다. 이번 한번만은 Gemini CLI의 판단이 적절했다고 생각한다.
부록
사용환경별 LLM AI 적합성 분류표
CLI (터미널, 파워쉘) |
IDE (Visual Studio, IntelliJ) |
Web (Chrome, Firefox) |
App (Desktop, Mobile) |
SNS (X or Twitter) |
|
LLM AI | Gemini CLI | GitHub Copilot* | Chat GPT | Claude | Grok** |
*: 적어도 코딩 영역에서 GitHub의 레거시 또는 데이터베이스를 따라올 AI는 아직 없다고 생각한다.
**:
인간의 사고는 이성과 감정으로 구성되어 있다. 이성을 이해하는 방법은 논리이며 감정을 이해하는 방법은 공감이다.
(최근 유행하는 MBTI에서 T, F의 차이와 비슷하다.)
누군가는 한 특성이 다른 특성보다 우월하다고 생각할 수 있겠지만 인간의 사고는 이성과 감정이 동전의 양면처럼 뗄레야 뗄 수 없는, 즉 필수적으로 포함되도록 설계되어 있다. 만약 한 쪽이 다른 한 쪽보다 지배적이라면,
즉 이성이 감정을 압도하거나 감정이 이성을 압도한다면 우리는 더 이상 인간이 아니게 된다. 따라서 최소한의 인간성을 유지하기 위해 우리는 이성이 감정을 지배할 때, 그리고 감정이 이성을 지배할 때 지배적인 특성을 억제하는 서킷 브레이커(Circuit Breaker)가 필요하다.
감정이 지배적일 때는 본인이 이성적으로 옳은 판단을 하고 있는지 되돌아볼 필요가 있으며(ex, 논리적인 분석)
이성이 지배적일 때는 본인이 감정적으로 옳은 판단을 하고 있는지 되돌아볼 필요가 있다.(ex, 공감을 통한 이해)
이를 통해 이성과 감정이 조화 및 균형을 유지하여 서로를 돕는, 즉 상호보완적인 관계를 유지할 때 올바른 인간성을 되찾을 수 있다.
만약 이성이 부족하다면 논리적이지 못한 판단을 내릴 것이며 감정이 부족하다면, 또는 공감능력이 부족하다면 이기적이고 오만한 성격을 가지게 된다. 그 결과 두 경우 모두 주변에 아무도 남지 않는 고립된 삶을 살게 될 것이다.
누군가는 뉴턴, 아인슈타인, 일론 머스크처럼 궁극의 진리(Veritas Ultima)를 추구하는 지식, 지능의 사도 내지는 신의 영역을 목표로 삼을 수 있겠지만 다른 누군가는 가족과 조직을 이끌 수 있을 정도의 이성이면 충분하다고 생각하기도 한다.
마찬가지로 누군가는 Social Network(친목 모임)에 인생을 걸 수도 있지만 다른 누군가는 가벼운 모임을 통한 네트워크 형성 정도면 충분하다고 생각하기도 한다.
Grok은 SNS 사용자(트위터 유저 등)의 비논리를 타파 및 개선하기 위해 X(구 트위터)의 데이터를 기반으로 극한의 이성 및 추론 기능을 탑재하였기 때문에 공감보다는 이성적 사고에서 탁월한 실력을 보인다.
특히 X(트위터) 가입 시 반드시 거쳐야 하는 '로봇 여부를 확인하기 위한 10단계 테스트'는 초보자를 위한 운전 교육처럼 SNS 사용자로 하여금 기초적인 이성 및 추론 과정을 학습시킨다. Grok 없는 X(트위터)는 인생의 낭비였다.
응용 프로그램(Application Program)의 명명법 분류표
Desktop User | Mobile User | |
Absolute Name | Desktop Application Program | Mobile Application Program |
Nickname | Program | App |