최근 읽은 MCP에 대한 책 한권을 소개해 봅니다. 사실 길벗에서 출간된 <나만의 MCP 만들기 with 커서> 책을 먼저 읽었는데, 책을 회사에 두다보니 제이펍에서 출간된 <MCP로 똑똑하게 일하는 법>을 먼저 정리하게 되었습니다. 두 책은 MCP를 다루고 있지만 대상 독자층이 다릅니다. 길벗책은 개발자를 위한 MCP 기술 입문서인 반면 제이펍 책은 비개발자를 위한 MCP  활용입문서라 생각됩니다.

앞에서 말한 것처럼 이 책은 개발자가 아닌 일반 AI 사용자가 MCP라는 것을 이해하고 활용하기 위한 책이라 생각됩니다. 개발자가 읽기에는 조금 심심합니다. 개발자인 저는 MCP를 LLM AI에게 능력(capability)을 확장하는 표준 프로토콜로 이해하고 있습니다. 대규모의 데이터를 학습한 AI가 자신의 데이터를 분석하여 자신의 행동 결과를 개선하여 객관적이고 최적화된 의사결정을 내림으로써 불확실하고 복잡한 실제 문제를 해결하는 것이 MCP의 핵심 과업이라 생각합니다.. 

 

이 책은 MCP 자체 보다는 MCP를 활용하여 일하는 법을 다루는 책이고, 일을 잘하기 위하여 나는 MCP를 어떻게 활용할 수 있는지를 소개합니다. 실제로 3장의 MCP활용 가이드를 보면 MCP Host에  설정하여 사용할 수 있는 Google Map MCP, Slack MCP, Sequential thinking MCP와 같은 서비스를 소개하고, 4장은 회의록 관리, 데이터 분석, 정보 검색, 전략 설계에 MCP를 결합하여 사용하는 비즈니스 문제를 해결하는 사례를 보여줍니다.

 

책을 읽는 도중에  Agent라는 용어에 대한 궁금점이 생겼었습니다. 활용사례를 보면 지극히 개인화된 비서 역할이 더 맞는 것 같은데, Agent라는 이름을 왜 붙였을까? 곰곰히 생각해 보면  지시를 받아 수행하는 비서에 비해 좀 더 높은 자율성과 학습성을 가지고 능동적으로 동작하기 때문이 아닐까 하는 생각이 들었습니다.

 

AI의 개념부터 MCP 활용사례까지 잘 정리해 주는 책이기 때문에, 이른바  AI 리터러시를 갖추고 싶은 사무직 직장인이나 업무 프로세스 DX 를 담당하고 있는 분이라면 한번쯤 읽어볼만합니다.Neo의 평점은 3.5입니다. 

 

다음은 책을 읽으면서 제 눈길을 끌었던 부분들입니다.

 


AI의 학습 방법과 형태

* 지도학습: 정답이 분류된 데이터를 통해 입력과 출력사이의 관계를 배우는 방식

* 비지도학습: 정답없이 데이터 자체의 구조와 패턴을 발견하는 방식. 데이터의 내재된 특성을 파악

* 강화학습: 시행착오를 통한 학습. 행동을 취한 후 그 결과에 따라 환경으로 부터 보상이나 벌점을 받으며 학습하는 방식

 

전통적 컴퓨터 시스템은 정확학 규칙과 알고리즘을 통해 계산과 데이터 처리 수행에 탁월. 

AI시스템은 방대한 데이터를 분석하여 자신의 행동을 개선함으로써 객관적이고 최적화된 의사결정을 내릴 수 있게 됨. // 컴퓨터만 그럴까?

 

MCP 서버의 구성요소

리소스: AI에게 제공되는 데이터

도구: AI가 실행할 수 있는 기능

프롬프트: 특정 작업을 위한 대화의 시발점

 

메시지의 맥락이 보존되는 환경에서 팀원들은 더 깊은 이해와 연결성을 바탕으로 협업할 수 있다.

회사에서 회의란 정보 공유 및 의사결정의 핵심 통로

모든 것을 아는 것보다 중요한 것을 아는 것에 집중할 수 있다.

 

데이터가 의미를 갖기 위해서는 가공되어 정보가 되어야 하고, 그 정보에서 의사결정에 도움이 되는 통찰을 얻어야만 인사이트가 된다.

데이터의 가치는 그것을 분석하고 해석할 수 있는 능력에 달려 있다.

 

AI와 MCP의 결합은 직장인들에게 전략적 사고의 지평을 넓혀주는 강력한 도구

AI를 단순한 도구가 아닌 전략적 파트너로 바라보는 관점. AI가 제공하는 분석과 제안은 항상 우리의 경험, 직관, 판단력과 결합될 때 최고의 결과를 만들어 낸다.

반응형

 

이번에 나눌 이야기는 파이썬 클래스에서 동적으로 메서드를 생성하는 방법에 대한 이야기입니다. dataclass 데코레이터의 동작 원리를 살펴보다가 알게된 내용을 정리해 봅니다.

 

EXEC 함수 

먼저 exec 함수에 대해 알아봅니다.

이 함수는 텍스트로 작성된 코드를 실행하기 위한 용도로 사용됩니다. 즉, 파이썬 코드 문자열을 동적으로 실행하는 기능을 제공합니다.

exec('print("Hello World")')

 

이 코드를 실행하면 마치 파이썬 코드로 print("Hello World")를 실행한 것과 동일한 결과를 얻습니다. 여기까지는 많이들 보셨을 텐데요, exec 함수의 서명(signature)는 다음과 같습니다.

exec(object[, globals[, locals]])

 

두번째 인자와 세번째 인자는 스코프의 네임스페이스입니다.  따라서 특정 인수값을 전달하지 않으면 현재의 전역/지역 네임스페이스를 기반으로 실행됩니다.

exec(object) # 현재 스코프에서 코드 실행
exec(object, globals) # 주어진 전역 네임스페이스에서 실행
exec(object, globals, locals) # 전역과 지역 네임스페이스를 분리하여 실행

 

 

SETATTR 함수

setattr 함수는 객체의 속성을 동적으로 추가하거나 변경하는 함수입니다. 즉, 클래스/객체에 속성을 추가하거나 기존 속성을 수정할 수 있습니다. 이 함수의 서명은 다음과 같습니다.

setattr(object, name, value)
# object: 속성을 추가하거나 수정할 대상 객체
# name: 속성의 이름(문자열)
# value: 설정할 속성 값

 

예를 들어 빈 Person이라는 클래스를 만들고, 여기에 name이라는 속성을 동적으로 추가해 봅시다.

class Person:
    pass  # 빈 클래스 정의

p = Person()

# 동적으로 'name' 속성 추가
setattr(p, 'name', 'neozest')
print(p.name)  # neozest

 

 

클래스에 메서드 동적으로 추가하기

파이썬에서 함수는 1급 시민입니다. 즉, 함수 자체를 인수로 주고 받을 수도 있습니다.

이번에는 Animal 클래스를 만들고, 여기에 speak 메서드를 동적으로 추가해 보겠습니다. 먼저 클래스 코드!

 

class Animal:
    def __init__(self, name):
        self.name = name

a = Animal("Dog")
a.speak()  # AttributeError 발생!

 

AttributeError 예외가 발생했습니다. 당연한 결과죠. Animal 클래스에 speak 메서드가 정의되어 있지 않습니다. 

 

이번엔 동적으로 메서드를 추가해 보겠습니다. 본질적으로 어떤 함수 정의 객체를 클래스에 추가하는 작업입니다. 이를 보다 추상화해서 특정 클래스에 특정 코드를 메서드로 추가하는 함수를 만들어 봅니다.

def add_method(cls, method_name, method_body):
    code = f"def {method_name}(self): {method_body}"
    exec(code, globals(), locals())
    setattr(cls, method_name, locals()[method_name])

 

code는 함수를 선언하기 위해 만든 문자열입니다. 이 함수 정의 코드 문자열을 exec 함수를 사용하여 전역/지역 네임스페이스에서 실행합니다. 그렇게 만들어진 속성(메서드)를 setattr함수를 사용하여 특정 클래스의 신규 속성으로 등록합니다.

이제 Animal 클래스에 새로운 메서드를 추가한 후 speak 메서드를 호출해 봅니다.

add_method(Animal, "speak", 'print(f"{self.name} makes a sound")')

a = Animal("Dog")
a.speak()  # Dog makes a sound

 

이제 문제없이 speak 메서드를 호출할 수 있습니다.

 

심지어 람다함수로도 메서드를 동적으로 추가할 수 있습니다.

setattr(Animal, "shout", lambda self: "Roar!")

print(a.shout())  # Roar!

 

 

마무리 - dataclass 데코레이터

dataclass 데코레이터는 클래스 정의를 자동화하는 기능을 제공하여 __init__, __repr__, __eq__와 같은 던더 메서드를 직접 작성하지 않아도 자동으로 생성해 줍니다. dataclass 데코레이터는  클래스의 __annotations__ 던더 속성을 이용하여 사용자 정의 클래스를 수정합니다. 이 속성은 클래스에 대한 메타정보,즉  변수, 속성, 함수 인자, 반환값 등에 대한 타입 힌트를 담고 있습니다. 이 속성을 이용하여 필요한 메서드를 동적으로 클래스에 추가할 수 있습니다.

 

알아두면 좋을법한 관련 정보

데코레이터, 네임스페이스에 대한 보다 자세한 이야기는 제가 번역하고 인사이트 출판사에서 펴낸 <Python How-To: 파이썬다운 코드를 개발하는 63가지 실용기법>의 다음 부분에 설명되어 있습니다.

  • dataclass 데코레이터:Python How-to의 9.2절에 자세히 설명되어 있습니다.
  • LEGB 네임스페이스 규칙: Python How-to의 10.3절에 자세히 설명되어 있습니다.
  • 데코레이터: Python How-To의 7.3절에 자세히 설명되어 있습니다.

책을 구매하시면 출판사에서 더 좋은 파이썬 책을 만드는데 도움이 되지 않을까요. :)

 

알라딘: https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=369848931

교보: https://product.kyobobook.co.kr/detail/S000217294649

YES24: https://www.yes24.com/product/goods/151253343

 

 

파이썬다운 코드를 개발하는 63가지 실용 기법 | 프로그래밍 인사이트 Programming Insight | 용 추이

63가지 핵심 파이썬 기술을 익힐 수 있는 간단하지만 강력한 방법을 제시한다. 예를 들어, ‘시퀀스에서 항목을 찾으려면 어떻게 해야 할까?’와 같은 질문에서 출발하여 매우 명확한 기본 해결

www.aladin.co.kr

 

 

반응형

+ Recent posts