Skip to main content
Glama
saiprashanths

Code Analysis MCP Server

Code Analysis MCP Server

A Model Context Protocol (MCP) server that enables AI models to understand and analyze codebases through natural language conversations.

✨ Highlights

  • Natural Code Exploration: Ask high-level questions about your codebase

    "What are all the different payment providers integrated in the system?"
  • Deep Code Understanding: Extract insights about data models and system architecture

    "How does the user authentication flow work from frontend to database?"
  • Dynamic Analysis: Trace data flows and understand system relationships

    "Show me all the places where we calculate transaction fees"

Related MCP server: Notion MCP Server

Limitations

This tool is a simpler alternative to more sophisticated code analysis tools / copilot like Aider. While it lacks the advanced code analysis capabilities and robustness of tools like Aider, it offers a lightweight solution for codebase exploration if you already have a Claude Pro subscription. The main advantages are:

  • Cost-Effective: Using your existing Claude Pro subscription means no additional API costs, unlike tools that can get expensive when analyzing large codebases

  • Simple Setup: Quick to get started with minimal configuration

  • Basic Analysis: Good for high-level code understanding and exploration

Note that due to its simpler approach to code analysis, it may make more errors or provide less detailed insights compared to more specialized tools.

🚀 Quick Start

  1. Install the server:

git clone https://github.com/saiprashanths/code-analysis-mcp.git
cd code-analysis-mcp
  1. Install Claude Desktop App. For more instructions on setting up an MCP Server with Claude Desktop app, see docs

  2. Configure the server in Claude Desktop's configuration file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "code-analysis": {
      "command": "uv",
      "args": [
        "--directory",
        "/PATH/TO/YOUR/REPO",
        "run",
        "code_analysis.py"
      ]
    }
  }
}
  1. Restart Claude Desktop and start analyzing your code!

  2. Ensure the tool is correctly setup

  • Clicking the tools icon should display the code-analysis tools

  • Clicking the integrations button should display the analyze_code_repository prompt

💡 Example Usage

Here's how you might use the tool to understand a complex codebase:

Start by clicking on the analyze_code_repository prompt shown below. That will guide you through the process to initialize the repo and get started.

You: How does the transaction processing work in this system?

Claude: Let me analyze the data flow for transactions. 
Looking at the codebase, I can see that transaction processing happens through several key components:

1. Raw transaction data is captured in the `TransactionEvent` model with fields for:
   - Payment status
   - Amount
   - Fee calculations
   - Processing timestamps

2. This data is then processed through the PaymentSummary model, which:
   - Validates payment provider responses
   - Calculates processing fees
   - Records transaction status

Would you like me to explain any part of this in more detail?

You: What are the key database tables involved?

Claude: The main tables in the transaction processing pipeline are:

1. transaction_events: Stores raw payment events
2. payment_summary: Processed transaction records
3. payment_providers: Provider configuration
4. merchant_accounts: Account-specific settings

Let me know if you'd like to see the schema for any of these tables!

🔧 Available Tools

initialize_repository

Initialize a code repository for analysis:

initialize_repository("/path/to/repo")
# Output: Successfully initialized code repository at: /path/to/repo

get_repo_info

Retrieve information about the initialized repository:

get_repo_info()
# Output:
# Code Repository Information:
# Path: /path/to/repo
# Exists: True
# Is Directory: True
# Found .gitignore file

get_repo_structure

Examine repository file structure:

get_repo_structure(depth=2)
# Output:
# 📁 src/
#   📁 api/
#     📄 routes.py
#     📄 models.py
#   📁 utils/
#     📄 helpers.py
#   📄 main.py

read_file

Read and analyze specific files:

read_file("src/api/models.py")
# Output:
# File: src/api/models.py
# Language: python
# Size: 2.3 KB
# 
# [File contents...]

⚙️ Technical Details

  • Default scanning depth: 3 levels

  • Maximum file size: 1MB

  • Maximum lines per file: 1000

  • Ignores paths listed in .gitignore

  • Local file system access only

  • Validates file paths to prevent directory traversal

📝 License

This project is licensed under the MIT License - see the LICENSE file for details.

Available Tools

4 tools
get_repo_infoB

Get information about the currently initialized code repository.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool gets information, implying a read-only operation, but doesn't specify what type of information (e.g., metadata, status, details) or any behavioral traits like error handling, permissions needed, or response format. This leaves significant gaps for a 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without any unnecessary words. It is front-loaded and wastes no space, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (simple read operation) but lack of annotations and output schema, the description is incomplete. It doesn't explain what information is returned, potential errors, or how it differs from siblings, leaving the agent with insufficient context to use it effectively beyond basic purpose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, and the schema description coverage is 100%, so no parameter documentation is needed. The description appropriately doesn't mention parameters, aligning with the schema. A baseline of 4 is applied as it handles the zero-parameter case correctly without redundancy.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Get information') and resource ('currently initialized code repository'), making the purpose unambiguous. However, it doesn't differentiate from sibling tools like 'get_repo_structure' or 'initialize_repository', 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides minimal guidance by implying usage when a repository is 'currently initialized,' but it doesn't specify when to use this tool versus alternatives like 'get_repo_structure' or 'initialize_repository.' No explicit when-not-to-use or prerequisite information is included.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_repo_structureB

Get the structure of files and directories in the repository.

Args:
    sub_path: Optional subdirectory path relative to repository root
    depth: Optional maximum depth to traverse (default is 3)
ParametersJSON Schema
NameRequiredDescriptionDefault
sub_pathNo
depthNo

TDQS

B3.3/5.0
Behavior2/5

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 what the tool does but lacks behavioral details such as whether this is a read-only operation, potential rate limits, error conditions, or the format of the returned structure. The description doesn't contradict annotations, but it's insufficient for a mutation-free 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded with the purpose in the first sentence, followed by parameter details. It's efficient with no wasted sentences, though the parameter explanations could be slightly more integrated into the flow.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (2 optional parameters) and lack of annotations or output schema, the description is partially complete. It covers the purpose and parameters well but misses behavioral context and usage guidelines, leaving gaps for an AI agent to understand full tool behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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 'sub_path' is an 'Optional subdirectory path relative to repository root' and 'depth' is an 'Optional maximum depth to traverse (default is 3)', providing clear semantics and default values not present in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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 structure of files and directories in the repository.' This is a specific verb ('Get') and resource ('structure of files and directories'), though it doesn't explicitly distinguish from sibling tools like 'get_repo_info' or 'read_file'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 'get_repo_info' (which might provide metadata) or 'read_file' (which reads file contents), nor does it specify prerequisites or exclusions for usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

initialize_repositoryC

Initialize the repository path for future code analysis operations.

Args:
    path: Path to the repository root directory that contains the code to analyze
ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

TDQS

C2.9/5.0
Behavior2/5

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 initializes a path for future operations, but doesn't explain what 'initialize' entails (e.g., does it cache data, set up configurations, or validate the path?). It also omits details like error handling, permissions needed, or side effects, leaving significant gaps for a tool with no annotation support.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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 a brief parameter explanation. There's no wasted text, and the structure is clear. However, it could be slightly more efficient by integrating the parameter info more seamlessly, preventing a perfect score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (a setup tool with no annotations, no output schema, and low schema coverage), the description is incomplete. It doesn't explain what happens after initialization (e.g., success/failure states, return values, or how it interacts with sibling tools like 'read_file'). For a tool that likely enables other operations, more context on its role and outcomes is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds some meaning beyond the input schema: it explains that 'path' is 'Path to the repository root directory that contains the code to analyze,' clarifying the parameter's purpose. However, with 0% schema description coverage and only one parameter, the baseline is 4 for zero parameters, but here it's reduced to 3 because the description doesn't fully compensate for the lack of schema details (e.g., format expectations like absolute vs. relative paths).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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 the repository path for future code analysis operations.' It specifies the verb ('initialize') and resource ('repository path'), making the action explicit. However, it doesn't distinguish this from sibling tools like 'get_repo_info' or 'get_repo_structure', 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides minimal guidance: it implies this tool should be used before other code analysis operations. However, it doesn't specify when to use it versus alternatives (e.g., if 'get_repo_info' might also initialize a path), nor does it mention prerequisites or exclusions. This lack of explicit context limits its utility for an AI agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_fileB

Read and display the contents of a file from the repository.

Args:
    file_path: Path to the file relative to repository root
ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool reads and displays file contents, implying a read-only operation, but lacks details on permissions, error handling (e.g., for missing files), output format (e.g., text vs. raw bytes), or limitations (e.g., file size constraints). This leaves significant gaps in understanding how the tool behaves beyond its basic function.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized with two sentences: a clear purpose statement and parameter explanation. It's front-loaded with the core function, and the parameter note adds necessary detail without redundancy. However, the formatting with 'Args:' could be slightly more integrated for optimal flow.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (one parameter, no output schema, no annotations), the description is minimally complete but has gaps. It covers the basic purpose and parameter semantics but lacks usage guidelines, behavioral details, and output information, making it adequate for simple tasks but insufficient for robust agent operation in varied scenarios.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds meaningful context for the single parameter 'file_path' by specifying it's 'relative to repository root', which clarifies usage beyond the schema's basic type definition. With 0% schema description coverage and only one parameter, this compensates adequately, though it doesn't detail format constraints (e.g., path syntax).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Read and display the contents') and resource ('a file from the repository'), distinguishing it from sibling tools like get_repo_info (repository metadata) and get_repo_structure (directory listing). It precisely communicates what the tool does without being vague or tautological.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. While it implies usage for reading file contents, it doesn't specify prerequisites (e.g., repository must be initialized), exclusions (e.g., binary files), or comparisons to sibling tools like get_repo_structure for browsing directories. This leaves the agent without contextual decision-making help.

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. Dates show when Glama detected each change.

  1. 4 tool updates
    • First observedget_repo_info
    • First observedget_repo_structure
    • First observedinitialize_repository
    • First observedread_file

TDQS

A3.5/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: initialize_repository sets up the context, get_repo_info provides metadata, get_repo_structure shows the file hierarchy, and read_file accesses file contents. There is no overlap in functionality, making tool selection straightforward for an agent.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern (e.g., initialize_repository, get_repo_info, get_repo_structure, read_file). The naming is uniform and predictable, using snake_case throughout with clear action descriptors.

Tool Count4/5

With 4 tools, the count is reasonable for a code analysis server, covering core operations like initialization, metadata retrieval, structure viewing, and file reading. However, it feels slightly thin, as advanced analysis features (e.g., linting, dependency checks) are absent, though not essential for basic functionality.

Completeness3/5

The toolset covers basic repository operations (initialize, info, structure, read), but there are notable gaps for a code analysis domain, such as missing tools for analyzing code quality (e.g., lint, test), searching within files, or modifying content. Agents can perform foundational tasks but may hit dead ends for deeper analysis.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • The Ramp MCP server enables users to securely connect Ramp with AI assistants like ChatGPT and Claude to query financial data and take actions using natural language. It transforms Ramp's developer API into a SQL interface that LLMs can query, allowing admins to analyze spend trends, identify cost savings, and run complex SQL analyses on comprehensive datasets (transactions, purchase orders, vendors, users), while all users can manage cards, view transactions, request reimbursements, and get expense policy answers.

  • Enterprise code intelligence for M&A, security audits, and tech debt. Hosted server with 200k free.

  • Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer

  • The Cortex MCP server provides read-only access to real-time engineering context from the Cortex developer portal, allowing AI coding assistants to answer natural language questions about your organization's catalog (microservices, libraries, domains, teams, infrastructure), scorecards (engineering standards and best practices), initiatives (goals and deadlines), and Engineering Intelligence metrics. It includes tools for querying documentation, tracking personal entities, and accessing AI-assisted insights across the entire Cortex ecosystem.

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/saiprashanths/code-analysis-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server