OpenWebUi-MCPO-MCP 도구 연동
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를 구성하고
환경설정을 잡아주고
나같은 경우는 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 를 넣어서 메모리 관리가 필요할거같아서 추가할 예정