MLC Bakery项目旨在提供一个标准化的后端服务,用于追踪和管理机器学习训练流程中的关键资产(如数据集、模型)及其之间的关系(谱系/Provenance)。
主要功能点
- 资源管理: 托管和组织数据集、训练模型、活动、代理等ML资产。
- 谱系追踪: 记录和查询资产之间的输入/输出关系,构建可追溯的ML流程图。
- API服务: 提供RESTful API接口用于资产的创建、读取、更新、删除和查询。
- MCP服务: 通过Model Context Protocol (MCP) 暴露部分核心功能,允许兼容的LLM客户端以结构化方式访问ML资产信息、调用特定工具(如数据集搜索、预览URL获取)、并利用Prompt模板进行交互。
安装步骤
MLC Bakery基于Python和PostgreSQL构建,推荐使用 'uv' 和 Docker Compose 进行开发和部署。
- 克隆仓库:
git clone https://github.com/jettyio/mlcbakery.git cd mlcbakery - 安装依赖: 'uv' 会根据 'pyproject.toml' 自动创建虚拟环境。
uv pip install -e .[dev,webclient] - 配置数据库: 创建 '.env' 文件并设置 'DATABASE_URL' 连接到你的PostgreSQL数据库。
(确保你的PostgreSQL服务器正在运行,数据库已创建且用户具有权限)cp .env.example .env # 编辑 .env 文件,设置 DATABASE_URL - 运行数据库迁移: 应用最新的数据库架构。
uv run alembic upgrade heads - 启动REST API服务: 运行主要的FastAPI应用。
API 文档将在 'http://localhost:8000/docs' 提供。uv run uvicorn mlcbakery.main:app --reload --host 0.0.0.0 --port 8000 - 启动MCP服务器 (独立组件,通过SSE通信):
uv run uvicorn mcp_server.main:starlette_app --reload --host 0.0.0.0 --port 8080 - 使用Docker Compose启动所有服务 (推荐生产或集成):
需要先创建 Docker network 和配置 'ADMIN_AUTH_TOKEN'。
服务将通过Caddy反向代理暴露。docker network create caddy-network # 如果不存在 # 编辑 .env 文件,设置 ADMIN_AUTH_TOKEN docker-compose up --build -d docker-compose exec api alembic upgrade head # 容器启动后运行数据库迁移
服务器配置 (for MCP Client)
MCP客户端连接此MCP服务器时,需要以下配置信息。这些信息通常以JSON格式提供给MCP客户端应用程序。
{ "server name": "MLC-Bakery-MPC", "transport": { "type": "sse", "url": "http://localhost:8080/sse" // 如果通过Docker Compose并在Caddy代理后,URL可能需要调整, // 例如: "http://mcp.localhost/sse" (取决于Caddy配置) }, "capabilities": { "resources": ["config://app", "bake://collections/{pattern}"], "tools": [ "datasets/", "datasets-preview-url/{collection}/{dataset}", "search-datasets/{query}", "help", "dataset/{collection}/{dataset}/mlcroissant" ], "prompts": ["debug_error"] } // 注意:command 和 args 字段主要用于客户端需要启动服务器进程的情况 (如 StdIO), // 对于这种通过Uvicorn/Starlette运行的持久化SSE服务器,客户端只需要transport和capabilities信息。 }
参数注释:
- 'server name': MCP服务器在协议握手阶段报告的名称,用于客户端识别。
- 'transport': 定义客户端与MCP服务器通信的传输协议。
- 'type': 协议类型,本服务器实现了 'sse' (Server-Sent Events)。
- 'url': 服务器监听的端点URL。
- 'capabilities': MCP服务器向客户端声明其提供的功能。
- 'resources': 客户端可以通过 'getResource' 请求获取的上下文资源标识符列表。
- 'tools': 客户端可以通过 'callTool' 请求调用的外部功能标识符列表。
- 'prompts': 客户端可以获取或运行的Prompt模板名称列表。
基本使用方法
用户主要通过其RESTful API(默认端口 8000)进行ML资产的创建、查询和管理。例如,可以使用HTTP POST请求创建新的数据集或模型,使用GET请求获取资产信息。
LLM客户端可以通过配置上述JSON信息,连接到MCP服务器(默认端口 8080)。连接成功后,LLM可以利用MCP协议与服务器交互:
- 通过 'getResource' 请求获取如 'config://app' 或 'bake://collections/{pattern}' 等资源,获取配置信息或搜索集合列表。
- 通过 'callTool' 请求调用如 'search-datasets/{query}' 工具进行数据集搜索,或调用 'datasets-preview-url/{collection}/{dataset}' 获取数据集预览的下载链接。
- 通过 'getPrompt' 请求获取如 'debug_error' 等Prompt模板内容,用于指导LLM的交互行为。
该架构将核心ML资产管理功能通过REST API暴露,并在此之上构建MCP层,为LLM客户端提供更结构化和协议化的访问方式。
信息
分类
AI与计算