Kaballas commited on
Commit
22f28c2
Β·
1 Parent(s): d104297
Files changed (4) hide show
  1. Dockerfile +8 -10
  2. README.md +3 -2
  3. app.py +9 -3
  4. 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 # pin to avoid future breakage
17
 
18
  WORKDIR /app
19
  COPY . /app
20
 
21
- # Install your project + FastMCP server dependencies
22
- RUN uv pip install -e .[server] --system
 
23
 
24
- # ── Create unprivileged runtime user ───────────────────────────────
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 # now valid
6
  sdk: docker
7
  app_port: 7860
8
- healthcheck: /sse/
 
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
- @app.get("/")
6
- def greet_json():
7
- return {"Hello": "World!"}
 
 
 
 
 
 
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
- "mcp[cli]>=1.6.0",
9
- "mariadb==1.1.12",
10
- "openai",
11
- "pydantic",
12
- "fastmcp>=2.2.6",
13
- "pytest>=8.3.5",
14
- "pytest-asyncio>=0.26.0",
 
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
  ]