add docker
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
.env
|
||||
.git
|
||||
.pytest_cache
|
||||
.venv
|
||||
__pycache__
|
||||
*.py[cod]
|
||||
tests
|
||||
+24
@@ -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"]
|
||||
@@ -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` 的客户端可参考以下配置。请将项目路径替换为本机的绝对路径:
|
||||
|
||||
@@ -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
|
||||
@@ -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."""
|
||||
|
||||
|
||||
Reference in New Issue
Block a user