Commit graph

94 commits

Author SHA1 Message Date
Daniel Chalef
7f6b835839 Complete Kuzu removal from MCP server
Removed all remaining Kuzu references from:
- Test fixtures (test_fixtures.py): Changed default database to falkordb, removed kuzu configuration
- Test runner (run_tests.py): Removed kuzu from database choices, checks, and markers
- Integration tests (test_comprehensive_integration.py): Removed kuzu from parameterized tests and environment setup
- Test README: Updated all examples and documentation to reflect falkordb as default
- Docker README: Completely rewrote to remove KuzuDB section, updated with FalkorDB combined image as default

All Kuzu support has been completely removed from the MCP server codebase. FalkorDB (via combined container) is now the default database backend.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-30 14:13:56 -07:00
Daniel Chalef
b9ac3efb69 Replace Kuzu with FalkorDB as default database
BREAKING CHANGE: Kuzu is no longer supported. FalkorDB is now the default.

- Renamed Dockerfile.falkordb-combined to Dockerfile (default)
- Renamed docker-compose-falkordb-combined.yml to docker-compose.yml (default)
- Updated config.yaml to use FalkorDB with localhost:6379 as default
- Removed Kuzu from pyproject.toml dependencies (now only falkordb extra)
- Updated Dockerfile to use graphiti-core[falkordb] instead of [kuzu,falkordb]
- Completely removed all Kuzu references from README
- Updated README to document FalkorDB combined container as default
- Docker Compose now starts single container with FalkorDB + MCP server
- Prerequisites now require Docker instead of Python for default setup
- Removed old Kuzu docker-compose files

Running from command line now requires external FalkorDB instance at localhost:6379
2025-10-30 13:57:07 -07:00
Daniel Chalef
8fb405521c Fix health check to eliminate 404 errors
- Changed health check to only verify FalkorDB (redis-cli ping)
- Removed non-existent /health endpoint check
- MCP server startup is visible in logs
- Container now runs without health check errors
2025-10-30 13:28:52 -07:00
Daniel Chalef
26b14045f2 Fix combined FalkorDB image to run both services successfully
- Override FalkorDB ENTRYPOINT to use custom startup script
- Use correct FalkorDB module path: /var/lib/falkordb/bin/falkordb.so
- Create config-docker-falkordb-combined.yaml with localhost URI
- Create /var/lib/falkordb/data directory for persistence
- Both FalkorDB and MCP server now start successfully
- Tested: FalkorDB ready, MCP server running on port 8000
2025-10-30 13:20:53 -07:00
Daniel Chalef
3c1099f95b Fix Dockerfile syntax version and Python compatibility
- Set Dockerfile syntax to version 1 as requested
- Use Python 3.11 from Debian Bookworm instead of 3.12
- Add comment explaining Bookworm ships with Python 3.11
- Python 3.11 meets project requirement of >=3.10
- Build tested successfully
2025-10-30 13:14:50 -07:00
Daniel Chalef
44472e22e0 Add combined FalkorDB + MCP server Docker image
- Created Dockerfile.falkordb-combined extending official FalkorDB image
- Added startup script to run both FalkorDB daemon and MCP server
- Created docker-compose-falkordb-combined.yml for simplified deployment
- Added comprehensive README-falkordb-combined.md documentation
- Updated main README with Option 4 for combined image
- Single container solution for development and single-node deployments
2025-10-30 12:59:09 -07:00
Daniel Chalef
2b414d6094 Remove User and Assistant exception from Preference prioritization 2025-10-30 12:53:05 -07:00
Daniel Chalef
a9f31e37d8 conductor-checkpoint-msg_01NLStrCDq7HZJy3pKyGSqxM 2025-10-30 12:46:57 -07:00
Daniel Chalef
2a76296426 conductor-checkpoint-msg_01Jk4ugkAqMs4iRYWwnaNAHR 2025-10-30 11:47:27 -07:00
Daniel Chalef
73e31599ef conductor-checkpoint-msg_01ELC9AyZZGry9tN4XKrwEM6 2025-10-30 11:29:38 -07:00
Daniel Chalef
58bad9b542 conductor-checkpoint-msg_01WRZxPMQYjNEjcFNTMzWYeL 2025-10-30 11:25:25 -07:00
Daniel Chalef
ca0092d510 conductor-checkpoint-msg_018FX6Mibr66cKLnpL84f2Js 2025-10-30 10:41:47 -07:00
Daniel Chalef
578432ed2d conductor-checkpoint-msg_013rt24pyzMHbrmEQein2dJJ 2025-10-30 08:12:44 -07:00
Daniel Chalef
60742dca76 conductor-checkpoint-msg_01CYzyiAtLo95iVLeqWSuYiR 2025-10-30 08:08:44 -07:00
Daniel Chalef
3bf50c56e4 conductor-checkpoint-msg_01Ji7gxCG4jR145rBAupwU49 2025-10-30 08:02:28 -07:00
Daniel Chalef
00b579ff17 conductor-checkpoint-msg_01Gn6qZrD3DZd8c6a6fmMap7 2025-10-30 08:00:23 -07:00
Daniel Chalef
4573beaa3c conductor-checkpoint-msg_01D7XfEJqzTeKGyuE5EFmjND 2025-10-30 07:55:40 -07:00
Daniel Chalef
78d88cf7f6 conductor-checkpoint-msg_01JiEiEuJN3sQXheqMzCa6hX 2025-10-30 07:53:23 -07:00
Daniel Chalef
e8a360e5cf conductor-checkpoint-msg_01P7ur6mQEusfHTYpBrBnpk3 2025-10-30 07:50:07 -07:00
Daniel Chalef
517682ec36 conductor-checkpoint-msg_01MS72hQDCrr1rB6GSd3zy4h 2025-10-30 07:44:26 -07:00
Daniel Chalef
6a9f27d33c conductor-checkpoint-msg_014jJQ4FkGU4485gF41K2suG 2025-10-30 07:41:21 -07:00
Daniel Chalef
ef2e95cb1b conductor-checkpoint-msg_01CPPZ9JKakjsmHpzzoFVhaM 2025-10-30 07:38:11 -07:00
Daniel Chalef
a139fca369 conductor-checkpoint-msg_018dRGHW6fPNqJDN6eV6SpoH 2025-10-30 07:29:23 -07:00
Daniel Chalef
8332ec3aa9 conductor-checkpoint-msg_0127MeSvxWk8BLXjB5k3wDJY 2025-10-30 07:22:58 -07:00
Daniel Chalef
afd83123fe conductor-checkpoint-msg_01BHEPsv2EML14gFa6vkn1NP 2025-10-30 07:10:18 -07:00
Daniel Chalef
964fd31df1 conductor-checkpoint-msg_01G1G9J7cbupmLkyiQufj335 2025-10-30 07:02:29 -07:00
Daniel Chalef
c4fe9aa0e2 conductor-checkpoint-msg_018NLrtFxs5zfcNwQnNCfvNg 2025-10-30 07:00:52 -07:00
Daniel Chalef
fa2cc39122 conductor-checkpoint-msg_01Qdskq96hJ6Q9DPg1h5Jjgg 2025-10-30 06:57:33 -07:00
Daniel Chalef
c9404e7c92 conductor-checkpoint-msg_01QLbhPMGDeB5EHbMq5KT86U 2025-10-30 06:56:08 -07:00
Daniel Chalef
5a0a85ee6e conductor-checkpoint-msg_016GKc3DYwYUjngGw8pArRJK 2025-10-30 06:53:32 -07:00
Daniel Chalef
b159667152 conductor-checkpoint-msg_01KL3wzQUn3gekDmznXVgXne 2025-10-30 06:48:49 -07:00
Daniel Chalef
1af906139a conductor-checkpoint-msg_01KgGgzpbiuM31KWKxQhNBfY 2025-10-30 06:46:56 -07:00
Daniel Chalef
61c46e258c conductor-checkpoint-msg_01K7QC1X8iPiYaMdvbi7WtR5 2025-10-30 06:45:26 -07:00
Daniel Chalef
ae47a7087f conductor-checkpoint-msg_01SNsax9AwiCBFrC7Fpo7BNe 2025-10-29 23:39:54 -07:00
Daniel Chalef
153927d0e9 conductor-checkpoint-msg_01MHw4g8TicrXegSK9phncfw 2025-10-29 23:31:26 -07:00
Daniel Chalef
79be1a3472 conductor-checkpoint-msg_01MGFAenMDnTX3H9HSZEbj2T 2025-10-29 23:30:49 -07:00
Daniel Chalef
62cb4175da conductor-checkpoint-msg_018d52yUXdPF48UBWPQdiB4W 2025-10-29 23:17:00 -07:00
Daniel Chalef
8c02683174 fix: Remove protected 'name' attribute from entity type models
Pydantic BaseModel reserves 'name' as a protected attribute. Removed
the 'name' attribute from dynamically created entity type models as
it's not needed - the entity type name is already stored as the class
name and dict key.

Fixed error: name cannot be used as an attribute for Requirement as
it is a protected attribute name.
2025-10-29 22:58:56 -07:00
Daniel Chalef
b434a6b680 fix: Convert entity_types from list to dict for Graphiti API
The Graphiti add_episode() API expects entity_types as a
dict[str, type[BaseModel]], not a list. Changed entity type
building to create a dictionary mapping entity names to their
Pydantic model classes.

Fixed error: 'list' object has no attribute 'items'

Changes:
- Build entity_types as dict instead of list in config processing
- Add fallback to convert ENTITY_TYPES list to dict if needed
- Map entity type names to their model classes
2025-10-29 22:51:24 -07:00
Daniel Chalef
d940b6fb7d fix: Use timezone.utc instead of UTC for Python 3.10 compatibility
The UTC constant was added in Python 3.11. Changed to use
timezone.utc which is available in Python 3.10+.

Fixed ImportError: cannot import name 'UTC' from 'datetime'
2025-10-29 22:46:17 -07:00
Daniel Chalef
12eb564eda fix: Resolve database connection and episode processing errors
Fixed two critical runtime errors:

1. Database connection check for KuzuDB
   - KuzuDB session.run() returns None, causing async iteration error
   - Added special handling for KuzuDB (in-memory, no query needed)
   - Other databases (Neo4j, FalkorDB) still perform connection test

2. Episode processing parameter error
   - Changed 'episode_type' parameter to 'source' to match Graphiti API
   - Added required 'reference_time' parameter with current timestamp
   - Added datetime imports (UTC, datetime)

Errors fixed:
- 'async for' requires an object with __aiter__ method, got NoneType
- Graphiti.add_episode() got an unexpected keyword argument 'episode_type'
2025-10-29 22:43:09 -07:00
Daniel Chalef
bb7883a4ee feat: Update default embedding model to text-embedding-3-small
Replace outdated text-embedding-ada-002 with the newer, more efficient
text-embedding-3-small model as the default embedder. The new model
offers better performance and is more cost-effective.

Updated:
- config/config.yaml: Changed default model
- README.md: Updated documentation to reflect new default
2025-10-29 22:36:52 -07:00
Daniel Chalef
bb12a91ebd docs: Remove telemetry from features list
Telemetry is not a feature but a notice about data collection,
so it shouldn't be listed as a feature.

Addresses review comment on line 29
2025-10-29 22:34:51 -07:00
Daniel Chalef
6a3a1ba706 docs: Remove SSE transport reference from Claude Desktop section
Since the MCP server no longer supports SSE transport, removed the
mention of SSE from the mcp-remote description. The server only
uses HTTP transport.

Addresses review comment on line 514
2025-10-29 22:33:39 -07:00
Daniel Chalef
9193b52179 docs: Address README review comments
- Shorten Kuzu database description to be more concise
- Update Ollama model example to use 'gpt-oss:120b'
- Restore Azure OpenAI environment variables documentation
- Remove implementation details from Docker section (irrelevant to container users)
- Clarify mcp-remote supports both HTTP and SSE transports

Addresses review comments #1-7 on the PR
2025-10-29 22:22:51 -07:00
Daniel Chalef
12316066ca docs: Update README with comprehensive features and database options
- Add comprehensive features list including all supported databases, LLM providers, and transports
- Document Kuzu as the default database with explanation of its benefits and archived status
- Add detailed instructions for running with different databases (Kuzu, Neo4j, FalkorDB)
- Update transport references from SSE to HTTP (default transport)
- Add database-specific Docker Compose instructions
- Update MCP client configurations to use /mcp/ endpoint
- Clarify prerequisites to reflect optional nature of external databases
- Add detailed database configuration examples for all supported backends
2025-10-29 22:09:39 -07:00
Daniel Chalef
a85b1943ad fix: Move README back to mcp_server root folder
The main README for the MCP server should be in the root of the mcp_server folder for better discoverability
2025-10-29 21:22:56 -07:00
Daniel Chalef
4fe92a2b5b fix: Use contextlib.suppress instead of try-except-pass (SIM105)
- Replace try-except-pass with contextlib.suppress in test_async_operations.py
- Replace try-except-pass with contextlib.suppress in test_fixtures.py
- Fixes ruff SIM105 linting errors
2025-10-29 18:46:50 -07:00
Daniel Chalef
669aaae785 fix: Fix all linting errors in test suite
- Replace bare except with except Exception
- Remove unused imports and variables
- Fix type hints to use modern syntax
- Apply ruff formatting for line length
- Ensure all tests pass linting checks
2025-10-29 18:41:18 -07:00
Daniel Chalef
dfb99e742e fix: Improve test runner to load API keys from .env file
- Add dotenv loading support in test runner
- Fix duplicate os import issue
- Improve prerequisite checking with helpful hints
- Update error messages to guide users

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-27 12:20:14 -07:00