From 07e2e40cab2d73509524cefe7cfd12799c55c5b2 Mon Sep 17 00:00:00 2001 From: Aidan Petti Date: Mon, 24 Nov 2025 14:22:27 -0700 Subject: [PATCH] config for neptune --- mcp_server/config/config-neptune.yaml | 131 ++++++++++++++++++++++++ mcp_server/docker/Dockerfile.standalone | 2 +- 2 files changed, 132 insertions(+), 1 deletion(-) create mode 100644 mcp_server/config/config-neptune.yaml diff --git a/mcp_server/config/config-neptune.yaml b/mcp_server/config/config-neptune.yaml new file mode 100644 index 00000000..46c264b3 --- /dev/null +++ b/mcp_server/config/config-neptune.yaml @@ -0,0 +1,131 @@ +# Graphiti MCP Server Configuration for AWS Neptune +# This configuration is optimized for AWS Neptune Database or Analytics + +server: + transport: "http" # HTTP transport (SSE is deprecated) + host: "0.0.0.0" + port: 8000 + +llm: + provider: "openai" # Options: openai, azure_openai, anthropic, gemini, groq + model: "gpt-5-mini" + max_tokens: 4096 + + providers: + openai: + api_key: ${OPENAI_API_KEY} + api_url: ${OPENAI_API_URL:https://api.openai.com/v1} + organization_id: ${OPENAI_ORGANIZATION_ID:} + + azure_openai: + api_key: ${AZURE_OPENAI_API_KEY} + api_url: ${AZURE_OPENAI_ENDPOINT} + api_version: ${AZURE_OPENAI_API_VERSION:2024-10-21} + deployment_name: ${AZURE_OPENAI_DEPLOYMENT} + use_azure_ad: ${USE_AZURE_AD:false} + + anthropic: + api_key: ${ANTHROPIC_API_KEY} + api_url: ${ANTHROPIC_API_URL:https://api.anthropic.com} + max_retries: 3 + + gemini: + api_key: ${GOOGLE_API_KEY} + project_id: ${GOOGLE_PROJECT_ID:} + location: ${GOOGLE_LOCATION:us-central1} + + groq: + api_key: ${GROQ_API_KEY} + api_url: ${GROQ_API_URL:https://api.groq.com/openai/v1} + +embedder: + provider: "openai" # Options: openai, azure_openai, gemini, voyage + model: "text-embedding-3-small" + dimensions: 1536 + + providers: + openai: + api_key: ${OPENAI_API_KEY} + api_url: ${OPENAI_API_URL:https://api.openai.com/v1} + organization_id: ${OPENAI_ORGANIZATION_ID:} + + azure_openai: + api_key: ${AZURE_OPENAI_API_KEY} + api_url: ${AZURE_OPENAI_EMBEDDINGS_ENDPOINT} + api_version: ${AZURE_OPENAI_API_VERSION:2024-10-21} + deployment_name: ${AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT} + use_azure_ad: ${USE_AZURE_AD:false} + + gemini: + api_key: ${GOOGLE_API_KEY} + project_id: ${GOOGLE_PROJECT_ID:} + location: ${GOOGLE_LOCATION:us-central1} + + voyage: + api_key: ${VOYAGE_API_KEY} + api_url: ${VOYAGE_API_URL:https://api.voyageai.com/v1} + model: "voyage-3" + +database: + provider: "neptune" # Using AWS Neptune for this configuration + + providers: + neptune: + # Neptune Graph Endpoint + # For Neptune Database: neptune-db://your-cluster.region.neptune.amazonaws.com + # For Neptune Analytics: neptune-graph://g-your-graph-id + host: ${NEPTUNE_HOST:neptune-db://localhost} + + # Amazon OpenSearch Serverless (AOSS) Endpoint for full-text search + # Required for hybrid search capabilities + # Example: your-collection.us-east-1.aoss.amazonaws.com + aoss_host: ${AOSS_HOST} + + # Neptune connection port (default: 8182 for Neptune Database) + port: ${NEPTUNE_PORT:8182} + + # AOSS connection port (default: 443 for HTTPS) + aoss_port: ${AOSS_PORT:443} + + # AWS Region (e.g., us-east-1, us-west-2) + # If not specified, will be detected from AWS CLI or instance metadata + region: ${AWS_REGION:} + + # AWS Credentials: + # Neptune uses the standard AWS credential chain: + # 1. Environment variables (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN) + # 2. AWS credentials file (~/.aws/credentials) + # 3. AWS CLI configuration (aws configure) + # 4. IAM role (when running on EC2, ECS, Lambda, etc.) + # + # Configure credentials using one of these methods: + # - Run: aws configure + # - Set environment variables: + # export AWS_ACCESS_KEY_ID="your-access-key" + # export AWS_SECRET_ACCESS_KEY="your-secret-key" + # export AWS_SESSION_TOKEN="your-session-token" # Optional for temporary credentials + # - Use IAM role when running on AWS infrastructure + +graphiti: + group_id: ${GRAPHITI_GROUP_ID:main} + episode_id_prefix: ${EPISODE_ID_PREFIX:} + user_id: ${USER_ID:mcp_user} + entity_types: + - name: "Preference" + description: "User preferences, choices, opinions, or selections (PRIORITIZE over most other types except User/Assistant)" + - name: "Requirement" + description: "Specific needs, features, or functionality that must be fulfilled" + - name: "Procedure" + description: "Standard operating procedures and sequential instructions" + - name: "Location" + description: "Physical or virtual places where activities occur" + - name: "Event" + description: "Time-bound activities, occurrences, or experiences" + - name: "Organization" + description: "Companies, institutions, groups, or formal entities" + - name: "Document" + description: "Information content in various forms (books, articles, reports, etc.)" + - name: "Topic" + description: "Subject of conversation, interest, or knowledge domain (use as last resort)" + - name: "Object" + description: "Physical items, tools, devices, or possessions (use as last resort)" diff --git a/mcp_server/docker/Dockerfile.standalone b/mcp_server/docker/Dockerfile.standalone index b7d49d75..2cd585fa 100644 --- a/mcp_server/docker/Dockerfile.standalone +++ b/mcp_server/docker/Dockerfile.standalone @@ -1,6 +1,6 @@ # syntax=docker/dockerfile:1 # Standalone Graphiti MCP Server Image -# This image runs only the MCP server and connects to an external database (Neo4j or FalkorDB) +# This image runs only the MCP server and connects to an external database (Neo4j, FalkorDB or Neptune) FROM python:3.11-slim-bookworm