Commit graph

82 commits

Author SHA1 Message Date
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
Daniel Chalef
b19b3c4b11 conductor-checkpoint-msg_01Q7VLFTJrtmpkaB7hfUzZLP 2025-10-27 12:15:35 -07:00
Daniel Chalef
968c36c2d1 conductor-checkpoint-msg_01TscHXmijzkqcTJX5sGTYP8 2025-10-26 18:14:13 -07:00
Daniel Chalef
2037df875d fix: Configure consistent logging format between uvicorn and MCP server
- Use simplified format matching uvicorn's default (LEVEL message)
- Remove timestamps from custom logger format
- Suppress verbose MCP and uvicorn access logs
- Improve readability of server startup output

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-26 18:00:47 -07:00
Daniel Chalef
7a65f6729a fix: Correct MCP HTTP endpoint path from / to /mcp/
- Remove incorrect /status endpoint reference
- Update logging to show correct MCP endpoint at /mcp/
- Align with FastMCP documentation standards

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-26 17:54:41 -07:00
Daniel Chalef
91d515871b feat: Add detailed server URL logging and improve access information
- Added comprehensive logging showing exact URLs to access the MCP server
- Display localhost instead of 0.0.0.0 for better usability
- Show MCP endpoint, transport type, and status endpoint information
- Added visual separators to make server info stand out in logs

This helps users understand exactly how to connect to the MCP server
and troubleshoot connection issues.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-26 17:48:56 -07:00
Daniel Chalef
f3b793f244 fix: Update hardcoded default model to gpt-4.1 and fix config path
- Changed hardcoded default in schema.py from gpt-4o to gpt-4.1
- Fixed default config path to look in config/config.yaml relative to mcp_server directory
- This ensures the server uses gpt-4.1 as the default model everywhere

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-26 17:44:36 -07:00
Daniel Chalef
bcf1ccd843 fix: Correct default OpenAI model to gpt-4.1
Changed the default LLM model from gpt-4o-mini to gpt-4.1 as requested.
This is the latest GPT-4 series model.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-26 17:40:12 -07:00
Daniel Chalef
38ea97e90c chore: Update default OpenAI model to gpt-4o-mini
Changed the default LLM model from gpt-4o to gpt-4o-mini across all
configuration files for better cost efficiency while maintaining quality.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-26 17:36:09 -07:00
Daniel Chalef
0f2b7e9caa chore: Update default transport from SSE to HTTP
- Changed default transport to 'http' as SSE is deprecated
- Updated all configuration files to use HTTP transport
- Updated Docker compose commands to use HTTP transport
- Updated comments to reflect HTTP transport usage

This change ensures the MCP server uses the recommended HTTP transport
instead of the deprecated SSE transport.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-26 17:33:54 -07:00
Daniel Chalef
0f85119443 fix: Improve MCP server configuration and initialization
- Fix API key detection: Remove hardcoded OpenAI checks, let factories handle provider-specific validation
- Fix .env file loading: Search for .env in mcp_server directory first
- Change default transport to SSE for broader compatibility (was stdio)
- Add proper error handling with warnings for failed client initialization
- Model already defaults to gpt-4o as requested

These changes ensure the MCP server properly loads API keys from .env files
and creates the appropriate LLM/embedder clients based on configuration.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-26 17:31:32 -07:00
Daniel Chalef
fa2b5696bc conductor-checkpoint-msg_01PmXwij9S976CQk798DJ4PH 2025-10-26 17:29:06 -07:00
Daniel Chalef
21530c6408 feat: MCP Server v1.0.0rc0 - Complete refactoring with modular architecture
This is a major refactoring of the MCP Server to support multiple providers
through a YAML-based configuration system with factory pattern implementation.

## Key Changes

### Architecture Improvements
- Modular configuration system with YAML-based settings
- Factory pattern for LLM, Embedder, and Database providers
- Support for multiple database backends (Neo4j, FalkorDB, KuzuDB)
- Clean separation of concerns with dedicated service modules

### Provider Support
- **LLM**: OpenAI, Anthropic, Gemini, Groq
- **Embedders**: OpenAI, Voyage, Gemini, Anthropic, Sentence Transformers
- **Databases**: Neo4j, FalkorDB, KuzuDB (new default)
- Azure OpenAI support with AD authentication

### Configuration
- YAML configuration with environment variable expansion
- CLI argument overrides for runtime configuration
- Multiple pre-configured Docker Compose setups
- Proper boolean handling in environment variables

### Testing & CI
- Comprehensive test suite with unit and integration tests
- GitHub Actions workflows for linting and testing
- Multi-database testing support

### Docker Support
- Updated Docker images with multi-stage builds
- Database-specific docker-compose configurations
- Persistent volume support for all databases

### Bug Fixes
- Fixed KuzuDB connectivity checks
- Corrected Docker command paths
- Improved error handling and logging
- Fixed boolean environment variable expansion

Co-authored-by: Claude <noreply@anthropic.com>
2025-10-26 17:23:57 -07:00