Skip to main content
Glama
zeocax

Code Analysis MCP Server

by zeocax

Code Analysis MCP Server

A modular MCP (Model Context Protocol) server for code analysis with file operations, code search, and structure analysis capabilities.

Features

šŸ“ File Operations

  • read_file: Read contents of any code file

  • list_files: List files in directories with pattern matching

  • file_info: Get detailed file information (size, type, line count)

  • search_code: Search for patterns in code using regex

  • find_definition: Find symbol definitions (functions, classes, variables)

šŸ“Š Code Analysis

  • analyze_structure: Analyze code structure (imports, classes, functions)

Installation

# Clone the repository git clone https://github.com/yourusername/code-mcp.git cd code-mcp # Create virtual environment python -m venv venv # Activate environment source venv/bin/activate # On Unix/macOS venv\Scripts\activate # On Windows # Install dependencies pip install -r requirements.txt

Usage

1. With Claude Desktop

Add to your Claude Desktop configuration file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{ "mcpServers": { "code-analyzer": { "command": "python", "args": ["/absolute/path/to/code-mcp/server.py"] } } }

Then restart Claude Desktop.

2. With Continue.dev (VS Code)

Add to your Continue configuration:

{ "models": [...], "mcpServers": { "code-analyzer": { "command": "python", "args": ["/absolute/path/to/code-mcp/server.py"] } } }

3. With Other MCP Clients

Any MCP-compatible client can use this server by pointing to the server.py file.

Available Tools

šŸ“– read_file

Read the contents of a file.

{ "tool": "read_file", "arguments": { "path": "src/main.py", "encoding": "utf-8" // optional, default: utf-8 } }

šŸ“‚ list_files

List files in a directory with optional pattern matching.

{ "tool": "list_files", "arguments": { "directory": "./src", // optional, default: current dir "pattern": "*.py", // optional, default: * "recursive": true // optional, default: false } }

ā„¹ļø file_info

Get detailed information about a file.

{ "tool": "file_info", "arguments": { "path": "src/main.py" } }

šŸ” search_code

Search for patterns in code files using regex.

{ "tool": "search_code", "arguments": { "pattern": "def.*test", // regex pattern "directory": "./src", // optional "file_pattern": "*.py", // optional "case_sensitive": false // optional, default: true } }

šŸŽÆ find_definition

Find where a symbol is defined.

{ "tool": "find_definition", "arguments": { "symbol": "MyClass", "directory": "./src", // optional "language": "python" // optional: python, javascript } }

šŸ—ļø analyze_structure

Analyze the structure of a code file.

{ "tool": "analyze_structure", "arguments": { "path": "src/main.py", "include_docstrings": true // optional, default: false } }

šŸ¤– update_with_architecture

Compare old and new architecture versions and intelligently update the new file.

{ "tool": "update_with_architecture", "arguments": { "old_file": "src/legacy/module.py", // Reference file (old architecture) "new_file": "src/modern/module.py", // Target file (will be updated) "backup": true // optional, default: true } }

AI Configuration

To use the AI-powered tools, you need to configure your API keys:

  1. Copy .env.example to .env:

    cp .env.example .env
  2. Edit .env and add your API keys:

    AI_PROVIDER=openai OPENAI_API_KEY=your-openai-api-key # or AI_PROVIDER=anthropic ANTHROPIC_API_KEY=your-anthropic-api-key

Thinking Models Support

The tool automatically handles "thinking" models (like o1, o1-preview) that include reasoning in their responses:

  • Thinking sections are automatically removed

  • Only the actual code is extracted

  • Supports various thinking formats: <think>, [thinking], etc.

  1. Install AI dependencies:

    pip install openai anthropic
  2. Test LLM connectivity:

    ./test_llm.sh # or python tests/test_llm.py

Examples

In Claude Desktop

After configuring, you can ask Claude:

  • "Read the file src/main.py"

  • "Search for all functions that contain 'test' in the src directory"

  • "Find where the class 'UserModel' is defined"

  • "Analyze the structure of app.py"

  • "List all Python files in the project"

Programmatic Usage

# Example of calling tools programmatically import asyncio from mcp import Client async def main(): client = Client() # Read a file result = await client.call_tool("read_file", { "path": "src/main.py" }) # Search for patterns result = await client.call_tool("search_code", { "pattern": "TODO|FIXME", "directory": "./", "recursive": True }) # Analyze structure result = await client.call_tool("analyze_structure", { "path": "src/main.py", "include_docstrings": True }) asyncio.run(main())

Architecture

The server follows a modular architecture:

ā”œā”€ā”€ server.py # Main MCP server ā”œā”€ā”€ tools/ # Tool definitions │ ā”œā”€ā”€ file_tools.py # File operations │ └── code_tools.py # Code analysis tools ā”œā”€ā”€ handlers/ # Request handlers │ ā”œā”€ā”€ file_handler.py │ ā”œā”€ā”€ search_handler.py │ └── analyze_handler.py └── core/ # Core services ā”œā”€ā”€ file_system.py # File system operations └── code_parser.py # Code parsing logic

Supported Languages

  • Python (.py)

  • JavaScript/TypeScript (.js, .ts, .jsx, .tsx)

  • Java (.java)

  • C/C++ (.c, .cpp, .h)

  • Go (.go)

  • Rust (.rs)

  • Ruby (.rb)

  • And more...

Security

  • File access is restricted to prevent directory traversal

  • Large files are handled efficiently with streaming

  • Search results are limited to prevent memory issues

Contributing

Feel free to submit issues and enhancement requests!

License

MIT

-
security - not tested
F
license - not found
-
quality - not tested

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/zeocax/code-mcp'

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