Code Explainer MCP
A Cloudflare Worker that analyzes source code to provide comprehensive explanations including architecture diagrams, core functionality analysis, and component breakdowns across multiple programming languages.
BillDuke13
README
Code Explainer MCP
A Cloudflare Worker that serves as an MCP (Model Context Protocol) server for code explanation. It analyzes and explains code with a comprehensive breakdown of structure and functionality.
Features
- Architecture Diagram: Generates an ASCII diagram showing the overall structure, relationships between components, and data flow.
- Core Functionality Analysis: Identifies and explains the primary purpose of the code based on pattern recognition.
- Component Breakdown: Lists all main classes and functions with brief descriptions of their roles.
- Multi-language Support: Analyzes code in various programming languages including JavaScript, TypeScript, Python, Java, C#, and more.
- JSDoc/Docstring Recognition: Extracts and utilizes existing documentation in the code.
- Secure API: Bearer token authentication to secure your endpoints.
How It Works
The Code Explainer analyzes source code using a combination of techniques:
- Pattern Recognition: Identifies code structures and common patterns
- Relationship Analysis: Maps dependencies between components
- Documentation Extraction: Prioritizes existing documentation comments
- Architecture Visualization: Creates ASCII diagrams of the code structure
- Component Description: Provides semantic descriptions of functions and classes
All processing happens within the Cloudflare Worker with no external dependencies.
Installation
Prerequisites
Setup
-
Clone this repository:
git clone https://github.com/BillDuke13/code-explainer-mcp.git cd code-explainer-mcp
-
Install dependencies:
npm install
-
Configure your secret key:
- Edit
wrangler.jsonc
and replaceYOUR_SECRET_KEY_HERE
with your chosen secret key, or - Use Cloudflare secrets (recommended for production):
wrangler secret put SHARED_SECRET
- Edit
-
Deploy to Cloudflare Workers:
npm run deploy
Usage
API Endpoint
Send a POST request to your worker URL with the following JSON body:
{
"method": "explainCode",
"params": ["your code here", "programming language"]
}
Include the Authorization header with your secret key:
Authorization: Bearer YOUR_SECRET_KEY_HERE
Response Format
The response will be a JSON object with a result
field containing the code analysis:
{
"result": "# Code Analysis for JavaScript Code\n\n## Architecture Diagram\n...\n\n## Core Functionality\n..."
}
Example Usage
JavaScript (Browser)
async function explainCode(code, language) {
const response = await fetch('https://your-worker-url.workers.dev', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_SECRET_KEY_HERE',
},
body: JSON.stringify({
method: "explainCode",
params: [code, language]
}),
});
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const data = await response.json();
return data.result;
}
// Example usage
const jsCode = `function add(a, b) { return a + b; }`;
explainCode(jsCode, "javascript")
.then(explanation => console.log(explanation))
.catch(error => console.error('Error:', error));
Python (Requests)
import requests
import json
def explain_code(code, language, api_url, secret_key):
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {secret_key}'
}
payload = {
'method': 'explainCode',
'params': [code, language]
}
response = requests.post(api_url, headers=headers, json=payload)
response.raise_for_status()
return response.json()['result']
# Example usage
code = "def hello(): print('Hello, world!')"
explanation = explain_code(code, "python", "https://your-worker-url.workers.dev", "YOUR_SECRET_KEY_HERE")
print(explanation)
Node.js (Axios)
const axios = require('axios');
async function explainCode(code, language) {
try {
const response = await axios.post('https://your-worker-url.workers.dev', {
method: 'explainCode',
params: [code, language]
}, {
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_SECRET_KEY_HERE'
}
});
return response.data.result;
} catch (error) {
console.error('Error:', error.response ? error.response.data : error.message);
throw error;
}
}
// Example usage
const codeToAnalyze = `
class Person {
constructor(name) {
this.name = name;
}
sayHello() {
return \`Hello, my name is \${this.name}\`;
}
}
`;
explainCode(codeToAnalyze, 'javascript')
.then(explanation => console.log(explanation))
.catch(err => console.error('Failed to explain code:', err));
Local Development
-
Clone the repository and install dependencies:
git clone https://github.com/BillDuke13/code-explainer-mcp.git cd code-explainer-mcp npm install
-
Run the development server:
wrangler dev
-
Test the endpoint locally:
curl -X POST http://localhost:8787 \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_SECRET_KEY_HERE" \ -d '{"method":"explainCode","params":["function hello() { return \"Hello World\"; }","javascript"]}'
Development Guidelines
- Follow TypeScript best practices
- Add comments for complex logic
- Update documentation for public API changes
- Add tests for new features
Security
- The API is secured with Bearer token authentication
- Use environment secrets for storing the shared secret in production
- Do not commit your actual secret key to version control
- Rate limiting is recommended for production deployments
License
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Playwright MCP Server
Provides a server utilizing Model Context Protocol to enable human-like browser automation with Playwright, allowing control over browser actions such as navigation, element interaction, and scrolling.
MCP Package Docs Server
Facilitates LLMs to efficiently access and fetch structured documentation for packages in Go, Python, and NPM, enhancing software development with multi-language support and performance optimization.
Claude Code MCP
An implementation of Claude Code as a Model Context Protocol server that enables using Claude's software engineering capabilities (code generation, editing, reviewing, and file operations) through the standardized MCP interface.
@kazuph/mcp-taskmanager
Model Context Protocol server for Task Management. This allows Claude Desktop (or any MCP client) to manage and execute tasks in a queue-based system.
Apple MCP Server
Enables interaction with Apple apps like Messages, Notes, and Contacts through the MCP protocol to send messages, search, and open app content using natural language.
Gitingest-MCP
An MCP server for gitingest. It allows MCP clients like Claude Desktop, Cursor, Cline etc to quickly extract information about Github repositories including repository summaries, project directory structure, file contents, etc