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>
67 lines
1.2 KiB
TOML
67 lines
1.2 KiB
TOML
[project]
|
|
name = "mcp-server"
|
|
version = "1.0.0rc0"
|
|
description = "Graphiti MCP Server"
|
|
readme = "README.md"
|
|
requires-python = ">=3.10,<4"
|
|
dependencies = [
|
|
"mcp>=1.9.4",
|
|
"openai>=1.91.0",
|
|
"graphiti-core>=0.16.0",
|
|
"azure-identity>=1.21.0",
|
|
"pydantic-settings>=2.0.0",
|
|
"pyyaml>=6.0",
|
|
"pytest>=8.4.1",
|
|
"kuzu>=0.11.2",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
providers = [
|
|
"google-genai>=1.8.0",
|
|
"anthropic>=0.49.0",
|
|
"groq>=0.2.0",
|
|
"voyageai>=0.2.3",
|
|
"sentence-transformers>=2.0.0",
|
|
]
|
|
dev = [
|
|
"graphiti-core>=0.16.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"]
|
|
pythonVersion = "3.10"
|
|
typeCheckingMode = "basic"
|
|
|
|
[tool.ruff]
|
|
line-length = 100
|
|
|
|
[tool.ruff.lint]
|
|
select = [
|
|
# pycodestyle
|
|
"E",
|
|
# Pyflakes
|
|
"F",
|
|
# pyupgrade
|
|
"UP",
|
|
# flake8-bugbear
|
|
"B",
|
|
# flake8-simplify
|
|
"SIM",
|
|
# isort
|
|
"I",
|
|
]
|
|
ignore = ["E501"]
|
|
|
|
[tool.ruff.format]
|
|
quote-style = "single"
|
|
indent-style = "space"
|
|
docstring-code-format = true
|
|
|
|
[tool.uv.sources]
|
|
graphiti-core = { path = "../", editable = true }
|