Graphiti
SAFEgrade B · trust 89/100Build Real-Time Knowledge Graphs for AI Agents
agentsgraphllmsragOverview
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` aConnect
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 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{
"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.
| Tool | Risk | Description |
|---|---|---|
add_memory | write | Add an episode to memory. This is the primary way to add information to the graph. |
add_triplet | write | Directly add a single fact triplet (source entity -> fact -> target entity). |
build_communities | read | Detect and build community summaries over the graph |
clear_graph | destructive | Clear all data from the graph for specified group IDs. |
delete_entity_edge | destructive | Delete an entity edge from the graph memory. |
delete_episode | destructive | Delete an episode from the graph memory. |
get_entity_edge | read | Get an entity edge from the graph memory by its UUID. |
get_episode_entities | read | Get the entities (nodes) and facts (edges) created by specific episodes. |
get_episodes | read | Get episodes from the graph memory. |
get_status | read | Get the status of the Graphiti MCP server and database connection. |
search_memory_facts | read | Search the graph memory for relevant facts (entity edges). |
search_nodes | read | Search for nodes (entities) in the graph memory. |
summarize_saga | read | Summarize 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.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | PASS |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | WARN |
| L4 | Behavioural (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)
clear_graph, delete_entity_edge, delete_episode
__import__(package.replace('-', '_'))return hashlib.md5(key_str.encode()).hexdigest()
base_url = f'http://127.0.0.1:{port}'graphiti-core, python-dotenv
cat .env | grep API_KEY
curl -LsSf https://astral.sh/uv/install.sh | sh
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
tests/evals/data/longmemeval_data/longmemeval_oracle.json
uv.lock
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
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-09-18 | d7b2f46412da | SAFE | B | 89 | first 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