mirror of
https://github.com/safishamsi/graphify.git
synced 2026-08-28 17:26:48 +00:00
mcp 2.0.0 dropped mcp.types.AnyUrl and the Server decorator-registration API graphify/serve.py relies on, so an unpinned resolve broke graphify-mcp on every fresh graphifyy[mcp]/[all] install. Cap mcp>=1,<2 (resolves 1.29.0) and starlette>=1.3.1,<2 in both extras; re-lock. Bump to 0.9.30. Porting to the mcp 2.x API is a tracked follow-up. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
0b2bd938c4
commit
6d81a8290f
@@ -2,6 +2,10 @@
|
||||
|
||||
Full release notes with details on each version: [GitHub Releases](https://github.com/safishamsi/graphify/releases)
|
||||
|
||||
## 0.9.30 (unreleased)
|
||||
|
||||
- Fix: pin `mcp` below 2.0 so a fresh `graphifyy[mcp]` / `graphifyy[all]` install works again (#2277, #2279, #2291). The `mcp` 2.0.0 major dropped the `mcp.types.AnyUrl` re-export and the `Server` decorator-registration API that `graphify/serve.py` uses, so an unpinned resolve broke `graphify-mcp` on every new install with an `ImportError`. The `mcp` and `all` extras now require `mcp>=1,<2` (resolving to 1.29.0) and `starlette>=1.3.1,<2`. Adapting to the mcp 2.x API is tracked as a follow-up.
|
||||
|
||||
## 0.9.29 (2026-07-28)
|
||||
|
||||
- Fix: absolute-path / machine-slug node ids no longer leak into edge endpoints (#2231, #2243). Module-top-level `indirect_call` sources, bash `source`/script-invocation targets, and other producers that minted an id from an absolute path are now canonicalized to the root-relative node id by a general backstop, so `graph.json` link endpoints are portable across machines and clones.
|
||||
|
||||
+7
-3
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
||||
|
||||
[project]
|
||||
name = "graphifyy"
|
||||
version = "0.9.29"
|
||||
version = "0.9.30"
|
||||
description = "AI coding assistant skill (Claude Code, CodeBuddy, Codex, OpenCode, Kilo Code, Cursor, Gemini CLI, Aider, OpenClaw, Factory Droid, Trae, Hermes, Kiro, Pi, Devin CLI, Google Antigravity) - turn any folder of code, docs, papers, images, or videos into a queryable knowledge graph"
|
||||
readme = "README.md"
|
||||
license = "Apache-2.0"
|
||||
@@ -52,7 +52,11 @@ Issues = "https://github.com/Graphify-Labs/graphify/issues"
|
||||
# starlette is pulled in transitively by mcp, but graphify/serve.py imports it
|
||||
# directly for the HTTP transport, so declare it here and floor it above the
|
||||
# CVE-2026-48818 / CVE-2026-54283 fixes (both resolved by 1.3.1) (#1391, #1396).
|
||||
mcp = ["mcp", "starlette>=1.3.1"]
|
||||
# mcp is capped below 2.0: the 2.0.0 major dropped the mcp.types.AnyUrl
|
||||
# re-export and the Server decorator-registration API graphify/serve.py uses,
|
||||
# so an unpinned resolve broke every fresh graphifyy[mcp] install (#2277/#2279/
|
||||
# #2291). starlette is capped below its next major for the same reason.
|
||||
mcp = ["mcp>=1,<2", "starlette>=1.3.1,<2"]
|
||||
neo4j = ["neo4j"]
|
||||
falkordb = ["falkordb"]
|
||||
pdf = ["pypdf>=6.12.0", "markdownify"]
|
||||
@@ -81,7 +85,7 @@ pascal = ["tree-sitter-pascal"]
|
||||
# avoids breaking the default `uv tool install graphifyy` for everyone (#1104).
|
||||
dm = ["tree-sitter-dm"]
|
||||
terraform = ["tree-sitter-hcl"]
|
||||
all = ["mcp", "starlette>=1.3.1", "neo4j", "falkordb", "pypdf>=6.12.0", "markdownify", "watchdog", "graspologic; python_version < '3.13'", "python-docx", "openpyxl", "faster-whisper; python_version >= '3.11'", "yt-dlp>=2026.6.9", "matplotlib", "numpy>=2.0; python_version >= '3.13'", "openai", "tiktoken", "boto3", "anthropic", "tree-sitter-sql", "jieba", "tree-sitter-dm", "tree-sitter-hcl", "tree-sitter-pascal"]
|
||||
all = ["mcp>=1,<2", "starlette>=1.3.1,<2", "neo4j", "falkordb", "pypdf>=6.12.0", "markdownify", "watchdog", "graspologic; python_version < '3.13'", "python-docx", "openpyxl", "faster-whisper; python_version >= '3.11'", "yt-dlp>=2026.6.9", "matplotlib", "numpy>=2.0; python_version >= '3.13'", "openai", "tiktoken", "boto3", "anthropic", "tree-sitter-sql", "jieba", "tree-sitter-dm", "tree-sitter-hcl", "tree-sitter-pascal"]
|
||||
|
||||
[project.scripts]
|
||||
graphify = "graphify.__main__:main"
|
||||
|
||||
@@ -1090,7 +1090,7 @@ wheels = [
|
||||
|
||||
[[package]]
|
||||
name = "graphifyy"
|
||||
version = "0.9.29"
|
||||
version = "0.9.30"
|
||||
source = { editable = "." }
|
||||
dependencies = [
|
||||
{ name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
|
||||
@@ -1264,8 +1264,8 @@ requires-dist = [
|
||||
{ name = "markdownify", marker = "extra == 'pdf'" },
|
||||
{ name = "matplotlib", marker = "extra == 'all'" },
|
||||
{ name = "matplotlib", marker = "extra == 'svg'" },
|
||||
{ name = "mcp", marker = "extra == 'all'" },
|
||||
{ name = "mcp", marker = "extra == 'mcp'" },
|
||||
{ name = "mcp", marker = "extra == 'all'", specifier = ">=1,<2" },
|
||||
{ name = "mcp", marker = "extra == 'mcp'", specifier = ">=1,<2" },
|
||||
{ name = "neo4j", marker = "extra == 'all'" },
|
||||
{ name = "neo4j", marker = "extra == 'neo4j'" },
|
||||
{ name = "networkx", specifier = ">=3.4" },
|
||||
@@ -1286,8 +1286,8 @@ requires-dist = [
|
||||
{ name = "python-docx", marker = "extra == 'all'" },
|
||||
{ name = "python-docx", marker = "extra == 'office'" },
|
||||
{ name = "rapidfuzz", specifier = ">=3.0" },
|
||||
{ name = "starlette", marker = "extra == 'all'", specifier = ">=1.3.1" },
|
||||
{ name = "starlette", marker = "extra == 'mcp'", specifier = ">=1.3.1" },
|
||||
{ name = "starlette", marker = "extra == 'all'", specifier = ">=1.3.1,<2" },
|
||||
{ name = "starlette", marker = "extra == 'mcp'", specifier = ">=1.3.1,<2" },
|
||||
{ name = "tiktoken", marker = "extra == 'all'" },
|
||||
{ name = "tiktoken", marker = "extra == 'gemini'" },
|
||||
{ name = "tiktoken", marker = "extra == 'kimi'" },
|
||||
@@ -2110,7 +2110,7 @@ wheels = [
|
||||
|
||||
[[package]]
|
||||
name = "mcp"
|
||||
version = "1.27.1"
|
||||
version = "1.29.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "anyio" },
|
||||
@@ -2128,9 +2128,9 @@ dependencies = [
|
||||
{ name = "typing-inspection" },
|
||||
{ name = "uvicorn", marker = "sys_platform != 'emscripten'" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/38/83/d1efe7c2980d8a3afa476f4e3d42d53dd54c0ab94c27bee5d755b45c8b73/mcp-1.27.1.tar.gz", hash = "sha256:0f47e1820f8f8f941466b39749eb1d1839a04caddca2bc60e9d46e8a99914924", size = 608458, upload-time = "2026-05-08T16:50:12.601Z" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/30/d3/f9acc21dfc886e4f78e2add1a47db46ce16884346afde53f8a064c02c891/mcp-1.29.0.tar.gz", hash = "sha256:52d01f334de1868cc3bb2d6604931126a67631f99a6c5d3b82ba47290315ec36", size = 643148, upload-time = "2026-07-28T13:41:41.939Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/fd/73/42d9596facebdb533b7f0b86c1b0364ef350d1f8ba78b1052e8a58b48b65/mcp-1.27.1-py3-none-any.whl", hash = "sha256:1af3c4203b329430fde7a87b4fcb6392a041f5cb851fd68fc674016ab4e7c06f", size = 216260, upload-time = "2026-05-08T16:50:10.547Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/01/c8/248b201f6d753d69fd5d6506011abbb35a946d9142b2ae311a948fd0be3d/mcp-1.29.0-py3-none-any.whl", hash = "sha256:f5a075bb611f23d6f4d080c6a1699fa62772eebc562ba9e66b306ddde1c755f7", size = 223436, upload-time = "2026-07-28T13:41:40.337Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
||||
Reference in New Issue
Block a user