Bump graphiti-core to v0.23.1 in mcp_server (#1060)

* Bump graphiti-core to v0.23.1 in mcp_server and consolidate dev dependencies

- Updated graphiti-core from 0.23.0 to 0.23.1 in pyproject.toml and dockerfiles
- Moved all dev dependencies to [dependency-groups].dev (uv's preferred approach)
- Removed redundant [project.optional-dependencies].dev section
- Eliminated duplicate graphiti-core and mcp entries from dev dependencies

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Fix dev dependencies being installed in Docker containers

Added --no-group dev flag to uv sync in Dockerfiles. The --no-dev flag only
excludes [project.optional-dependencies].dev, but doesn't exclude
[dependency-groups].dev which we now use.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Add --no-sync flag to uv run in Dockerfiles

The uv run command was re-syncing dependencies at runtime and installing dev
groups despite uv sync --no-group dev. Using --no-sync tells uv to use the
already-synced dependencies without re-checking.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Make sed pattern version-agnostic in Dockerfiles

Changed hardcoded version pattern from >=0\.23\.1 to >=[0-9.]\+ so the
Dockerfiles don't need to be updated every time graphiti-core version is
bumped in pyproject.toml.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Remove redundant --no-dev flag from uv sync

Since we removed [project.optional-dependencies].dev, the --no-dev flag no
longer has any effect. Only --no-group dev is needed to exclude dev
dependency-groups.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Use more precise semver regex in sed patterns

Changed from [0-9.]\+ to [0-9]\+\.[0-9]\+\.[0-9]\+ to match proper semantic
versions (e.g., 0.23.1) and avoid matching invalid patterns like .... or
1.2.3.4.5.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Fix version inconsistencies and add regex end anchor

- Updated MCP_SERVER_VERSION from 1.0.0rc0/1.0.0 to 1.0.1 to match pyproject.toml
- Added $ end-of-line anchor to sed patterns to prevent matching partial strings

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
Daniel Chalef 2025-11-09 09:47:43 -08:00 committed by GitHub
parent bb9b33ef6b
commit d4a92772ec
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 32 additions and 42 deletions

View file

@ -33,7 +33,7 @@ ENV UV_COMPILE_BYTECODE=1 \
WORKDIR /app/mcp
# Accept graphiti-core version as build argument
ARG GRAPHITI_CORE_VERSION=0.23.0
ARG GRAPHITI_CORE_VERSION=0.23.1
# Copy project files for dependency installation
COPY pyproject.toml uv.lock ./
@ -42,15 +42,15 @@ COPY pyproject.toml uv.lock ./
# and regenerate lock file to match the PyPI version
RUN sed -i '/\[tool\.uv\.sources\]/,/graphiti-core/d' pyproject.toml && \
if [ -n "${GRAPHITI_CORE_VERSION}" ]; then \
sed -i "s/graphiti-core\[falkordb\]>=0\.23\.0/graphiti-core[falkordb]==${GRAPHITI_CORE_VERSION}/" pyproject.toml; \
sed -i "s/graphiti-core\[falkordb\]>=[0-9]\+\.[0-9]\+\.[0-9]\+$/graphiti-core[falkordb]==${GRAPHITI_CORE_VERSION}/" pyproject.toml; \
fi && \
echo "Regenerating lock file for PyPI graphiti-core..." && \
rm -f uv.lock && \
uv lock
# Install Python dependencies
# Install Python dependencies (exclude dev dependency group)
RUN --mount=type=cache,target=/root/.cache/uv \
uv sync --no-dev
uv sync --no-group dev
# Store graphiti-core version
RUN echo "${GRAPHITI_CORE_VERSION}" > /app/mcp/.graphiti-core-version
@ -106,13 +106,13 @@ fi
# Start MCP server in foreground
echo "Starting MCP server..."
cd /app/mcp
exec /root/.local/bin/uv run main.py
exec /root/.local/bin/uv run --no-sync main.py
EOF
RUN chmod +x /start-services.sh
# Add Docker labels with version information
ARG MCP_SERVER_VERSION=1.0.0rc0
ARG MCP_SERVER_VERSION=1.0.1
ARG BUILD_DATE
ARG VCS_REF
LABEL org.opencontainers.image.title="FalkorDB + Graphiti MCP Server" \

View file

@ -28,7 +28,7 @@ ENV UV_COMPILE_BYTECODE=1 \
WORKDIR /app/mcp
# Accept graphiti-core version as build argument
ARG GRAPHITI_CORE_VERSION=0.23.0
ARG GRAPHITI_CORE_VERSION=0.23.1
# Copy project files for dependency installation
COPY pyproject.toml uv.lock ./
@ -37,14 +37,14 @@ COPY pyproject.toml uv.lock ./
# Install with BOTH neo4j and falkordb extras for maximum flexibility
# and regenerate lock file to match the PyPI version
RUN sed -i '/\[tool\.uv\.sources\]/,/graphiti-core/d' pyproject.toml && \
sed -i "s/graphiti-core\[falkordb\]>=0\.23\.0/graphiti-core[neo4j,falkordb]==${GRAPHITI_CORE_VERSION}/" pyproject.toml && \
sed -i "s/graphiti-core\[falkordb\]>=[0-9]\+\.[0-9]\+\.[0-9]\+$/graphiti-core[neo4j,falkordb]==${GRAPHITI_CORE_VERSION}/" pyproject.toml && \
echo "Regenerating lock file for PyPI graphiti-core..." && \
rm -f uv.lock && \
uv lock
# Install Python dependencies
# Install Python dependencies (exclude dev dependency group)
RUN --mount=type=cache,target=/root/.cache/uv \
uv sync --no-dev
uv sync --no-group dev
# Store graphiti-core version
RUN echo "${GRAPHITI_CORE_VERSION}" > /app/mcp/.graphiti-core-version
@ -58,7 +58,7 @@ COPY config/ ./config/
RUN mkdir -p /var/log/graphiti
# Add Docker labels with version information
ARG MCP_SERVER_VERSION=1.0.0
ARG MCP_SERVER_VERSION=1.0.1
ARG BUILD_DATE
ARG VCS_REF
LABEL org.opencontainers.image.title="Graphiti MCP Server (Standalone)" \
@ -78,4 +78,4 @@ HEALTHCHECK --interval=10s --timeout=5s --start-period=15s --retries=3 \
CMD curl -f http://localhost:8000/health || exit 1
# Run the MCP server
CMD ["uv", "run", "main.py"]
CMD ["uv", "run", "--no-sync", "main.py"]

View file

@ -7,7 +7,7 @@ requires-python = ">=3.10,<4"
dependencies = [
"mcp>=1.9.4",
"openai>=1.91.0",
"graphiti-core[falkordb]>=0.23.0",
"graphiti-core[falkordb]>=0.23.1",
"pydantic-settings>=2.0.0",
"pyyaml>=6.0",
"typing-extensions>=4.0.0",
@ -24,15 +24,6 @@ providers = [
"voyageai>=0.2.3",
"sentence-transformers>=2.0.0",
]
dev = [
"graphiti-core>=0.23.0",
"httpx>=0.28.1",
"mcp>=1.9.4",
"pyright>=1.1.404",
"pytest>=8.0.0",
"pytest-asyncio>=0.21.0",
"ruff>=0.7.1",
]
[tool.pyright]
include = ["src", "tests"]
@ -74,7 +65,12 @@ graphiti-core = { path = "../", editable = true }
[dependency-groups]
dev = [
"faker>=37.12.0",
"httpx>=0.28.1",
"psutil>=7.1.2",
"pyright>=1.1.404",
"pytest>=8.0.0",
"pytest-asyncio>=0.21.0",
"pytest-timeout>=2.4.0",
"pytest-xdist>=3.8.0",
"ruff>=0.7.1",
]

32
mcp_server/uv.lock generated
View file

@ -648,7 +648,7 @@ wheels = [
[[package]]
name = "graphiti-core"
version = "0.22.1rc2"
version = "0.23.1"
source = { editable = "../" }
dependencies = [
{ name = "diskcache" },
@ -1074,7 +1074,7 @@ wheels = [
[[package]]
name = "mcp-server"
version = "1.0.0"
version = "1.0.1"
source = { virtual = "." }
dependencies = [
{ name = "graphiti-core", extra = ["falkordb"] },
@ -1089,15 +1089,6 @@ dependencies = [
azure = [
{ name = "azure-identity" },
]
dev = [
{ name = "graphiti-core" },
{ name = "httpx" },
{ name = "mcp" },
{ name = "pyright" },
{ name = "pytest" },
{ name = "pytest-asyncio" },
{ name = "ruff" },
]
providers = [
{ name = "anthropic" },
{ name = "google-genai" },
@ -1109,9 +1100,14 @@ providers = [
[package.dev-dependencies]
dev = [
{ name = "faker" },
{ name = "httpx" },
{ name = "psutil" },
{ name = "pyright" },
{ name = "pytest" },
{ name = "pytest-asyncio" },
{ name = "pytest-timeout" },
{ name = "pytest-xdist" },
{ name = "ruff" },
]
[package.metadata]
@ -1119,31 +1115,29 @@ requires-dist = [
{ name = "anthropic", marker = "extra == 'providers'", specifier = ">=0.49.0" },
{ name = "azure-identity", marker = "extra == 'azure'", specifier = ">=1.21.0" },
{ name = "google-genai", marker = "extra == 'providers'", specifier = ">=1.8.0" },
{ name = "graphiti-core", marker = "extra == 'dev'", editable = "../" },
{ name = "graphiti-core", extras = ["falkordb"], editable = "../" },
{ name = "groq", marker = "extra == 'providers'", specifier = ">=0.2.0" },
{ name = "httpx", marker = "extra == 'dev'", specifier = ">=0.28.1" },
{ name = "mcp", specifier = ">=1.9.4" },
{ name = "mcp", marker = "extra == 'dev'", specifier = ">=1.9.4" },
{ name = "openai", specifier = ">=1.91.0" },
{ name = "pydantic-settings", specifier = ">=2.0.0" },
{ name = "pyright", marker = "extra == 'dev'", specifier = ">=1.1.404" },
{ name = "pytest", marker = "extra == 'dev'", specifier = ">=8.0.0" },
{ name = "pytest-asyncio", marker = "extra == 'dev'", specifier = ">=0.21.0" },
{ name = "pyyaml", specifier = ">=6.0" },
{ name = "ruff", marker = "extra == 'dev'", specifier = ">=0.7.1" },
{ name = "sentence-transformers", marker = "extra == 'providers'", specifier = ">=2.0.0" },
{ name = "typing-extensions", specifier = ">=4.0.0" },
{ name = "voyageai", marker = "extra == 'providers'", specifier = ">=0.2.3" },
]
provides-extras = ["azure", "providers", "dev"]
provides-extras = ["azure", "providers"]
[package.metadata.requires-dev]
dev = [
{ name = "faker", specifier = ">=37.12.0" },
{ name = "httpx", specifier = ">=0.28.1" },
{ name = "psutil", specifier = ">=7.1.2" },
{ name = "pyright", specifier = ">=1.1.404" },
{ name = "pytest", specifier = ">=8.0.0" },
{ name = "pytest-asyncio", specifier = ">=0.21.0" },
{ name = "pytest-timeout", specifier = ">=2.4.0" },
{ name = "pytest-xdist", specifier = ">=3.8.0" },
{ name = "ruff", specifier = ">=0.7.1" },
]
[[package]]

2
uv.lock generated
View file

@ -783,7 +783,7 @@ wheels = [
[[package]]
name = "graphiti-core"
version = "0.22.1rc2"
version = "0.23.1"
source = { editable = "." }
dependencies = [
{ name = "diskcache" },