add docker

This commit is contained in:
Chen, Li
2026-10-09 11:03:26 +08:00
parent a359be1b2f
commit 2eea0ca746
5 changed files with 68 additions and 10 deletions
+7
View File
@@ -0,0 +1,7 @@
.env
.git
.pytest_cache
.venv
__pycache__
*.py[cod]
tests
+24
View File
@@ -0,0 +1,24 @@
FROM python:3.12-slim
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
UV_COMPILE_BYTECODE=1 \
UV_LINK_MODE=copy
WORKDIR /app
COPY --from=ghcr.io/astral-sh/uv:0.9.17 /uv /uvx /bin/
COPY pyproject.toml uv.lock ./
RUN uv sync --frozen --no-dev --no-install-project
COPY src ./src
RUN uv sync --frozen --no-dev
RUN useradd -m -s /bin/bash appuser
USER appuser
ENV PATH="/app/.venv/bin:$PATH"
EXPOSE 8000
CMD ["mcp"]
+16
View File
@@ -118,6 +118,22 @@ uv run mcp
MCP 端点为 `http://127.0.0.1:8000/mcp`。
### Docker Compose
先按上文创建并填写 `.env`,然后启动服务:
```powershell
docker compose up --build -d
```
Compose 会强制使用 HTTP 传输,并将 MCP 端点暴露为 `http://127.0.0.1:8000/mcp`。
停止服务:
```powershell
docker compose down
```
## MCP 客户端配置
使用 `stdio` 的客户端可参考以下配置。请将项目路径替换为本机的绝对路径:
+11
View File
@@ -0,0 +1,11 @@
services:
mini-db-mcp:
build: .
env_file:
- .env
environment:
MCP_TRANSPORT: http
MCP_HOST: 0.0.0.0
ports:
- "${MCP_PORT:-8000}:8000"
restart: unless-stopped
+10 -10
View File
@@ -85,6 +85,16 @@ class DomainBaseModel(BaseModel):
)
class ChildToolDefinition(DomainBaseModel):
"""Exact child tool of a domain."""
tool_name: Identity
tool_title: NonEmptyText
tool_description: NonEmptyText
input_schema: JsonObject
output_schema: JsonObject
class DomainDefinition(DomainBaseModel):
"""Top-level domain definition."""
@@ -109,16 +119,6 @@ class DomainDefinition(DomainBaseModel):
return self
class ChildToolDefinition(DomainBaseModel):
"""Exact child tool of a domain."""
tool_name: Identity
tool_title: NonEmptyText
tool_description: NonEmptyText
input_schema: JsonObject
output_schema: JsonObject
class DomainToolRequest(DomainBaseModel):
"""Common request shape for discovery and exact child execution."""