Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Grafyx

PYPI · GRAFYX-MCP · SCANNED SEP 22

Real-time codebase graph for AI assistants: call graphs, dependencies, symbol lookup.

Available components

0 this week 0 Trust /100

Recent critical change

CVE-2026-78676 affects this package (9 Sept 2026). See the changelog before you install this server.

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security74
Provenance & Transparency45
Schema Quality & AI Usability71
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 2264 tokens (~161/item across 14 items; 14 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management90
  • Stability observed for 27 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage92
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 74% of tool parameters carry a description.Partial
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 14 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 15 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

How do I install the Grafyx MCP server?

Grafyx runs locally as a PyPI package, launched with uvx grafyx-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · grafyx-mcp

# add to Claude Code
claude mcp add bilal07karadeniz-grafyx -- uvx grafyx-mcp
// .cursor/mcp.json
{
  "mcpServers": {
    "bilal07karadeniz-grafyx": {
      "command": "uvx",
      "args": [
        "grafyx-mcp"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "bilal07karadeniz-grafyx": {
      "command": "uvx",
      "args": [
        "grafyx-mcp"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add bilal07karadeniz-grafyx -- uvx grafyx-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "bilal07karadeniz-grafyx": {
      "type": "local",
      "command": [
        "uvx",
        "grafyx-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add bilal07karadeniz-grafyx --command uvx --arg grafyx-mcp
# ~/.hermes/config.yaml
mcp_servers:
  bilal07karadeniz-grafyx:
    command: "uvx"
    args: ["grafyx-mcp"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "bilal07karadeniz-grafyx": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "grafyx-mcp"
      ]
    }
  }
}
# add to Vellum
assistant mcp add bilal07karadeniz-grafyx -t stdio -c uvx -a grafyx-mcp
// mcp.json
{
  "mcpServers": {
    "bilal07karadeniz-grafyx": {
      "command": "uvx",
      "args": [
        "grafyx-mcp"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 19 Sept 26 0
    • Stability: pass → 0.80 functional
  • 18 Sept 26 0
    • Stability: 0.97 → pass security
  • 15 Sept 26 0
    • Malware scan: unverified → pass security
  • 14 Sept 26 0
    • Malware scan: pass → unverified security
  • 13 Sept 26 0
    • Stability: pass → 0.83 functional
  • 12 Sept 26 0
    • Stability: 0.97 → pass security
  • 9 Sept 26 0
    • CVE-2026-78676 affects this package: high critical
  • 5 Sept 26 0
    • Stability: pass → 0.77 functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 22 Sept 2026 · Analysed pypi/grafyx-mcp@0.2.4

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem pypi

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend allowlisted hatchling.build

Background: Why install scripts are a supply-chain risk →

Vulnerabilities 66 findings
ID CVE Severity Vector Fix available
PYSEC-2026-2132 CVE-2026-7246 high CVSS:3.1/AV:L/AC:H/PR:H/UI:R/S:C/C:H/I:H/A:H yes
GHSA-284h-m62q-gf8w CVE-2026-78676 critical CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H yes
GHSA-2f96-g7mh-g2hx CVE-2026-67325 high CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H yes
GHSA-3f7w-8rr8-f37f CVE-2026-73620 high CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H yes
GHSA-3rp5-jjmw-4wv2 CVE-2026-69097 high CVSS:3.1/AV:L/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H yes
GHSA-3wxw-xv34-2frg CVE-2026-78679 medium CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N yes
GHSA-4gmw-gg2m-w46p CVE-2026-76219 high CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H yes
GHSA-539m-9xh6-q6rr CVE-2026-73619 medium CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N yes
GHSA-5xxx-qhh7-9287 CVE-2026-78678 medium CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N yes
GHSA-6p8h-3wgx-97gf CVE-2026-73623 high CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H yes
GHSA-7545-fcxq-7j24 CVE-2026-44243 high CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H yes
GHSA-7833-fr7j-v32q CVE-2026-78675 high CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H yes
GHSA-8mcc-hrx5-hvxc CVE-2026-78677 high CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N yes
GHSA-94p4-4cq8-9g67 CVE-2026-73622 high CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N yes
GHSA-956x-8gvw-wg5v CVE-2026-67323 high CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H yes
GHSA-9rj7-rf2p-w77r CVE-2026-76218 high CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H yes
GHSA-fjr4-x663-mwxc CVE-2026-73624 high CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H yes
GHSA-hh9p-6wh2-4mfc CVE-2026-76217 medium CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N yes
GHSA-hmq2-w58f-27jc CVE-2026-76222 high CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:N/I:H/A:L yes
GHSA-jm78-9fvv-mhgr CVE-2026-76221 high CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H yes
GHSA-mv93-w799-cj2w CVE-2026-67326 high CVSS:3.1/AV:L/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H yes
GHSA-p538-c434-8v24 CVE-2026-73621 medium CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:L yes
GHSA-r9mr-m37c-5fr3 CVE-2026-73625 high CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H yes
GHSA-rpm5-65cw-6hj4 CVE-2026-42215 high CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H yes
GHSA-rwj8-pgh3-r573 CVE-2026-67322 high CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N yes
GHSA-v87r-6q3f-2j67 CVE-2026-44244 high CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H yes
GHSA-wvpp-8hx9-p66j CVE-2026-76220 high CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H yes
GHSA-x2qx-6953-8485 CVE-2026-42284 high CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H yes
PYSEC-2026-2160 CVE-2026-42215 high CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H yes
PYSEC-2026-2161 CVE-2026-42284 critical CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H yes
PYSEC-2026-2162 CVE-2026-44243 high CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H yes
PYSEC-2026-2163 CVE-2026-44244 high CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H yes
PYSEC-2026-3783 CVE-2026-76221 none yes
PYSEC-2026-3784 CVE-2026-76222 none yes
PYSEC-2026-3785 CVE-2026-78675 high CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H yes
PYSEC-2026-3786 CVE-2026-78676 none yes
PYSEC-2026-3787 CVE-2026-78677 none yes
PYSEC-2026-3788 CVE-2026-78678 none yes
PYSEC-2026-3836 CVE-2026-67325 high CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H yes
PYSEC-2026-3837 CVE-2026-78679 medium CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N yes
PYSEC-2026-3838 CVE-2026-76219 high CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H yes
PYSEC-2026-3839 CVE-2026-67323 high CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H yes
PYSEC-2026-3840 CVE-2026-76218 high CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H yes
PYSEC-2026-3841 CVE-2026-76217 medium CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N yes
PYSEC-2026-3842 CVE-2026-67322 high CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N yes
PYSEC-2026-3843 CVE-2026-76220 high CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H yes
PYSEC-2026-3948 CVE-2026-73619 none yes
PYSEC-2026-3949 CVE-2026-73620 none yes
PYSEC-2026-3950 CVE-2026-73621 none yes
PYSEC-2026-3951 CVE-2026-73622 none yes

Showing 50 of 66 vulnerabilities.

Background: What a vulnerability scan can and cannot prove →

Dependencies 211 packages
Packages resolved 211
Deprecated 1
Stale 23
No linked repository 5
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 14 exposed · ~1,763 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
find_related_code ~67

Find functions, classes, and files related to a natural language description. Use this when you know WHAT you're looking for conceptually but not WHERE it lives in the codebase. Prevents duplicating existing functionality.

NameTypeReqDescription
descriptionstringyes
max_resultsinteger

Structured output declared, but exposes no named fields.

No examples provided.

find_related_files ~65

Find files related to a natural language description by scoring symbols inside them. Use this when you need to understand which files are relevant to a feature or concept. Returns files grouped with their matching symbols.

NameTypeReqDescription
descriptionstringyes
max_resultsinteger

Structured output declared, but exposes no named fields.

No examples provided.

get_call_graph ~145

Get the call graph for a function: what it calls and what calls it, recursively up to the specified depth. Supports 'ClassName.method_name' syntax (e.g., 'SkillManager.initialize'). If multiple functions share the same name, returns a disambiguation list. Use this to trace execution flow and understand how a function fits into the larger call chain. By default, Python builtins and common stdlib methods (len, append, strip, etc.) are filtered out for clarity. Set include_builtins=True to see everything.

NameTypeReqDescription
depthinteger
function_namestringyes
include_builtinsboolean

Structured output declared, but exposes no named fields.

No examples provided.

get_class_context ~102

Get comprehensive context for a class: methods, properties, inheritance chain, and usages throughout the codebase. Use this when you need to understand a class's interface and where it is used.

NameTypeReqDescription
class_namestringyesName of the class to look up.
detailstringLevel of detail: "signatures", "summary" (default), or "full".
include_hintsbooleanIf True, append navigation suggestions.

Structured output declared, but exposes no named fields.

No examples provided.

get_conventions ~41

Detect and report coding conventions used in this codebase. Use this to understand the project's style BEFORE writing new code, so your additions are consistent with existing patterns.

Input schema present but exposes no named parameters.

Structured output declared, but exposes no named fields.

No examples provided.

get_dependency_graph ~61

Get the dependency graph for a symbol: what it depends ON and what depends on IT, up to the specified depth. Use this to understand the impact radius of changing a symbol.

NameTypeReqDescription
depthinteger
symbol_namestringyes

Structured output declared, but exposes no named fields.

No examples provided.

get_file_context ~106

Get comprehensive context for a file: functions, classes, imports, and relationships to other files. Use this when you need to understand what a file contains and how it connects to the rest of the codebase.

NameTypeReqDescription
detailstringLevel of detail: "signatures", "summary" (default), or "full".
file_pathstringyesPath to the file to inspect.
include_hintsbooleanIf True, append navigation suggestions.

Structured output declared, but exposes no named fields.

No examples provided.

get_function_context ~226

Get comprehensive context for a function: signature, parameters, callers, callees, dependencies, and docstring. Supports 'ClassName.method_name' syntax (e.g., 'ToolExecutor.execute'). For two top-level functions sharing the same name in different files (where ``ClassName.method`` doesn't apply), pass ``file_path`` to pick one. If multiple matches remain, returns a disambiguation list. Use this when you need to understand what a function does, who calls it, and what its blast radius is for modifications.

NameTypeReqDescription
detailstringLevel of detail: "signatures", "summary" (default), or "full".
file_pathstringOptional path filter to disambiguate same-named top-level functions in different files. Matched by substring against each candidate's filepath, so a partial path like ``"api/agents.py"`` is enough.
function_namestringyesName of the function to look up.
include_hintsbooleanIf True, append navigation suggestions.

Structured output declared, but exposes no named fields.

No examples provided.

get_module_context ~207

Get an overview of all symbols in a directory/package. This is the intermediate zoom level between get_project_skeleton (whole project) and get_file_context (single file). Use it to understand what a package contains before drilling into specifics.

NameTypeReqDescription
detailstringLevel of detail: "signatures", "summary" (default), or "full".
include_hintsbooleanIf True, append navigation suggestions.
limitintegerMaximum number of files to return (0 = no limit, default). Combine with offset to page through modules with hundreds of files where the response would otherwise be truncated. ``total_files`` in the r…
module_pathstringDirectory path relative to project root (e.g. "services", "grafyx/graph"). Empty string means the whole project.
offsetintegerNumber of files to skip (for paginating large modules).

Structured output declared, but exposes no named fields.

No examples provided.

get_project_skeleton ~207

Get the full project structure with file tree and statistics. Call this first when starting work on a project to understand its overall shape, module layout, and code distribution.

NameTypeReqDescription
detailstringLevel of detail: - ``"signatures"``: compact overview — totals, languages, and ``top_files`` (15 most code-dense files). Drops the file tree, directory stats, and per-language breakdown. Use wh…
include_hintsbooleanIf True, append navigation suggestions.
max_depthintegerMaximum depth for the file tree display.

Structured output declared, but exposes no named fields.

No examples provided.

get_subclasses ~220

Find all classes that extend a given class, recursively. Use this to understand the impact of changing a class's interface: which subclasses would need updating? Supports multi-level inheritance trees up to the specified depth. When the codebase has multiple classes sharing ``class_name`` (e.g. Django defines ``Field`` in both ``contrib/gis/gdal/field.py`` and ``db/models/fields/__init__.py``), pass ``file_path`` to pick the intended definition. Without it, the first match wins and the response includes ``ambiguous: True`` plus a ``candidates`` list so you can retry.

NameTypeReqDescription
class_namestringyesName of the base class to find subclasses of.
depthintegerHow many inheritance levels to traverse (1 = direct only).
file_pathstringWhen ambiguous, pick the definition in this file. Substring match is NOT done — pass the exact path Grafyx reports in the ``candidates`` list of an ambiguous response.

Structured output declared, but exposes no named fields.

No examples provided.

get_unused_symbols ~124

Find functions and classes with zero inbound references (dead code detection). Analyzes the caller index and import graph to identify symbols that are never called, subclassed, or referenced from other code. Excludes common false positives: dunder methods, framework-decorated handlers, entry points, and exception classes.

NameTypeReqDescription
include_testsbooleanIf True, also scan test files for unused code.
max_resultsintegerMaximum results per category.
symbol_typestringWhat to search for: "all", "functions", or "classes".

Structured output declared, but exposes no named fields.

No examples provided.

refresh_graph ~101

Bring the codebase graph up to date with the code on disk. Use this after making changes to the codebase, or if the graph seems stale. On mirrored (Windows-mount) projects the mirror is re-synced first and only the changed files are re-parsed (incremental, ~seconds); a full re-parse runs only when the change set can't be determined. Normally the file watcher handles this automatically on native projects.

Input schema present but exposes no named parameters.

Structured output declared, but exposes no named fields.

No examples provided.

set_project ~91

Set or change the project directory that Grafyx analyzes. Call this when Grafyx reports 'No project loaded' — typically when running as a global MCP server. Pass the workspace root path. After calling this, all other Grafyx tools will work on the specified project. Re-call with a different path to switch projects.

NameTypeReqDescription
project_pathstringyesAbsolute path to the project root directory.

Structured output declared, but exposes no named fields.

No examples provided.

Common questions

What is the Grafyx MCP server?

Grafyx is an MCP server listed in the public MCP registry as io.github.bilal07karadeniz/grafyx. Real-time codebase graph for AI assistants: call graphs, dependencies, symbol lookup. This page covers its PyPI package (grafyx-mcp).

What tools does the Grafyx MCP server expose?

Grafyx exposes 14 tools: get_project_skeleton, get_function_context, get_file_context, get_class_context, get_module_context, and 9 more. Their descriptions and schemas cost roughly 1,763 tokens of context every time the server is loaded.

Is the Grafyx MCP server still maintained?

Grafyx is still listed as active in the MCP registry. We last reached this channel on 22 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the Grafyx MCP server under?

Grafyx declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.