From f4856b441393d25f28ffc934aa7267847666ed0f Mon Sep 17 00:00:00 2001 From: Igor Ilic <30923996+dexters1@users.noreply.github.com> Date: Fri, 4 Apr 2025 19:11:07 +0200 Subject: [PATCH] Mcp add search (#702) ## Description - Fix Ollama endpoint issue - Fix COMPLETION and GRAPH COMPLETION MCP use ## DCO Affirmation I affirm that all code in every commit of this pull request conforms to the terms of the Topoteretes Developer Certificate of Origin. --- cognee-mcp/src/server.py | 2 + cognee-mcp/uv.lock | 52 +++++++++---------- .../vector/embeddings/get_embedding_engine.py | 1 + docker-compose.yml | 3 ++ 4 files changed, 32 insertions(+), 26 deletions(-) diff --git a/cognee-mcp/src/server.py b/cognee-mcp/src/server.py index 491bd699d..1d1b90143 100755 --- a/cognee-mcp/src/server.py +++ b/cognee-mcp/src/server.py @@ -194,6 +194,8 @@ async def search(search_query: str, search_type: str) -> str: if search_type.upper() == "CODE": return json.dumps(search_results, cls=JSONEncoder) + elif search_type.upper() == "GRAPH_COMPLETION" or search_type.upper() == "COMPLETION": + return search_results[0] else: results = retrieved_edges_to_string(search_results) return results diff --git a/cognee-mcp/uv.lock b/cognee-mcp/uv.lock index 972fcc29e..baaae6cdd 100644 --- a/cognee-mcp/uv.lock +++ b/cognee-mcp/uv.lock @@ -508,7 +508,7 @@ wheels = [ [[package]] name = "cognee" -version = "0.1.35" +version = "0.1.36" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "aiofiles" }, @@ -545,9 +545,9 @@ dependencies = [ { name = "tiktoken" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ab/f7/faf063d8b81c665dcd5091155e376e253bc931d6f9b30a45960d750c9bcb/cognee-0.1.35.tar.gz", hash = "sha256:ea151ec812bf00cc002b044281e1b6586f403c19567b64bb746cb8f617c9629c", size = 390184 } +sdist = { url = "https://files.pythonhosted.org/packages/a3/cf/3f4d858e9e42dd01af0307f31b6ac4bd9ed4f7f27a7d619e0123527f9b04/cognee-0.1.36.tar.gz", hash = "sha256:67ab2d69a604bf46e3c0241d4b8a5ff9e2e6df280e5a120e74f665e2d3e4eec5", size = 390542 } wheels = [ - { url = "https://files.pythonhosted.org/packages/7c/72/af5b1202dcb92552cd472896d5b9e3daa0224cd532e78f49139582170d3d/cognee-0.1.35-py3-none-any.whl", hash = "sha256:fb5bad930ecba6d8c5a5791a1e8d9592ffabcf8ac55868d54c30c617215c66d1", size = 624619 }, + { url = "https://files.pythonhosted.org/packages/5d/93/c955838cd5c0094398230d43ffa0d10dc59ae4930477d6941e5dc4df4295/cognee-0.1.36-py3-none-any.whl", hash = "sha256:e5de99e7019e13361a1ba0b693bbc46fed4acda9e6d3ceec82a85cf9fa1f9560", size = 625054 }, ] [package.optional-dependencies] @@ -568,7 +568,7 @@ postgres = [ [[package]] name = "cognee-mcp" -version = "0.2.1" +version = "0.2.2" source = { editable = "." } dependencies = [ { name = "cognee", extra = ["codegraph", "huggingface", "postgres"] }, @@ -583,7 +583,7 @@ dev = [ [package.metadata] requires-dist = [ - { name = "cognee", extras = ["postgres", "codegraph", "gemini", "huggingface"] }, + { name = "cognee", extras = ["postgres", "codegraph", "gemini", "huggingface"], specifier = "==0.1.36" }, { name = "mcp", specifier = "==1.5.0" }, { name = "uv", specifier = ">=0.6.3" }, ] @@ -605,7 +605,7 @@ name = "coloredlogs" version = "15.0.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "humanfriendly" }, + { name = "humanfriendly", marker = "python_full_version < '3.13'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/cc/c7/eed8f27100517e8c0e6b923d5f0845d0cb99763da6fdee00478f91db7325/coloredlogs-15.0.1.tar.gz", hash = "sha256:7c991aa71a4577af2f82600d8f8f3a89f936baeaf9b50a9c197da014e5bf16b0", size = 278520 } wheels = [ @@ -984,16 +984,16 @@ name = "fastembed" version = "0.6.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "huggingface-hub" }, - { name = "loguru" }, - { name = "mmh3" }, - { name = "numpy" }, - { name = "onnxruntime" }, - { name = "pillow" }, - { name = "py-rust-stemmers" }, - { name = "requests" }, - { name = "tokenizers" }, - { name = "tqdm" }, + { name = "huggingface-hub", marker = "python_full_version < '3.13'" }, + { name = "loguru", marker = "python_full_version < '3.13'" }, + { name = "mmh3", marker = "python_full_version < '3.13'" }, + { name = "numpy", marker = "python_full_version < '3.13'" }, + { name = "onnxruntime", marker = "python_full_version < '3.13'" }, + { name = "pillow", marker = "python_full_version < '3.13'" }, + { name = "py-rust-stemmers", marker = "python_full_version < '3.13'" }, + { name = "requests", marker = "python_full_version < '3.13'" }, + { name = "tokenizers", marker = "python_full_version < '3.13'" }, + { name = "tqdm", marker = "python_full_version < '3.13'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/c6/f4/036a656c605f63dc25f11284f60f69900a54a19c513e1ae60d21d6977e75/fastembed-0.6.0.tar.gz", hash = "sha256:5c9ead25f23449535b07243bbe1f370b820dcc77ec2931e61674e3fe7ff24733", size = 50731 } wheels = [ @@ -1328,7 +1328,7 @@ name = "humanfriendly" version = "10.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "pyreadline3", marker = "sys_platform == 'win32'" }, + { name = "pyreadline3", marker = "python_full_version < '3.13' and sys_platform == 'win32'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/cc/3f/2c29224acb2e2df4d2046e4c73ee2662023c58ff5b113c4c1adac0886c43/humanfriendly-10.0.tar.gz", hash = "sha256:6b0b831ce8f15f7300721aa49829fc4e83921a9a301cc7f606be6686a2288ddc", size = 360702 } wheels = [ @@ -1679,8 +1679,8 @@ name = "loguru" version = "0.7.3" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, - { name = "win32-setctime", marker = "sys_platform == 'win32'" }, + { name = "colorama", marker = "python_full_version < '3.13' and sys_platform == 'win32'" }, + { name = "win32-setctime", marker = "python_full_version < '3.13' and sys_platform == 'win32'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/3a/05/a1dae3dffd1116099471c643b8924f5aa6524411dc6c63fdae648c4f1aca/loguru-0.7.3.tar.gz", hash = "sha256:19480589e77d47b8d85b2c827ad95d49bf31b0dcde16593892eb51dd18706eb6", size = 63559 } wheels = [ @@ -2132,12 +2132,12 @@ name = "onnxruntime" version = "1.21.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "coloredlogs" }, - { name = "flatbuffers" }, - { name = "numpy" }, - { name = "packaging" }, - { name = "protobuf" }, - { name = "sympy" }, + { name = "coloredlogs", marker = "python_full_version < '3.13'" }, + { name = "flatbuffers", marker = "python_full_version < '3.13'" }, + { name = "numpy", marker = "python_full_version < '3.13'" }, + { name = "packaging", marker = "python_full_version < '3.13'" }, + { name = "protobuf", marker = "python_full_version < '3.13'" }, + { name = "sympy", marker = "python_full_version < '3.13'" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/a8/b5/433e46baf8f31a84684f9d3446d8683473706e2810b6171e19beed88ecb9/onnxruntime-1.21.0-cp310-cp310-macosx_13_0_universal2.whl", hash = "sha256:95513c9302bc8dd013d84148dcf3168e782a80cdbf1654eddc948a23147ccd3d", size = 33639595 }, @@ -3618,7 +3618,7 @@ name = "sympy" version = "1.13.3" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "mpmath" }, + { name = "mpmath", marker = "python_full_version < '3.13'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/11/8a/5a7fd6284fa8caac23a26c9ddf9c30485a48169344b4bd3b0f02fef1890f/sympy-1.13.3.tar.gz", hash = "sha256:b27fd2c6530e0ab39e275fc9b683895367e51d5da91baa8d3d64db2565fec4d9", size = 7533196 } wheels = [ diff --git a/cognee/infrastructure/databases/vector/embeddings/get_embedding_engine.py b/cognee/infrastructure/databases/vector/embeddings/get_embedding_engine.py index afd11cc9c..d4ecb52d2 100644 --- a/cognee/infrastructure/databases/vector/embeddings/get_embedding_engine.py +++ b/cognee/infrastructure/databases/vector/embeddings/get_embedding_engine.py @@ -23,6 +23,7 @@ def get_embedding_engine() -> EmbeddingEngine: model=config.embedding_model, dimensions=config.embedding_dimensions, max_tokens=config.embedding_max_tokens, + endpoint=config.embedding_endpoint, huggingface_tokenizer=config.huggingface_tokenizer, ) diff --git a/docker-compose.yml b/docker-compose.yml index 75c76d542..d9ad50d63 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -13,6 +13,9 @@ services: - HOST=0.0.0.0 - ENVIRONMENT=local - PYTHONPATH=. + extra_hosts: + # Allows the container to reach your local machine using "host.docker.internal" instead of "localhost" + - "host.docker.internal:host-gateway" ports: - 8000:8000 # - 5678:5678 # Debugging