Skip to content

Conversation

@danielchalef
Copy link
Member

Summary

Adds Smithery platform configuration for the Graphiti MCP Server, enabling seamless deployment through the Smithery registry.

Configuration Details

  • Runtime: Container-based deployment
  • Transport: HTTP with Streamable MCP protocol support
  • Required: OpenAI API key for LLM and embeddings
  • Optional: Alternative LLM providers (Anthropic, Gemini), performance tuning
  • Database: FalkorDB bundled in container (no configuration needed)
  • Docker Image: zepai/knowledge-graph-mcp

Configuration Schema

The simplified configuration captures:

  • LLM provider selection and model choice
  • API keys for primary and alternative providers
  • Graphiti group ID for data namespacing
  • Concurrency limit for rate limit management

Test Plan

  • Verify smithery.yaml is valid YAML syntax
  • Confirm Dockerfile path is correct relative to mcp_server directory
  • Test that configuration matches MCP server environment variables

🤖 Generated with Claude Code

startCommand:
type: "http"

configSchema:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Critical Issue: Missing environment variable mapping

The configSchema properties (like openai_api_key, llm_model, llm_provider, etc.) are not being mapped to the actual environment variables expected by the MCP server.

Looking at the config schema in src/config/schema.py and the YAML config in config/config-docker-falkordb-combined.yaml, the server expects environment variables like:

  • OPENAI_API_KEY (not openai_api_key)
  • ANTHROPIC_API_KEY (not anthropic_api_key)
  • GOOGLE_API_KEY (not google_api_key)
  • GRAPHITI_GROUP_ID (not graphiti_group_id)
  • SEMAPHORE_LIMIT (not semaphore_limit)

The Smithery config schema properties need to be mapped to environment variables. This typically requires an env section under startCommand or proper mapping in the Smithery specification. Without this mapping, the configuration values won't be passed to the container.

type: "string"
title: "LLM Model"
description: "Model name to use"
default: "gpt-5-mini"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Issue: Incorrect default model

The default is set to gpt-5-mini, but:

  1. The actual config file at config/config-docker-falkordb-combined.yaml:11 uses gpt-5-mini as the default
  2. However, the README.md:110 states the default is gpt-5-mini
  3. The config/schema.py:150 shows the LLMConfig default is gpt-4.1

There's inconsistency in the codebase, but since this is for Smithery deployment using the Docker container config, it should match config-docker-falkordb-combined.yaml, which correctly uses gpt-5-mini. However, this inconsistency should be documented.

description: "Concurrent episode processing limit (adjust based on LLM rate limits)"
default: 10
minimum: 1
maximum: 50
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Issue: Missing configuration for model-specific settings

The configuration is missing several important settings that are configurable via environment variables:

  • embedder_provider and embedder_model (for alternative embedding providers like Voyage or Sentence Transformers)
  • llm_temperature (important for some models, especially non-reasoning models)
  • llm_max_tokens (configurable in the config schema)

These should be included as optional properties if Smithery users might need to configure them.


build:
dockerfile: "docker/Dockerfile"
dockerBuildPath: "."
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Critical Issue: Build path mismatch

The dockerfile path is set to "docker/Dockerfile" and dockerBuildPath is ".", which means the build context is the mcp_server/ directory.

However, looking at the Dockerfile at line 55-57:

COPY main.py ./
COPY src/ ./src/
COPY config/ ./config/

This expects main.py, src/, and config/ to be in the build context root. Since dockerBuildPath is "." (the mcp_server directory), this should work correctly.

But the issue is: when Smithery builds this from the repository root vs the mcp_server subdirectory. The paths need to be verified:

  • If Smithery executes from the repo root, the build context should be "mcp_server/"
  • If it executes from within mcp_server/, then "." is correct

This needs clarification and testing with Smithery's actual build process.

@claude
Copy link
Contributor

claude bot commented Oct 31, 2025

Review Summary

I have identified several critical issues that need to be addressed before this PR can be merged:

Critical Issues

  1. Missing Environment Variable Mapping: The most critical issue is that the configSchema properties (e.g., openai_api_key, llm_model, llm_provider) are not being mapped to the actual environment variables that the MCP server expects (e.g., OPENAI_API_KEY, GRAPHITI_GROUP_ID, SEMAPHORE_LIMIT). Without proper mapping, the configuration values will not be passed to the container. You need to add an environment variable mapping section or use Smithery's mechanism to map config schema properties to environment variables.

  2. Docker Build Context: The build paths need verification with Smithery's actual build process. The current configuration assumes Smithery executes from within the mcp_server/ directory, but this needs to be confirmed and tested.

Additional Issues

  1. Incomplete Configuration Options: Missing several configurable options that users might need:

    • Embedder provider and model configuration
    • LLM temperature setting (important for non-reasoning models)
    • LLM max_tokens configuration
  2. Default Model Inconsistency: There is an inconsistency in the codebase regarding default models (gpt-4.1 in schema.py vs gpt-5-mini in docker config). While the smithery.yaml correctly matches the Docker config default, this inconsistency should be documented.

Recommendations

  • Add proper environment variable mapping in the Smithery configuration
  • Test the build process with Smithery to ensure the Docker context paths work correctly
  • Consider adding the missing optional configuration parameters
  • Verify the configuration works end-to-end with a test deployment through Smithery

The concept and structure of the configuration look good, but the implementation needs these corrections to be functional.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants