xxx
Browse files- Dockerfile +8 -10
- README.md +3 -2
- app.py +9 -3
- pyproject.toml +9 -17
Dockerfile
CHANGED
@@ -1,41 +1,39 @@
|
|
1 |
FROM python:3.10-slim
|
2 |
|
3 |
-
# ββ Base OS packages
|
4 |
RUN apt-get update && apt-get install -y --no-install-recommends \
|
5 |
gcc python3-dev openssl curl ca-certificates gnupg build-essential \
|
6 |
&& rm -rf /var/lib/apt/lists/*
|
7 |
|
8 |
-
# ββ MariaDB client libs
|
9 |
RUN curl -LsSO https://r.mariadb.com/downloads/mariadb_repo_setup && \
|
10 |
chmod +x mariadb_repo_setup && ./mariadb_repo_setup --mariadb-server-version="mariadb-11.7" && \
|
11 |
apt-get update && apt-get install -y --no-install-recommends \
|
12 |
libmariadb3 libmariadb-dev && \
|
13 |
apt-get clean && rm -rf /var/lib/apt/lists/*
|
14 |
|
15 |
-
# ββ Python tooling
|
16 |
-
RUN pip install --no-cache-dir uv==0.1.37
|
17 |
|
18 |
WORKDIR /app
|
19 |
COPY . /app
|
20 |
|
21 |
-
# Install
|
22 |
-
RUN uv pip install -e .
|
|
|
23 |
|
24 |
-
# ββ
|
25 |
RUN useradd -m -u 1000 user
|
26 |
USER user
|
27 |
|
28 |
-
# ββ Environment ββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
29 |
ENV HOME=/home/user \
|
30 |
PATH=/home/user/.local/bin:$PATH \
|
31 |
UV_NO_CACHE=1 \
|
32 |
UV_CACHE_DIR=/dev/null \
|
33 |
PORT=7860
|
34 |
|
35 |
-
# ββ Expose and health-check ββββββββββββββββββββββββββββββββββββββββ
|
36 |
EXPOSE 7860
|
37 |
HEALTHCHECK --interval=30s --timeout=5s --start-period=15s \
|
38 |
CMD curl -f http://localhost:7860/ || exit 1
|
39 |
|
40 |
-
# ββ Launch wrapper app (app.py) instead of CLI βββββββββββββββββββββ
|
41 |
CMD uvicorn app:app --host 0.0.0.0 --port $PORT --workers 1
|
|
|
1 |
FROM python:3.10-slim
|
2 |
|
3 |
+
# ββ Base OS packages βββββββββββββββββββββββββββββββββββββββββββββββ
|
4 |
RUN apt-get update && apt-get install -y --no-install-recommends \
|
5 |
gcc python3-dev openssl curl ca-certificates gnupg build-essential \
|
6 |
&& rm -rf /var/lib/apt/lists/*
|
7 |
|
8 |
+
# ββ MariaDB client libs ββββββββββββββββββββββββββββββββββββββββββββ
|
9 |
RUN curl -LsSO https://r.mariadb.com/downloads/mariadb_repo_setup && \
|
10 |
chmod +x mariadb_repo_setup && ./mariadb_repo_setup --mariadb-server-version="mariadb-11.7" && \
|
11 |
apt-get update && apt-get install -y --no-install-recommends \
|
12 |
libmariadb3 libmariadb-dev && \
|
13 |
apt-get clean && rm -rf /var/lib/apt/lists/*
|
14 |
|
15 |
+
# ββ Python tooling ββββββββββββββββββββββββββββββββββββββββββββββββ
|
16 |
+
RUN pip install --no-cache-dir uv==0.1.37
|
17 |
|
18 |
WORKDIR /app
|
19 |
COPY . /app
|
20 |
|
21 |
+
# Install project (editable) + FastAPI stack in one layer
|
22 |
+
RUN uv pip install -e . --system && \
|
23 |
+
uv pip install fastapi uvicorn[standard] --system
|
24 |
|
25 |
+
# ββ Unprivileged user βββββββββββββββββββββββββββββββββββββββββββββ
|
26 |
RUN useradd -m -u 1000 user
|
27 |
USER user
|
28 |
|
|
|
29 |
ENV HOME=/home/user \
|
30 |
PATH=/home/user/.local/bin:$PATH \
|
31 |
UV_NO_CACHE=1 \
|
32 |
UV_CACHE_DIR=/dev/null \
|
33 |
PORT=7860
|
34 |
|
|
|
35 |
EXPOSE 7860
|
36 |
HEALTHCHECK --interval=30s --timeout=5s --start-period=15s \
|
37 |
CMD curl -f http://localhost:7860/ || exit 1
|
38 |
|
|
|
39 |
CMD uvicorn app:app --host 0.0.0.0 --port $PORT --workers 1
|
README.md
CHANGED
@@ -2,8 +2,9 @@
|
|
2 |
title: Mariadb Vector
|
3 |
emoji: "π³"
|
4 |
colorFrom: indigo
|
5 |
-
colorTo: blue
|
6 |
sdk: docker
|
7 |
app_port: 7860
|
8 |
-
healthcheck: /
|
|
|
9 |
---
|
|
|
2 |
title: Mariadb Vector
|
3 |
emoji: "π³"
|
4 |
colorFrom: indigo
|
5 |
+
colorTo: blue
|
6 |
sdk: docker
|
7 |
app_port: 7860
|
8 |
+
healthcheck: / # probes the root route that returns 200
|
9 |
+
pinned: false
|
10 |
---
|
app.py
CHANGED
@@ -1,7 +1,13 @@
|
|
1 |
from fastapi import FastAPI
|
|
|
2 |
|
3 |
app = FastAPI()
|
4 |
|
5 |
-
|
6 |
-
|
7 |
-
|
|
|
|
|
|
|
|
|
|
|
|
1 |
from fastapi import FastAPI
|
2 |
+
from fastmcp import create_server
|
3 |
|
4 |
app = FastAPI()
|
5 |
|
6 |
+
# Mount the existing FastMCP server so `/sse/` streams as before
|
7 |
+
vector_app = create_server(transport="sse")
|
8 |
+
app.mount("/sse", vector_app)
|
9 |
+
|
10 |
+
# Simple root route β used by generic health-checkers and humans
|
11 |
+
@app.get("/", tags=["health"])
|
12 |
+
async def root():
|
13 |
+
return {"status": "ok"}
|
pyproject.toml
CHANGED
@@ -4,22 +4,14 @@ version = "0.1.0"
|
|
4 |
description = "MCP server for MariaDB vector"
|
5 |
readme = "README.md"
|
6 |
requires-python = ">=3.10"
|
|
|
7 |
dependencies = [
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
|
|
15 |
]
|
16 |
-
|
17 |
-
[project.scripts]
|
18 |
-
mcp-server-mariadb-vector = "mcp_server_mariadb_vector.server:main"
|
19 |
-
|
20 |
-
[build-system]
|
21 |
-
requires = ["hatchling"]
|
22 |
-
build-backend = "hatchling.build"
|
23 |
-
|
24 |
-
[tool.pytest.ini_options]
|
25 |
-
asyncio_mode = "auto"
|
|
|
4 |
description = "MCP server for MariaDB vector"
|
5 |
readme = "README.md"
|
6 |
requires-python = ">=3.10"
|
7 |
+
|
8 |
dependencies = [
|
9 |
+
"mcp[cli]>=1.6.0",
|
10 |
+
"mariadb==1.1.12",
|
11 |
+
"openai",
|
12 |
+
"pydantic",
|
13 |
+
"fastmcp>=2.2.6",
|
14 |
+
# Added web stack so the import error never reappears
|
15 |
+
"fastapi>=0.110",
|
16 |
+
"uvicorn[standard]>=0.29"
|
17 |
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|