동물원_근무중_코알라/AI

OpenWebUi-MCPO-MCP 도구 연동

룰루랄라코알라 2025. 4. 21. 15:59
반응형

OpenWebUi에는 MCP를 지원해준다 

다만 RestfulAPI 방식을 지원해주기 때문에 MCP를 바로 연결할수는 없다. 

기존에 cursor 에서 사용되는 MCP와 동일하게 만들면 안된다는거다.

OpenWebUI에 맞게 정리하면 LLM 도구 호출 시스템 (Multi-Tool Orchestration)을 RESTful + OpenAPI 기반 구조로 구현한 형태로 

 

LangChain + FastAPI + OpenAPI + OpenWebUI를 연결해서 도구를 사용한다 생각하면된다. 그리고 openwebui에서는 MCPO를 공식적으로 권장을 한다. 

 

[OpenWebUI] ←→ [MCPO] (FastAPI+OpenAPI)←→ [MCP Server]  

 

구현해보시면 아시겠지만 openapi 저의서 Json이 결국에 도구의 정의라보면 되고 

openwebui 에는 openapi.json 이라는 도구 정의서가 제공이 된다. 

openapi 사용 예시 

openapi OpenAPI 버전 "3.0.0"
info API 정보 title, version 등
paths API 경로 목록 "/tools/summarize"
requestBody 입력 스키마 application/json 안의 schema
responses 응답 스키마 200 OK일 때 반환 구조
components (선택) 스키마 재사용 정의 복잡한 모델일 때 사용

 

{
  "openapi": "3.0.0",
  "info": {
    "title": "My Tools API",
    "version": "1.0.0"
  },
  "paths": {
    "/tools/summarize": {
      "post": {
        "summary": "텍스트를 요약하는 도구",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "text": {
                    "type": "string",
                    "description": "요약할 텍스트"
                  }
                },
                "required": ["text"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "요약 결과",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "summary": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

 

 

형식으로 구성을 해야한다. 중간에 결국 유형만 변경해주는 프록시만 있으면 된다. 

이미 똑똑하신 분들이 가이드를 만들어 놨다.

https://github.com/open-webui/mcpo?tab=readme-ov-file

 

GitHub - open-webui/mcpo: A simple, secure MCP-to-OpenAPI proxy server

A simple, secure MCP-to-OpenAPI proxy server. Contribute to open-webui/mcpo development by creating an account on GitHub.

github.com

 

어렵지 않다 기존에 MCP를 구성하고 

mcp>=1.6.0
mcpo==0.0.12

 

환경설정을 잡아주고 

나같은 경우는 Git으로 clone 하고 

mcpo --config config.json --port <포트>

 

그리고 순서가 있다 . 

먼저 만들어둔 python mcp_server.py  1번 

mcpo --config config.json --port <포트> 2번 순으로 진행하면 되고 

 

 

config 파일을 올리는거기때문에 MCP 형식에서 좀더 수정해주면 된다. 

 

그리고 openwebui -> 설정 -> Manage Tool Servers -> URL 설정 해주고 API 키도 생성했다면 넣어주면 된다. 

 

 

다음에는 Docker 로 이미지 생성하고 서버 구성을 진행해볼꺼고 

추가로Redis 를 넣어서 메모리 관리가 필요할거같아서 추가할 예정

반응형