MCP Hub
Back to servers

Synapse

Synapse indexes C# codebases into a FalkorDB-backed graph to provide deep structural insights including inheritance, interface implementations, and call chains. It enables AI assistants to query code architecture and navigate symbol relationships using an LSP-powered MCP server.

glama
Updated
Mar 9, 2026

Synapse

Work in progress. Synapse is under active development. APIs, CLI commands, and graph schema may change without notice.

Synapse is an LSP-powered, FalkorDB-backed tool that builds a queryable graph of a C# codebase. It indexes symbols, inheritance, interface implementations, method calls, and override relationships, then exposes them via an MCP server (for AI assistants) and a CLI (for humans).

Prerequisites

  • Python 3.11+
  • FalkorDB running on localhost:6379 (default)
  • .NET SDK — required for the C# language server to index projects

Start FalkorDB with Docker:

docker run -p 6379:6379 --rm falkordb/falkordb:latest

Installation

pip install -e .

This installs two entry points:

  • synapse — CLI
  • synapse-mcp — MCP server

MCP Server Setup

Add Synapse to your MCP client config (e.g. Claude Desktop's claude_desktop_config.json):

{
  "mcpServers": {
    "synapse": {
      "command": "synapse-mcp"
    }
  }
}

By default the server connects to FalkorDB at localhost:6379. There are no required environment variables.


CLI

synapse <command> [args]

Project management

CommandDescription
synapse index <path> [--language csharp]Index a project into the graph
synapse watch <path>Watch a project for file changes and keep the graph updated (runs until Ctrl+C)
synapse delete <path>Remove a project and all its graph data
synapse status [path]Show index status for one project, or list all indexed projects

Graph queries

CommandDescription
synapse symbol <full_name>Get a symbol's node and its relationships
synapse source <full_name> [--include-class]Print the source code of a symbol
synapse callers <method_full_name>Find all methods that call a given method
synapse callees <method_full_name>Find all methods called by a given method
synapse implementations <interface_name>Find all concrete implementations of an interface
synapse hierarchy <class_name>Show the full inheritance chain for a class
synapse search <query> [--kind <kind>]Search symbols by name, optionally filtered by kind (e.g. method, class)
synapse type-refs <full_name>Find all symbols that reference a given type
synapse dependencies <full_name>Find all types referenced by a given symbol
synapse context <full_name>Get the full context needed to understand or modify a symbol
synapse query <cypher>Execute a raw read-only Cypher query against the graph

Summaries

Summaries are free-text annotations attached to any symbol — useful for capturing architectural context that the graph alone doesn't convey.

CommandDescription
synapse summary get <full_name>Get the summary for a symbol
synapse summary set <full_name> <content>Set the summary for a symbol
synapse summary list [--project <path>]List all symbols that have summaries

Examples

# Index a C# project
synapse index /path/to/my/project

# Find everything that calls a specific method
synapse callers "MyNamespace.MyClass.DoWork"

# Find all classes that implement an interface
synapse implementations "IOrderService"

# See the inheritance hierarchy of a class
synapse hierarchy "MyNamespace.BaseController"

# Search for all methods containing "Payment"
synapse search "Payment" --kind method

# Get the source code for a method
synapse source "MyNamespace.MyClass.DoWork"

# Get all context needed to understand a symbol
synapse context "MyNamespace.MyClass"

# Watch for live updates while developing
synapse watch /path/to/my/project

MCP Tools

These tools are available to any MCP client connected to synapse-mcp.

Project management

ToolParametersDescription
index_projectpath: str, language: str = "csharp"Index a project into the graph
list_projectsList all indexed projects
delete_projectpath: strRemove a project from the graph
get_index_statuspath: strGet the current index status for a project
watch_projectpath: strStart watching a project for file changes
unwatch_projectpath: strStop watching a project

Graph queries

ToolParametersDescription
get_symbolfull_name: strGet a symbol's node and relationships by fully-qualified name
get_symbol_sourcefull_name: str, include_class_signature: bool = FalseGet the source code of a symbol
find_implementationsinterface_name: strFind all concrete implementations of an interface
find_callersmethod_full_name: strFind all methods that call a given method
find_calleesmethod_full_name: strFind all methods called by a given method
get_hierarchyclass_name: strGet the full inheritance chain for a class
search_symbolsquery: str, kind: str | None = NoneSearch symbols by name, optionally filtered by kind
find_type_referencesfull_name: strFind all symbols that reference a given type
find_dependenciesfull_name: strFind all types referenced by a given symbol
get_context_forfull_name: strGet the full context needed to understand or modify a symbol
execute_querycypher: strExecute a read-only Cypher query (mutating statements are blocked)

Summaries

ToolParametersDescription
set_summaryfull_name: str, content: strAttach a summary to a symbol
get_summaryfull_name: strRetrieve the summary for a symbol
list_summarizedproject_path: str | None = NoneList all symbols that have summaries, optionally scoped to a project

Graph model

Node labels

Structural nodes (identified by path):

  • :Repository — the indexed project root
  • :Directory — a directory within the project
  • :File — a source file

Symbol nodes (identified by full_name):

  • :Package — a namespace or package
  • :Class — classes, abstract classes, enums, and records (distinguished by the kind property)
  • :Interface — interfaces
  • :Method — methods (with signature, is_abstract, is_static, line properties)
  • :Property — properties (with type_name)
  • :Field — fields (with type_name)

A :Summarized label is added to any node that has a user-attached summary.

Relationships

  • CONTAINS — structural containment: Repository→Directory, Directory→File, File→Symbol, and Class/Package→nested symbols
  • IMPORTS — file imports a package/namespace
  • CALLS — method calls another method
  • OVERRIDES — method overrides a base method
  • IMPLEMENTS — class implements an interface
  • INHERITS — class inherits from another class, or interface extends another interface

Fully-qualified names (e.g. MyNamespace.MyClass.DoWork) are used as symbol identifiers throughout.


Development

python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"

# Run unit tests (no FalkorDB or .NET required)
pytest tests/unit/

# Run integration tests (requires FalkorDB on localhost:6379 and .NET SDK)
pytest tests/integration/ -m integration

Reviews

No reviews yet

Sign in to write a review