← MCP servers · getzep

Graphiti

SAFEgrade B · trust 89/100

Build Real-Time Knowledge Graphs for AI Agents

agentsgraphllmsrag

Overview

From the repository's own README, as read at the audited commit.

# Setup Socket Firewall wrapperComposite GitHub Action that installs Socket Firewall Enterprise (`sfw`) inwrapper mode and routes supported package-manager commands through it for laterbash steps in the same job.## Usage```yaml- name: Setup Socket Firewall wrapper  uses: ./.github/actions/setup-socket-firewall  with:    socket-api-key: ${{ secrets.SOCKET_API_KEY }}```Call the action after checkout and before the first `uv sync`, `uv lock`,`uv pip`, or `pip install` step.The action:- downloads the Linux `sfw` binary when needed- exports `SOCKET_API_KEY` and `SFW_TELEMETRY_DISABLED=true`- configures `SFW_CUSTOM_REGISTRIES` with wrap hosts (including  `files.pythonhosted.org` for PyPI artifact downloads)- writes a `BASH_ENV` file with package-manager wrapper functionsWrapper functions apply only to later bash steps that source `BASH_ENV`. Theydo not affect third-party Actions or dependency installs inside Docker builds(those use BuildKit secrets — see repository Dockerfiles).## Fork PRs / missing secretGraphiti is a public repository. Fork pull requests do not receive repositorysecrets. When `socket-api-key` is empty, this action **soft-skips**: it prints anotice, sets `SOCKET_FIREWALL_ENABLED=false`, and leaves package managersunwrapped so CI still succeeds. Same-repo runs with `SOCKET_API_KEY` configuredget full enforcement.## API key scopes`SOCKET_API_KEY` should include the Socket scopes required for Enterprisewrapper mode (`packages` and `entitlements:list`). Configure it as a repositoryActions secret and in the `development` / `release` environments used by CI.## Docker buildsOfficial release workflows pass `socket_api_key` as a BuildKit secret so imagedependency fetches go through `sfw`. They also set the non-secret`SOCKET_FIREWALL_ENABLED=true` build argument, which separates enforced releaselayers from public fallback layers in the BuildKit cache. In enforced mode, amissing or empty `socket_api_key` fails the build. Dockerfiles default theargument to `false` a

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add graph-service --env ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} --env AZURE_OPENAI_API_KEY=${AZURE_OPENAI_API_KEY} --env CHUNK_MIN_TOKENS=${CHUNK_MIN_TOKENS} --env CHUNK_OVERLAP_TOKENS=${CHUNK_OVERLAP_TOKENS} -- uvx graph-service
claude-desktop
{
  "mcpServers": {
    "graph-service": {
      "command": "uvx",
      "args": [
        "graph-service"
      ],
      "env": {
        "ANTHROPIC_API_KEY": "${ANTHROPIC_API_KEY}",
        "AZURE_OPENAI_API_KEY": "${AZURE_OPENAI_API_KEY}",
        "CHUNK_MIN_TOKENS": "${CHUNK_MIN_TOKENS}",
        "CHUNK_OVERLAP_TOKENS": "${CHUNK_OVERLAP_TOKENS}"
      }
    }
  }
}

Exposed tools (13) 8 read · 2 write · 3 destructive

Blast radius: 3 tools can delete or overwrite. An agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
add_memorywriteAdd an episode to memory. This is the primary way to add information to the graph.
add_tripletwriteDirectly add a single fact triplet (source entity -> fact -> target entity).
build_communitiesreadDetect and build community summaries over the graph
clear_graphdestructiveClear all data from the graph for specified group IDs.
delete_entity_edgedestructiveDelete an entity edge from the graph memory.
delete_episodedestructiveDelete an episode from the graph memory.
get_entity_edgereadGet an entity edge from the graph memory by its UUID.
get_episode_entitiesreadGet the entities (nodes) and facts (edges) created by specific episodes.
get_episodesreadGet episodes from the graph memory.
get_statusreadGet the status of the Graphiti MCP server and database connection.
search_memory_factsreadSearch the graph memory for relevant facts (entity edges).
search_nodesreadSearch for nodes (entities) in the graph memory.
summarize_sagareadSummarize a saga: an ordered group of related episodes.

Details

Source
getzep/graphiti
PyPI
graph-service
Transports
streamable-http
Credentials it reads
ANTHROPIC_API_KEYAZURE_OPENAI_API_KEYCHUNK_MIN_TOKENSCHUNK_OVERLAP_TOKENSCHUNK_TOKEN_SIZEFALKORDB_PASSWORDGOOGLE_API_KEYNEO4J_PASSWORDOPENAI_API_KEY
License
Apache-2.0
Stars
30,975 · pushed 0d ago

Trust audit

Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codePASS
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (5 observation(s))
Network
declared (2 observation(s))
Shell
none-observed
Dependencies
not all pinned
Secrets in source
none-found

Findings (10)

MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
clear_graph, delete_entity_edge, delete_episode
Why it matters. 3 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWCode injection · code.dynamic_import · CWE-78, CWE-94, CWE-95
mcp_server/tests/run_tests.py:97
__import__(package.replace('-', '_'))
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
graphiti_core/llm_client/client.py:157
return hashlib.md5(key_str.encode()).hexdigest()
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
server/tests/test_live_falkordb_int.py:139
base_url = f'http://127.0.0.1:{port}'
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
examples/quickstart/requirements.txt
graphiti-core, python-dotenv
Why it matters. 2 requirement(s) not pinned with ==
Fix. pin exact versions
LOWPrompt injection · prompt.credential_read · CWE-94, CWE-1427
mcp_server/docker/README.md:183
cat .env | grep API_KEY
Why it matters. asks the agent to read credentials
LOWSupply chain · prompt.pipe_to_shell · CWE-829, CWE-1357
mcp_server/README.md:92
curl -LsSf https://astral.sh/uv/install.sh | sh
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
CONTRIBUTING.md:35
Join the conversation on [GitHub Issues](https://github.com/getzep/graphiti/issues) and pitch in at the helpdesk. Answering questions and helping troubleshoot issues is an incredibly valuable contribu
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
INFOInventory / provenance · inv.oversize · CWE-1104
tests/evals/data/longmemeval_data/longmemeval_oracle.json
tests/evals/data/longmemeval_data/longmemeval_oracle.json
Why it matters. 15388478 bytes not read
INFOInventory / provenance · inv.oversize · CWE-1104
uv.lock
uv.lock
Why it matters. 1005857 bytes not read

Gates applied: no_behavioural_pass.

Audited 2026-09-18 · audit v0.4.0 · source sha d7b2f46412da · full audit: observations/trust-audit/mcp-server/getzep__graphiti.json · Report an issue or request a re-scan

Audit history

DateSourceVerdictGradeScoreChange
2026-09-18d7b2f46412daSAFEB89first audit

Alternatives

Other servers in the same categories, safer ones first.

Questions

What is the Graphiti MCP server?

Build Real-Time Knowledge Graphs for AI Agents

What tools does Graphiti expose?

13 in total: 8 read-only, 2 that write, and 3 that can delete or overwrite (clear_graph, delete_entity_edge, delete_episode). Every one is listed on this page with its risk.

Is Graphiti safe to connect to an agent?

The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean server reads B. Separately from the audit: 3 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does Graphiti need?

It reads ANTHROPIC_API_KEY, AZURE_OPENAI_API_KEY, CHUNK_MIN_TOKENS, CHUNK_OVERLAP_TOKENS, CHUNK_TOKEN_SIZE, FALKORDB_PASSWORD, GOOGLE_API_KEY, NEO4J_PASSWORD and OPENAI_API_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does Graphiti run?

It speaks streamable-http, so it runs as a service you connect to over the network. It is published on PyPI as graph-service.

How current is this page?

The grade is for one exact copy of the source (d7b2f46412da), read on 2026-09-18. The repository is watched and re-audited when it changes.

Provenance: OBSERVED · read 2026-09-18 · job trust-audit-2026-09-18