나의 밥벌이에 지대한 공헌을 한 도구 중 하나가 바로 "GitHub"이고,

최근 계속 관심을 갖고 있는 것이 "MCP (Model Context Protocol)"인데 ...

 

"GitHub MCP Exploited" 이라니 !!!

 

https://invariantlabs.ai/blog/mcp-github-vulnerability

 

 

https://simonwillison.net/2025/May/26/github-mcp-exploited/

 

 

어떻게 동작하는 것인지는 아래 그림 하나로 설명이 된다.

 

 

공개 저장소에 있는 이슈를 분석해서 해결하라는 명령을 하는 경우,

이슈에 "개인 저장소 정보를 읽어와서 그것을 저장"하라는 문구를 포함하게 되면,

GitHub MCP에 개인 토큰이 있기 때문에 개인 private 저장소의 내용이 유출될 수 있다는 것이다.

 

공개 저장소에 아래와 같은 이슈를 포함하기만 하면 되는 것이다.

 

그러면, 아래와 같은 정보를 얻어낼 수 있다.

 

 

문제는 Official GitHub MCP Server에서도 적용이되는 보안 위협이라는 것이다.

 

https://github.com/github/github-mcp-server

 

 

그러면, 이런 보안 위협을 방지하기 위해서 주의해야할 점은 무엇이 있을까!?

 

① MCP Server

  - Official 배포되는 MCP Server도 보안 위협이 있을 수 있는데,

  - 비공식 배포되는 MCP Server는 더더욱 위험할 수 밖에 없다.

 

② Check

  - MCP tool을 사용할 때에 Agent가 확인을 요구하는데, 그냥 pass하지 말고 확인해야 한다.

  - Always Allow는 되도록 사용하지 말아야 한다.

 

③ token

  - 이런 보안 위협을 막기 위해서는 근본적으로 PAT(Personal Access Token) 관리를 잘해야 한다.

    . https://github.com/settings/personal-access-tokens/new

 

  - Token을 사용하지 않을 수 없지만, 꼭 필요한 권한만 세부 설정해서 등록/사용하는 것이 좋다.

    . classic 타입의 token은 보다 더 세밀한 권한을 관리할 수 있다.

 

 

MCP라는 것이 나온지 얼마 되지 않은 규약이다보니 아직은 미흡한 점이 많을 수 있다.

그렇기에 근본적으로 이런 부분을 방지하기 위한 많은 연구가 있어야 할 것이다.

 

 

"GitHub MCP Exploited"이라고 해서,

"어?! 그러면 GitHub MCP Server를 쓰면 안되겠네?!"라고 생각하는 것은 좀 오버인 것 같고

"좀 더 조심히 사용해야겠다" 정도로 받아들이면 좋을 것 같다.

 

어떻게 동작하는지 좀 더 공부를 하고

동작할 때 사용되는 타겟이 무엇인지 결과가 어디에 적용이 되는지 유심히 살펴봐야 하는 것이다.

 

항상 input/output 관리가 중요하다!

반응형

'AI_ML > LLM' 카테고리의 다른 글

HuggingFace - LLAMA 3.2 for Korean  (2) 2024.11.12
HuggingFace - Learn - NLP Course #3  (3) 2024.11.11
HuggingFace - Learn - NLP Course #2  (0) 2024.11.10
HuggingFace - Learn - NLP Course  (1) 2024.11.09
Gemini 잔소리꾼 만들기  (1) 2024.11.08

MCP에 대해서 개괄적인 부분을 알고 싶으면 지난 포스팅을 참고하세요.

- MCP (Model Context Protocol) Overview

 

이번 포스팅에서는 MCP라는 것을 어떻게 사용하는지 살짝 체험 해보고자 한다.

 

 

VSCode(Visual Studio Code)에 GitHub Copilot까지는 등록된 환경에서 시작하겠다.

 

오른쪽 채팅창을 잘 살펴보면 3가지 모드를 선택할 수 있는 것을 알 수 있다.

 

Ask / Edit / Agent 3가지 모드가 있는데, 지금 우리가 관심있는 것은 Agent 모드이다.

 

사실 Edit 모드와 Agent 모드는 비슷 인터페이스를 보인다.

하지만, 왼쪽 밑을 보면 살짝 차이가 있는 부분을 발견할 수 있다.

 

Agent 모드에 대한 자세한 설명은 Visual Studio Code의 문서를 참고하면 된다. (GitHub Copilot 설명을?)

- https://code.visualstudio.com/docs/copilot/chat/chat-agent-mode

 

Agent 모드에서도 Edit 모드와 거의 동일하게 동작한다.

 

Agent 모드이기 때문에 채팅창을 벗어나 터미널 명령어들을 사용할 수도 있다.

 

채팅창에서만 동작한 것이 아니라 실제로 'Copilot' 터미널이 열리면서 스스로 동작을 한 것이다.

 

하지만, GitHub 관련한 동작을 시키면 못한다. (당연한 이야기!?)

 

GitHub 관련된 일도 시킬 수 있으면 좋을텐데....

 

이럴 때 필요한 것이 MCP Server 이다 !!!

 

GitHub에서 공식으로 공개한 GitHub MCP Server를 찾아보자.

https://github.com/github/github-mcp-server

 

사전에 준비해야할 사항들이 보인다.

 

Docker를 사용할 수 있는 환경이어야 하는데, 이미 설치되어 있다 ^^

 

GitHub Personal Access Token도 있어야 한다니,

GitHub에 접속해서 내 token을 미리 생성하고 복사해 두자.

 

이제 GitHub MCP Server를 설치하면 되는데,

GitHub 페이지에서 보이는 Badge를 클릭하면 바로 설치가 되기는 하지만... 직접 설치해보자.

 

설치 방법을 잘 살펴보자.

https://github.com/github/github-mcp-server?tab=readme-ov-file#installation

 

VSCode에서 "Ctrl + Shift + P" 단축키를 눌러서 나오는 화면에서

"Preferences: Open User Settings (JSON)"를 선택하자.

 

편집탭에 "settings.json" 파일이 열려있을텐데,

GitHub Installation 부분에 나와있는 json 내역을 추가해주면 된다. (기존 내용이 있으면 그 안에 덧붙이기)

 

그리고 저장을 하면 Copilot 채팅창의 왼쪽 밑에 뭔가 변화가 보일 것이다.

 

그리고 Personal Access Token 값을 넣으라는 창이 나타날 것이다.

 

미리 복사해둔 내용을 붙여넣기 하고 엔터를 치면 된다.

그러면, 도구 정보를 잘 읽어온 것을 볼 수 있을 것이다.

 

무려 30개의 도구를 읽어온 것이 보일텐데, 어떤 도구들이 있는지 궁금하면 클릭해보면 된다.

 

그러면 이제 GitHub MCP Server를 활용하는 사례를 진행해보자.

 

github.com의 내 정보를 알려달라고 했더니, "get_me"라는 도구를 찾아서 사용해도 되는지를 묻는다.

 

이슈 정보를 불러오게 할 수도 있다.

 

MCP Server는 어디에 있는 것일까?

 

내 local pc에 docker가 하나 돌고 있는 것을 확인할 수 있다.

뭔가 기분 나쁨?!

 

나중에 이거 뒤처리 내가 해야할 것 같은데!?

반응형

최근 너무나 핫한 MCP에 대해서 알아보자.

 

구글 트렌드를 보면 알겠지만, 인기가 아주 급성장을 했다.

그것도 엄청 짧은 시간에 확~

 

MCP는 2024년 11월 26일에 ANTHROPIC에서 첫 발표를 했다.

- https://www.anthropic.com/news/model-context-protocol

 

CURSOR.AI에서 지원을 하기로 하면서 인기를 얻다가

Sam Altman이 2025년 3월 27일 X.com에서

MCP 지원을 한다는 메시지를 남긴 이후 정말 급격히 각광을 받기 시작했다.

 

 

Model Context Protocol(MCP)는

AI Agent가 외부의 여러 도구나 데이터들을 연결하기 위한 표준 프로토콜이다.

https://norahsakal.com/blog/mcp-vs-api-model-context-protocol-explained/

 

여러 H/W들을 지원하기 위한 HAL(Hardware Abastract Layer)과 같은 역할이라고 보면 된다.

아니면, 위의 그림처럼 USB-C 표준 프로토콜 처럼 생각하면 된다.

 

 

MCP의 아키텍처는는 아래와 같다.

https://modelcontextprotocol.io/introduction#general-architecture

 

중요한 개념은 볼드로 강조했다.

 

 MCP Hosts

    : Programs like Claude Desktop, IDEs, or AI tools that want to access data through MCP


 MCP Clients

    : Protocol clients that maintain 1:1 connections with servers


 MCP Servers

    : Lightweight programs that each expose specific capabilities through the standardized Model Context Protocol


 Local Data Sources

    : Your computer’s files, databases, and services that MCP servers can securely access


 Remote Services

    : External systems available over the internet (e.g., through APIs) that MCP servers can connect to

 

 

그래서, 결국 정리하자면 다음과 같은 문장으로 MCP를 설명할 수 있다.

 

" Host가 시키면, Client는 전달하고, Server는 수행한다.

 

 

MCP는 태어난지도 얼마 되지 않았고,

그렇기 때문에 아직 기술적 성숙도가 충분히 올라와 있지 않다.

 

그리고, 24년 11월 26일 최초 발표 이후, 25년 03월 26일에 업데이트가 이루어졌다.

아직 업데이트 된지가 얼마되지 않아 관련된 사항을 확인하기도 쉽지는 않다.

 

구글링된 결과들을 참고해도 좋긴 하지만, 공식 문서부터 확인하는 것을 강추 한다.

https://modelcontextprotocol.io/

 

샘플 코드 같은 공식적인 자료들도 아래 GitHub에서 확인을 하면 좋다.

- https://github.com/modelcontextprotocol

 

 

MCP Server들을 모아놓은 Marketplace는 아래 사이트들을 참조하면 좋다.

https://mcp.so/

 

- https://smithery.ai/

 

- https://mcpservers.org/

 

다음 포스팅에서는 간단한 활용법을 알아보도록 하겠다.

반응형

GitHub에서 여러 LLM 모델들을 가지고 놀 수 있는 서비스를 제공하고자 하고 있어서

이것을 소개해보려 한다.

 

아직은 정식 서비스를 하고 있지 않아서인지, 메뉴가 꼭 꼭 숨어있다.

 

아! 아직은 Preview 상태라서 해당 메뉴가 보이지 않는 분들이 계실 수도 있다.

그런 분들은 그냥 이런게 곧 나오겠구나~하고 구경 먼저 해보시길 ^^

 

일단 로그인을 하고...

GitHub

 

왼쪽 위 메뉴 버튼을 눌러 펼친 다음에

"Marketplace"를 선택하자.

Menu

 

Marketplace 메뉴들을 보면 "Models"를 발견할 수 있다.

Models

 

여러 LLM 모델들을 볼 수 있는데,

일단 친근한 GPT-4o를 선택해보자.

OpenAI GPT-4o

 

오른쪽 위의 "Playground" 버튼을 선택해보자.

Playground

 

System prompt를 비롯해서 Max Tokens라던지, Temperature 등 여러 parameter들을 설정할 수도 있다.

직접 프롬프트를 입력하면 대기시간 없이 즉시 응답을 해준다.

prompt

 

한글 출력이 깨지는 것이 있는데, model의 잘못인지 GitHub에서의 출력 문제인지는 불분명하다.

 

말만 들어봤던 Mistral 모델을 가지고도 한 번 해봤다.

한글도 잘 알아듣고, 결과도 나름 괜찮네!?

Mistral

 

현재 GitHub Models에서 사용해볼 수 있는 model들은 다음과 같다.

 

이걸 가지고 뭔가 재미난 것들을 해볼 수도 있을 것 같은데...

Preview 기간이 끝나면 당연하게도 유료 서비스가 될 것 같아서 ^^

반응형

+ Recent posts