Skip to main content
Glama
README.md
# Nuanced MCP Server

A [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server that provides call graph analysis capabilities to LLMs through the [nuanced](https://github.com/nuanced-dev/nuanced) library.

## Overview

This MCP server enables LLMs to understand code structure by accessing function call graphs through standardized tools and resources. It allows AI assistants to:

- Initialize call graphs for Python repos
- Explore function call relationships
- Analyze dependencies between functions
- Provide more contextually aware code assistance

## API

### Tools

- **initialize_graph**

  - Initialize a code graph for the given repository path
  - Input: `repo_path` (string)

- **switch_repository**

  - Switch to a different initialized repository
  - Input: `repo_path` (string)

- **list_repositories**

  - List all initialized repositories
  - No inputs required

- **get_function_call_graph**

  - Get the call graph for a specific function
  - Inputs:
    - `file_path` (string)
    - `function_name` (string)
    - `repo_path` (string, optional) - uses active repository if not specified

- **analyze_dependencies**

  - Find all module or file dependencies in the codebase
  - Inputs (at least one required):
    - `file_path` (string, optional)
    - `module_name` (string, optional)

- **analyze_change_impact**
  - Analyze the impact of changing a specific function
  - Inputs:
    - `file_path` (string)
    - `function_name` (string)

### Resources

- **graph://summary**

  - Get a summary of the currently loaded code graph
  - No parameters required

- **graph://repo/{repo_path}/summary**

  - Get a summary of a specific repository's code graph
  - Parameters:
    - `repo_path` (string) - Path to the repository

- **graph://function/{file_path}/{function_name}**
  - Get detailed information about a specific function
  - Parameters:
    - `file_path` (string) - Path to the file containing the function
    - `function_name` (string) - Name of the function to analyze

### Prompts

- **analyze_function**

  - Create a prompt to analyze a function with its call graph
  - Parameters:
    - `file_path` (string) - Path to the file containing the function
    - `function_name` (string) - Name of the function to analyze

- **impact_analysis**

  - Create a prompt to analyze the impact of changing a function
  - Parameters:
    - `file_path` (string) - Path to the file containing the function
    - `function_name` (string) - Name of the function to analyze

- **analyze_dependencies_prompt**
  - Create a prompt to analyze dependencies of a file or module
  - Parameters (at least one required):
    - `file_path` (string, optional) - Path to the file to analyze
    - `module_name` (string, optional) - Name of the module to analyze

## Usage with Claude Desktop

Add this to your `claude_desktop_config.json`

### UV

```json
{
  "mcpServers": {
    "nuanced": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/nuanced-mcp",
        "run",
        "nuanced_mcp_server.py"
      ]
    }
  }
}
```

TDQS

B3.2/5.0

Scored across 6 tools

Disambiguation4/5

Most tools have distinct purposes: analyze_change_impact focuses on modification consequences, analyze_dependencies finds what depends on a module, get_function_call_graph shows function call relationships, and the last three handle repository management. However, analyze_dependencies and get_function_call_graph could be confused as both involve dependency/call analysis, though their descriptions clarify one is module-level and the other function-level.

Naming Consistency4/5

The naming follows a consistent verb_noun pattern throughout (e.g., analyze_change_impact, get_function_call_graph, list_repositories), with all tools using snake_case. The only minor deviation is that 'initialize_graph' uses a verb without a clear noun object, but it still fits the overall pattern.

Tool Count5/5

With 6 tools, the count is well-scoped for a code analysis server. It covers core functions like impact analysis, dependency tracking, call graph generation, and repository management, with each tool earning its place without being overwhelming or too sparse.

Completeness3/5

The server covers key code analysis operations (impact, dependencies, call graphs) and repository management, but there are notable gaps. For example, it lacks tools for updating or deleting initialized repositories, and there's no way to clear or reset graphs, which could leave agents in dead ends when managing repository states.

Maintenance

ActivityInactive
ResponsivenessNo issues