Odoo를 네이티브 MCP 서버로 만들어 Claude, Cursor, Codex가 직접 제어할 수 있게 했다

작성자는 XML-RPC나 JSON-RPC로 Odoo에 연결하는 별도 Python 프로세스 방식 대신, Odoo 자체를 MCP 서버로 만드는 오픈소스 애드온 muk_mcp를 개발했다. 이 접근법은 추가 배포 구성요소와 환경 변수 기반 자격 증명 관리를 줄이고, AI가 Odoo 내부에서 실제로 어떤 작업을 수행했는지 더 잘 추적하고 통제할 수 있게 해준다. 글은 이러한 아키텍처 선택의 배경과, AI 어시스턴트를 기업용 업무 시스템에 더 깊게 통합하는 데 가지는 의미를 설명한다.

대규모 언어모델이 단순히 대화만 잘하는 도구에서 실제 업무를 수행하는 조력자로 이동할수록, 기업용 소프트웨어에 던져지는 질문도 달라지고 있다. 예전에는 모델이 질문에 잘 답하는지, 글을 쓸 수 있는지, 몇 가지 흔한 도구를 호출할 수 있는지가 관심사였다. 이제 기업들이 더 진지하게 묻는 것은 전혀 다른 차원의 문제다. 이 시스템이 주문, 재고, 고객, 구매, 프로젝트, 작업 티켓, 재무와 같은 실제 업무 흐름 안으로 들어올 수 있는가, 그리고 명확한 경계와 통제 속에서 진짜 일을 맡길 수 있는가 하는 점이다. 바로 이런 배경에서 한 개발자가 오픈소스 기업관리 시스템인 Odoo 자체를 네이티브 MCP 서버로 바꾸는 애드온을 공개했다는 사실은 단순한 기술 시연 이상으로 읽힌다. 핵심은 “AI를 붙였다”가 아니라, 기업 시스템이 앞으로 AI 에이전트에게 어떻게 열려야 하는지에 대한 보다 근본적인 답을 제시했다는 데 있다.

이 시도가 중요한 이유는 기존에 흔히 보이던 방식과 다른 길을 택했기 때문이다. 보통은 Odoo 바깥에 별도의 Python 프로세스나 중간 서비스를 두고, 그 서비스가 XML-RPC나 JSON-RPC로 Odoo와 통신하면서 Claude, Cursor, Codex 같은 도구가 호출할 수 있는 인터페이스를 제공하는 구조를 사용한다. 이런 방식은 시작하기 쉽다. 시스템 외부에서 코드를 자유롭게 구성할 수 있고, 여러 도구를 하나의 레이어로 묶어 빠르게 실험할 수 있기 때문이다. 하지만 프로토타입을 넘어 실제 운영 환경으로 들어가는 순간, 이 외부 브리지 계층은 곧 새로운 복잡성의 원인이 되기 쉽다.

가장 먼저 드러나는 문제는 배포와 운영이다. 독립 서비스가 하나 늘어날 때마다 설정 파일이 늘고, 의존성이 늘고, 업그레이드 절차가 늘고, 로그를 봐야 할 지점도 늘어난다. 다시 말해 장애가 발생할 수 있는 지점 자체가 늘어난다. Odoo 본체는 멀쩡히 돌아가는데 바깥의 브리지 서비스만 네트워크 문제, 라이브러리 충돌, 버전 불일치, 환경 변수 오류로 쓰러질 수 있다. 데모 프로젝트라면 이런 비용을 감수할 수도 있다. 그러나 실제 기업 환경에서 핵심 업무에 가까운 기능일수록, 장기적인 안정성이 무엇보다 중요해지며 장기 안정성은 대체로 “불필요한 계층을 줄이는 것”과 같은 편에 서 있다.

그다음으로 중요한 문제는 자격 증명과 권한 관리다. 전통적인 외부 브리지 방식에서는 Odoo에 접근하기 위한 계정 정보, 키, 토큰 같은 민감한 설정을 시스템 바깥에서 별도로 들고 있어야 하는 경우가 많다. 겉으로 보면 환경 변수 몇 개 더 관리하는 정도처럼 보일 수 있다. 하지만 실제로는 보안 책임이 분산된다. 이 자격 증명을 어디에 저장할지, 누가 열람 가능한지, 어떻게 교체할지, Odoo 내부 권한 체계와 어떻게 정렬할지, 사고가 났을 때 어떤 주체가 어떤 작업을 했는지 어떻게 추적할지를 모두 따로 고민해야 한다. 에이전트가 단순 조회만 할 때는 이런 문제가 덜 드러난다. 그러나 레코드를 수정하고, 프로세스를 트리거하고, 기록을 생성하고, 실제 업무 상태를 바꾸기 시작하면 이 분산 구조는 곧 통제의 사각지대로 바뀔 수 있다.

muk_mcp가 택한 접근은 바로 이 지점을 뒤집는다. 비즈니스 시스템을 외부 서비스가 대신 조작하는 대상물로 두는 대신, Odoo 자체를 MCP 서버로 만든 것이다. 그 결과 AI 어시스턴트가 접근하는 도구 정의, 파라미터 검증, 객체 접근, 액션 실행, 기록 남기기 같은 것들이 시스템 경계 바깥이 아니라 내부에서 정의되고 처리될 수 있다. 얼핏 보면 단지 연결 위치를 옮긴 것처럼 보일 수 있다. 하지만 실제로는 호출 체계 전체의 통제 방식을 바꾸는 변화다. 외부 브리지에서 한 번 번역되고 다시 내부 의미로 재해석되는 구조가 아니라, 원래 업무 규칙이 살아 있는 곳에서 곧바로 실행과 검증이 일어나는 구조에 더 가까워진다.

가장 직접적인 장점은 시스템 경계가 또렷해진다는 점이다. 비즈니스 규칙은 원래 비즈니스 시스템 안에 있어야 하고, 데이터 객체 역시 시스템이 직접 관리해야 하며, 권한 모델도 시스템이 주도하는 것이 자연스럽다. 에이전트용 프로토콜 인터페이스가 이런 내부 구조에 네이티브하게 붙어 있으면, 어떤 도구를 노출할지, 어떤 입력을 허용할지, 어떤 객체에 접근할 수 있을지, 어떤 이력을 남길지, 어떤 권한 검사를 통과해야 할지를 실제 업무 로직에 가깝게 유지할 수 있다. 외부에서 비슷하지만 완전히 일치하지는 않는 또 하나의 통제 레이어를 만드는 것보다 거버넌스가 더 일관되게 정리될 가능성이 크다.

이 일관성은 기업 환경에서 특히 중요하다. 소비자용 앱이라면 “대충 무슨 일이 일어났는지” 정도를 아는 것으로도 넘어갈 수 있는 경우가 있다. 하지만 기업 시스템은 다르다. 겉보기에 단순한 자동화 한 번이 실제로는 고객 정보 수정, 가격 조정, 재고 차감, 구매 요청 생성, 승인 플로우 발동, 회계 전표 생성 같은 행위와 이어질 수 있다. 한 단계의 오류가 다음 단계 전체를 흔들고, 나아가 운영 리스크나 컴플라이언스 리스크로 번질 수 있다. 그래서 기업이 진짜로 원하는 것은 “모델이 시스템에 연결됐다”는 사실 그 자체가 아니다. 모델이 시스템 안에서 무엇을 했는지, 누가 그것을 허용했는지, 경계를 넘지 않았는지, 나중에 추적 가능한지, 필요할 때 제한하거나 감사할 수 있는지가 핵심이다.

네이티브 방식의 매력은 바로 이런 투명성을 더 자연스럽게 구현할 수 있는 토대를 제공한다는 데 있다. 핵심 동작이 비즈니스 객체 가까이에서 일어나기 때문에, 기존에 이미 존재하던 로그, 메시지, 변경 이력, 권한 체계와 AI 에이전트의 행동을 연결하기가 쉬워진다. 물론 외부 브리지 방식이라고 해서 이런 기능을 전혀 구현할 수 없는 것은 아니다. 하지만 보통은 추가 매핑, 추가 개발, 추가 유지보수가 필요하고, 시스템 안팎의 의미 체계가 조금만 어긋나도 로그는 보이는데 책임 소재는 불분명해지거나 권한은 있어 보이는데 실제 실행 논리는 다른 식으로 흘러갈 수 있다. 인터페이스를 다시 시스템 내부로 가져오는 것은 이런 의미상의 어긋남을 줄이려는 시도라고 볼 수 있다.

이 사례가 더 주목할 만한 이유는, 현재 AI 에이전트를 기업 현장에 적용할 때 반복적으로 드러나는 고질적인 문제를 건드리기 때문이다. 기업용 소프트웨어는 원래부터 복잡하다. 그런데 새로운 AI 기능을 계속 “외부 부착물” 형태로 더해 가면 전체 구조는 쉽게 파편화된다. 처음에는 검색을 더 잘하게 하거나 반복 입력을 줄이기 위해 어시스턴트 하나 붙이는 수준으로 시작한다. 그러다 보면 게이트웨이 하나, 브리지 하나, 로그 서비스 하나, 작업 큐 하나, 인증 동기화 레이어 하나가 더해지고, 나중에는 비즈니스 시스템 바깥에 붙어 있는 또 하나의 평행 인프라를 운영하게 된다. 기능은 화려해 보여도 관리 비용은 점점 무거워진다.

그런 의미에서 Odoo를 네이티브 MCP 서버로 바꾸는 작업은 단순한 배포 단순화 이상의 의미를 갖는다. 본래 바깥으로 새어 나갈 복잡성의 일부를 다시 비즈니스 시스템 안으로 회수하려는 시도이기 때문이다. 독립 서비스를 하나 줄인다는 것은 표면적으로는 운영 부담을 줄이는 일처럼 보이지만, 실제로는 장기 유지비를 낮추고, 구성 드리프트를 줄이고, 권한 경계를 더 일관되게 만들고, 장애 분석 경로를 짧게 만드는 일과 맞닿아 있다. 엔지니어링 팀에게는 호출 체인이 짧아지고, 보안 팀에게는 민감한 자격 증명이 외부에 흩어지는 일이 줄며, 비즈니스 팀에게는 “AI 어시스턴트가 실제로 어떤 행동을 했는가”라는 가장 현실적인 질문에 답하기가 쉬워진다.

특히 Odoo 같은 기업관리 시스템에서는 이런 네이티브 통합의 가치가 더 크다. ERP는 하나의 기능만 가진 도구가 아니라 판매, 구매, 재고, 재무, 프로젝트, 제조, 인사 등 여러 모듈이 하나의 객체 관계와 상태 흐름을 공유하는 구조다. 에이전트가 시스템 바깥에서 몇 개의 API만 산발적으로 호출할 수 있다면, 부분적인 작업은 할 수 있어도 업무 사슬 전체를 이해하고 연속적으로 움직이기는 어렵다. 반대로 인터페이스가 시스템 내부에 존재하면, 동일한 고객, 주문, 제품, 프로세스 상태를 중심으로 여러 모듈을 가로지르는 연속적인 작업을 같은 맥락 안에서 수행할 가능성이 높아진다. 기업이 AI를 일상 운영에 진짜로 편입하려면, 단순히 “연결 가능하냐”보다 이런 통합된 맥락이 훨씬 더 중요하다.

물론 네이티브화가 곧바로 모든 문제를 해결해 주는 것은 아니다. 오히려 핵심 업무에 가까워질수록 거버넌스 요구 수준은 더 높아진다. 가장 먼저 부딪히는 것은 권한 경계다. AI 어시스턴트가 시스템을 직접 구동할 수 있다고 해서 모든 권한을 가져야 한다는 뜻은 아니다. 어떤 작업은 조회만 허용해야 하고, 어떤 작업은 제안이나 초안 생성까지만 허용해야 하며, 어떤 작업은 반드시 사람의 확인을 거치도록 설계해야 한다. 특정 역할이나 특정 시간대에만 허용되는 동작도 있을 수 있다. 이런 제약 없이 네이티브 능력만 강해지면, 실수 역시 더 빠른 속도로 확대될 수 있다.

다음으로는 위험 등급 구분이 중요하다. 기업은 완전히 자유롭게 행동하는 어시스턴트가 핵심 구간에서 주문을 바로 제출하거나, 가격을 바꾸거나, 정산 문서를 처리하거나, 핵심 마스터 데이터를 수정하는 상황을 쉽게 받아들이지 않을 것이다. 보다 현실적인 설계는 작업을 저위험, 중위험, 고위험으로 나누는 것이다. 저위험 작업은 자동 수행이 가능할 수 있고, 중위험 작업은 확인 절차를 거쳐야 하며, 고위험 작업은 초안이나 제안만 만들도록 제한할 수 있다. 즉 네이티브 에이전트 인터페이스는 단순히 “무엇을 할 수 있는가”만 제공해서는 안 되고, “어떤 조건에서, 어디까지, 예외가 생기면 어떻게 멈출 것인가”까지 함께 표현해야 한다. 시스템 기능을 있는 그대로 노출하는 것만으로는 운영 투입이 가능한 환경이 되지 않는다.

감사와 책임 귀속의 문제도 여전히 핵심이다. 네이티브 인터페이스는 추적을 쉽게 만들 수 있지만, 기업은 여전히 어떤 호출을 구조화된 형태로 기록해야 하는지, 기록에 어떤 필드를 남겨야 하는지, 최초 요청자의 신원을 연결해야 하는지, 대량 수정 시 전후 차이를 보존해야 하는지, 실패 시 어떻게 복구할지 같은 규칙을 명확히 가져야 한다. 특히 에이전트가 여러 모듈을 가로지르는 흐름에 참여하기 시작하면, 단일 작업은 더 이상 단순한 생성·조회·수정·삭제가 아니라 상하류 상태를 연쇄적으로 바꾸는 복합 동작이 된다. 기업이 진짜로 원하는 것은 사후에 모호한 자동화 기록 한 줄을 보는 것이 아니라, 문제가 생겼을 때 신속히 원인을 특정하고 필요한 지점에서 차단할 수 있는 구조다.

개발 경험 측면에서도 이런 네이티브 접근은 의미가 크다. 외부 브리지 구조에서는 모델 클라이언트, 브리지 서비스, 비즈니스 시스템이 제각각의 문맥과 로그를 갖는 경우가 많다. 개발자는 여러 터미널과 여러 로그 포인트, 때로는 서로 다른 인증 체계 사이를 오가며 문제를 추적해야 한다. 조금만 복잡해져도 모델이 요청을 오해한 것인지, 브리지가 잘못 번역한 것인지, Odoo 내부 규칙이 거부한 것인지 구분하기 어려워진다. 네이티브 방식은 모든 문제를 없애 주지는 않지만, 적어도 도구 정의, 비즈니스 객체, 권한 판단, 실행 이력이 더 가까운 자리에서 만날 수 있게 만들어 문제 진단 비용을 줄일 수 있다.

산업 전체 흐름 속에서 보면 이 사례의 의미는 더 커진다. 지금까지 AI 에이전트 논의는 종종 모델 성능 향상, 프롬프트 설계, 워크플로우 오케스트레이션에 집중돼 있었다. 하지만 제품이 실제 기업 환경으로 들어갈수록 경쟁의 초점은 통합 인프라로 이동하고 있다. 모델이 아무리 똑똑해도 핵심 시스템 안으로 들어갈 수 없고, 감사할 수 없고, 세밀한 제한을 걸 수 없다면 기업에서는 핵심 역할을 맡기기 어렵다. 다음 단계의 차별화는 모델 자체의 우열만이 아니라, 기업용 소프트웨어가 에이전트와 얼마나 네이티브하게 협업할 수 있는 구조를 갖추고 있는가에서도 나타날 가능성이 크다.

바로 그래서 muk_mcp 같은 작업은 단순한 엔지니어링 플러그인 이상으로 볼 필요가 있다. 이 사례가 주는 신호는 명확하다. 기업 소프트웨어가 AI와 연결되는 방식을 반드시 외부 플랫폼이 정의해 줄 때까지 기다릴 필요는 없다는 것이다. 제품 스스로 그 연결 능력을 내부로 끌어들일 수 있다. 특히 오픈소스 생태계에서는 이 점이 더욱 중요하다. 많은 기업은 이미 운영 중인 핵심 시스템을 쉽게 교체하지 않는다. 데이터 이전, 프로세스 재설계, 팀 교육 비용이 너무 크기 때문이다. 그에 비해 기존 시스템 위에 네이티브 에이전트 인터페이스를 자라게 하는 방식은 훨씬 현실적인 도입 경로다. 익숙한 플랫폼에서 먼저 시범 적용하고, 이후 범위를 점차 넓혀 갈 수 있기 때문이다.

추가 배포 요소와 분산된 자격 증명을 줄이는 일이 겉보기에 단순한 엔지니어링 취향처럼 보일 수 있지만, 실제로는 기업급 지속 가능성의 핵심과 연결돼 있다. 많은 AI 프로젝트가 실패하는 이유는 모델이 완전히 쓸모없어서가 아니라, 주변 인프라가 지나치게 복잡하고 유지 비용이 너무 높아졌기 때문이다. 서비스가 하나 늘어날 때마다 모니터링 대상이 늘고, 장애 유형이 늘고, 업그레이드 절차가 늘어난다. 민감한 설정이 하나 더 생길 때마다 유출 위험과 권한 불일치 가능성도 커진다. 장기적으로 안정적인 업무 시스템을 원하는 조직에게는 이런 숨은 비용을 초기에 잘라내는 것 자체가 큰 이익이다.

업무 방식의 변화라는 관점에서도 이와 같은 네이티브 인터페이스는 중요하다. 지금까지 많은 직원은 웹 UI를 하나씩 클릭하면서 업무를 처리했다. 앞으로는 자연어로 “특정 고객군을 정리해 달라”, “최근 주문 이상 징후를 찾아 달라”, “후속 대응 제안을 준비해 달라”, “재고 문제를 요약해 달라”, “구매 초안을 만들어 달라”처럼 일을 먼저 요청하고, AI 어시스턴트가 시스템 내부에서 정보를 읽고 절차를 구성하고 필요한 기능을 호출한 뒤 결과를 다시 사용자에게 돌려주는 흐름이 늘어날 수 있다. 여기서 진짜 변화는 단지 인터페이스가 화면에서 대화로 옮겨가는 것이 아니라, 비즈니스 시스템 자체가 “에이전트가 직접 조작할 수 있는 구조”를 갖추기 시작한다는 점이다.

다만 기업이 여기서 과도한 낙관으로 뛰어들어서는 안 된다. 네이티브 인터페이스가 자동으로 올바른 실행을 보장하는 것은 아니다. 다만 올바른 통제를 구현할 가능성을 더 높여 줄 뿐이다. 모델은 여전히 업무를 오해할 수 있고, 경계가 모호한 상황에서 좋지 않은 판단을 내릴 수 있으며, 사람의 목표 설정과 확인 지점이 필요하다. 따라서 가장 성숙한 경로는 사람을 한 번에 대체하는 완전 자동화가 아니라, 투명하고 감사 가능하며 되돌릴 수 있는 전제 아래 반복성이 높고 규칙이 비교적 명확한 업무부터 점진적으로 맡기는 방식일 것이다. 보조에서 시작해 반자동으로, 그리고 조건부 자동 실행으로 발전하는 경로가 더 현실적이다.

이런 의미에서 기업관리 시스템을 네이티브 MCP 서버로 전환한 이번 사례는 단순한 연결 방식의 변화가 아니라 기업 소프트웨어의 역할을 다시 정의하는 움직임에 가깝다. 비즈니스 시스템은 더 이상 사람이 클릭하러 들어가는 백오피스이기만 한 것도 아니고, 외부 프로그램이 호출하는 데이터 저장소이기만 한 것도 아니다. 앞으로는 에이전트 협업 시대의 핵심 작업 플랫폼이 될 가능성이 있다. 실제 운영 속에 AI를 장기적이고 안정적이며 통제 가능하게 심고자 하는 기업에게, 이런 방향은 일시적인 신기함이 아니라 실전 배치의 조건을 건드리는 문제라는 점에서 진지하게 볼 가치가 있다.