Nuanced MCP Server
섬세한 MCP 서버
LLM에 뉘앙스 라이브러리를 통해 호출 그래프 분석 기능을 제공하는 MCP(모델 컨텍스트 프로토콜) 서버입니다.
개요
이 MCP 서버는 LLM이 표준화된 도구와 리소스를 통해 함수 호출 그래프에 접근하여 코드 구조를 이해할 수 있도록 지원합니다. AI 어시스턴트는 이를 통해 다음과 같은 작업을 수행할 수 있습니다.
Python 저장소에 대한 호출 그래프 초기화
함수 호출 관계 탐색
함수 간 종속성 분석
더욱 상황에 맞는 코드 지원을 제공합니다.
Related MCP server: Axon.MCP.Server
API
도구
초기화_그래프
주어진 저장소 경로에 대한 코드 그래프를 초기화합니다.
입력:
repo_path(문자열)
스위치_리포지토리
다른 초기화된 저장소로 전환
입력:
repo_path(문자열)
저장소 목록
초기화된 모든 저장소 나열
입력이 필요하지 않습니다
get_function_call_graph
특정 함수에 대한 호출 그래프 가져오기
입력:
file_path(문자열)function_name(문자열)repo_path(문자열, 선택 사항) - 지정하지 않으면 활성 저장소를 사용합니다.
종속성 분석
코드베이스에서 모든 모듈 또는 파일 종속성을 찾습니다.
입력 사항(최소 1개 이상 필요):
file_path(문자열, 선택 사항)module_name(문자열, 선택 사항)
변화_영향_분석
특정 기능 변경의 영향 분석
입력:
file_path(문자열)function_name(문자열)
자원
그래프://요약
현재 로드된 코드 그래프 요약을 가져옵니다.
매개변수가 필요하지 않습니다
그래프://repo/{repo_path}/요약
특정 저장소의 코드 그래프 요약을 가져옵니다.
매개변수:
repo_path(문자열) - 저장소 경로
그래프://함수/{파일_경로}/{함수_이름}
특정 기능에 대한 자세한 정보를 얻으세요
매개변수:
file_path(문자열) - 함수가 포함된 파일의 경로function_name(문자열) - 분석할 함수의 이름
프롬프트
분석 함수
호출 그래프를 사용하여 함수를 분석하기 위한 프롬프트를 만듭니다.
매개변수:
file_path(문자열) - 함수가 포함된 파일의 경로function_name(문자열) - 분석할 함수의 이름
영향 분석
함수 변경의 영향을 분석하기 위한 프롬프트를 만듭니다.
매개변수:
file_path(문자열) - 함수가 포함된 파일의 경로function_name(문자열) - 분석할 함수의 이름
종속성 분석 프롬프트
파일이나 모듈의 종속성을 분석하기 위한 프롬프트를 만듭니다.
매개변수(최소 하나 이상 필요):
file_path(문자열, 선택 사항) - 분석할 파일의 경로module_name(문자열, 선택 사항) - 분석할 모듈의 이름
Claude Desktop과 함께 사용
claude_desktop_config.json 에 이것을 추가하세요
자외선
지엑스피1
Available Tools
6 toolsanalyze_change_impactC
Analyze the impact of changing a specific function.
This tool performs a comprehensive impact analysis to help understand what would be affected if you modify the specified function.
Args: file_path: Path to the file containing the function function_name: Name of the function to analyze
Returns: A detailed analysis of the potential impact of changing the function
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| function_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions 'comprehensive impact analysis' but doesn't disclose behavioral traits like whether this is a read-only operation, if it requires specific permissions, execution time, rate limits, or what 'impact' entails (e.g., dependencies, side effects). The description is vague about the tool's behavior beyond its basic purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded: the first sentence states the purpose clearly. The Args and Returns sections add structure, though 'Returns' is redundant since it just restates the purpose. No unnecessary sentences, but could be more efficient by integrating parameter info.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, 0% schema coverage, and no output schema, the description is incomplete. It lacks details on what the analysis includes, output format, error conditions, or how it differs from siblings. For a tool with two parameters and potential complexity in impact analysis, this is inadequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It lists both parameters ('file_path' and 'function_name') in the Args section, providing basic semantics. However, it doesn't add meaning beyond naming them—no details on format, constraints, or examples. With 0% coverage, this partial compensation earns a baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Analyze the impact of changing a specific function' and 'performs a comprehensive impact analysis'. It specifies the verb (analyze) and resource (function), but doesn't explicitly differentiate from sibling tools like 'analyze_dependencies' or 'get_function_call_graph', which might have overlapping purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'analyze_dependencies' or 'get_function_call_graph', nor does it specify prerequisites, exclusions, or contextual triggers for usage. The only implied usage is when you want to understand impact before modifying a function.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_dependenciesB
Find all module or file dependencies in the codebase.
Identifies all function dependencies for a file or module in the active repository. This identifies all modules that depend on the specified module or file.
Args: file_path: Path to a specific file to analyze dependencies for module_name: Name of a module to analyze dependencies for (e.g., 'auth' will match 'app.auth', 'auth.users', etc.)
Returns: A list of all functions and files that depend on the specified module
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | No | ||
| module_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It describes the tool's function but lacks critical behavioral details: it doesn't mention if this is a read-only operation, what permissions are required, whether it works on saved or unsaved code, how it handles errors, or if there are rate limits. The description is functional but misses key operational context needed for safe and effective use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded: the first sentence states the core purpose, followed by elaboration and parameter details. It avoids redundancy and uses clear sections (Args, Returns). However, the second sentence is somewhat repetitive of the first, and the structure could be slightly tighter by combining related ideas.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (dependency analysis with 2 parameters) and lack of annotations or output schema, the description is moderately complete. It covers purpose and parameters well but misses behavioral aspects like safety, performance, and error handling. The return value description is vague ('A list of all functions and files'), lacking format details. For a tool with no structured support, this leaves gaps in operational understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant meaning beyond the input schema, which has 0% description coverage. It explains that 'file_path' is for a specific file and 'module_name' matches patterns like 'app.auth' or 'auth.users', clarifying how parameters work semantically. This compensates well for the schema's lack of documentation, though it could note that only one parameter should be used at a time or provide examples of valid paths.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Find all module or file dependencies in the codebase' and 'Identifies all function dependencies for a file or module in the active repository.' It specifies the verb ('find', 'identifies') and resource ('dependencies', 'modules/files'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from siblings like 'analyze_change_impact' or 'get_function_call_graph', which likely have related but distinct purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It mentions analyzing dependencies but doesn't specify scenarios, prerequisites, or exclusions. For example, it doesn't clarify if this should be used for impact analysis vs. 'analyze_change_impact' or for dependency graphs vs. 'get_function_call_graph'. This lack of context leaves the agent guessing about appropriate use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_function_call_graphC
Get the call graph for a specific function.
Args: file_path: Path to the file containing the function function_name: Name of the function to analyze repo_path: Optional repository path (uses active repository if not specified)
Returns: Information about the function's call graph
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| function_name | Yes | ||
| repo_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool 'Get[s] the call graph' but doesn't explain what a 'call graph' entails, whether it's read-only or has side effects, or any performance or permission considerations. For a tool with no annotations, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections for purpose, arguments, and returns, and it's front-loaded with the main purpose. It's concise with no wasted sentences, though the parameter descriptions could be more detailed without sacrificing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of analyzing function call graphs, no annotations, no output schema, and low schema description coverage (0%), the description is incomplete. It lacks details on the return format, error handling, or behavioral traits, making it inadequate for a tool with 3 parameters and no structured support.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description includes an 'Args' section that lists and briefly describes the three parameters, adding meaning beyond the input schema, which has 0% description coverage. However, the descriptions are minimal (e.g., 'Path to the file containing the function') and don't provide detailed semantics like format examples or constraints, so it partially compensates but not fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get the call graph for a specific function.' This specifies the verb ('Get') and resource ('call graph'), making it easy to understand what the tool does. However, it doesn't differentiate from sibling tools like 'analyze_dependencies' or 'analyze_change_impact,' which might have overlapping functionality, so it doesn't reach the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'analyze_dependencies' or 'analyze_change_impact,' nor does it specify prerequisites or exclusions. The only implied context is analyzing functions, but this is insufficient for effective tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
initialize_graphC
Initialize a code graph for the given repository path.
Args: repo_path: Path to the repository to analyze
Returns: Success message with information about the initialized graph
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that the tool initializes a graph and returns a success message, but lacks critical details such as whether this is a one-time setup, if it requires specific permissions, what happens if the graph already exists, or any performance implications. This is inadequate for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, with the core purpose stated first, followed by brief sections for args and returns. Each sentence earns its place, though the structure is minimal and could be more polished.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (initializing a graph, likely a mutation), lack of annotations, no output schema, and low schema coverage, the description is incomplete. It doesn't explain what 'initializing' entails, potential side effects, or error conditions, making it insufficient for safe and effective use by an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, so the description must compensate. It adds meaning by explaining that 'repo_path' is the 'Path to the repository to analyze', which clarifies the parameter's purpose beyond the schema's basic type. However, it doesn't provide format details (e.g., absolute vs. relative paths) or examples, leaving some gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Initialize a code graph for the given repository path.' It specifies the verb ('Initialize') and resource ('code graph'), and while it doesn't explicitly differentiate from siblings like 'analyze_dependencies' or 'get_function_call_graph', the focus on initialization is distinct enough for clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., if the repository must be listed first), exclusions, or how it relates to sibling tools like 'list_repositories' or 'switch_repository', leaving the agent with no usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_repositoriesB
List all initialized repositories.
Returns: List of initialized repositories
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the tool lists repositories and returns a list, but lacks critical behavioral details: it doesn't specify the format of the returned list (e.g., names, paths, metadata), whether it includes all repositories or only accessible ones, or any permissions required. For a tool with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise with two short sentences that directly state the action and return value. It's front-loaded with the main purpose. However, the second sentence ('Returns: List of initialized repositories') is somewhat redundant with the first, slightly reducing efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what 'initialized' means in this context, the structure of the returned list, or any error conditions. For a tool that likely interacts with a repository system, more context on behavior and output is needed to be fully helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and schema description coverage is 100% (since there are no parameters to describe). The description doesn't need to add parameter semantics beyond the schema, so it meets the baseline of 4 for tools with no parameters. It correctly omits any parameter discussion, which is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('initialized repositories'), making the purpose immediately understandable. It distinguishes from siblings like 'analyze_change_impact' or 'get_function_call_graph' by focusing on listing rather than analysis. However, it doesn't explicitly differentiate from 'switch_repository' which might also involve repository selection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., whether repositories must be initialized first), nor does it contrast with siblings like 'switch_repository' for repository selection or 'initialize_graph' for setup. Usage is implied but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
switch_repositoryC
Switch to a different initialized repository.
Args: repo_path: Path to the repository to switch to
Returns: Success message or error
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool switches repositories and returns a success/error message, but lacks details on side effects (e.g., whether this affects other operations), permissions needed, or error conditions. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, with the core purpose stated first. The 'Args' and 'Returns' sections add structure, though they could be more integrated. There's no wasted text, but the lack of detailed guidance slightly reduces efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (a mutation operation with no annotations, 1 parameter at 0% schema coverage, and no output schema), the description is incomplete. It doesn't cover behavioral traits, parameter details, or usage context, making it inadequate for safe and effective agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for undocumented parameters. It adds minimal value: it names the parameter ('repo_path') and states it's a 'Path to the repository to switch to,' but doesn't explain format (e.g., absolute vs. relative), examples, or constraints. This is insufficient given the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Switch to a different initialized repository.' This specifies the verb ('switch') and resource ('initialized repository'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'list_repositories' or 'initialize_graph,' which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., that repositories must be initialized first), exclusions, or comparisons with siblings like 'list_repositories' for checking available repos. This leaves the agent without context for proper tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v1.0.0- First observed
analyze_change_impact - First observed
analyze_dependencies - First observed
get_function_call_graph - First observed
initialize_graph - First observed
list_repositories - First observed
switch_repository
TDQS
Scored across 6 tools
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.
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.
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.
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
Related MCP Connectors
Repository knowledge graph MCP server for codebase understanding and debugging.
Hosted code graph over MCP: exact callers, dependencies, and cross-repo blast radius for AI agents.
An MCP server that gives your AI access to the source code and docs of all public github repos
Codebase graphs, caller impact analysis, and recorded project context for AI coding agents.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that transforms codebases into knowledge graphs using Neo4J, enabling AI assistants to understand code structure, relationships, and metrics for more context-aware assistance.28MIT
- FlicenseNot gradedqualityDmaintenanceAn MCP server that transforms codebases into intelligent, queryable knowledge bases, enabling AI assistants to perform semantic search, explore architecture, and analyze code relationships.166-
- AlicenseNot gradedqualityDmaintenanceMCP server that exposes Python function- and module-level call graphs for agentic coding clients, enabling tools like callers_of, callees_of, and neighborhood queries.MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server that provides ultra-efficient code exploration through AST analysis, reducing LLM token usage by up to 95% while enabling instant call graph generation and dependency analysis for massive codebases.MIT