ai-backend-performance-mcp
Enables AI agents to perform read-only static analysis of Node.js backend projects, detecting database query anti-patterns, async bottlenecks, connection pooling mistakes, and dependency hygiene issues while returning structured evidence-backed findings.
README
ai-backend-performance-mcp
Static analysis MCP server for Node.js backend performance issues. AI agents can inspect a project for database query anti-patterns, async bottlenecks, connection pooling mistakes, and dependency hygiene problems — without modifying your code.
Why this project?
Backend performance issues often hide in plain sight: N+1 queries in loops, clients created per request, sequential awaits that could run in parallel, or dependencies misclassified in package.json. This MCP server exposes those patterns as structured, evidence-backed findings that AI coding assistants can reason about.
What it does
- Read-only static analysis of JavaScript/TypeScript source files
- Six focused MCP tools for common backend performance categories
- Structured findings with severity, confidence, code snippets, and recommendations
- Distinguishes confirmed evidence from potential issues
What it does not do
- Execute your application or repository code
- Modify files, install packages, or change indexes
- Replace profiling, load testing, or database
EXPLAINanalysis
Architecture
flowchart TD
Client[MCP Client / AI Agent]
Server[MCP Server]
Tools[MCP Tools]
Engine[Analysis Engine]
Analyzers[Individual Analyzers]
Findings[Structured Findings]
Client --> Server
Server --> Tools
Tools --> Engine
Engine --> Analyzers
Analyzers --> Findings
Findings --> Tools
Tools --> Server
Server --> Client
See docs/architecture.md for layer details.
Analyzers
| Analyzer | Detects |
|---|---|
| Database queries | N+1 patterns, unbounded finds/queries |
| MongoDB indexes | Filter/sort fields without matching createIndex |
| Async patterns | await in loops, sequential awaits, blocking sync ops |
| Connection pooling | Client/pool creation in handlers or loops |
| Dependencies | Unused deps, dev/prod misclassification, lockfile stats |
MCP Tools
| Tool | Description |
|---|---|
analyze_project |
Full scan with grouped findings and summary |
analyze_database_queries |
MongoDB/PostgreSQL query patterns |
analyze_indexes |
MongoDB index coverage heuristics |
analyze_async_patterns |
Async/await performance patterns |
analyze_connection_pooling |
Connection lifecycle anti-patterns |
analyze_dependencies |
package.json / lockfile hygiene |
Tool reference: docs/tools.md
Installation
npm install ai-backend-performance-mcp
Or run directly:
npx ai-backend-performance-mcp
MCP configuration
Add to your MCP client config (example for Cursor / Claude Desktop):
{
"mcpServers": {
"backend-performance": {
"command": "npx",
"args": ["-y", "ai-backend-performance-mcp"],
"env": {}
}
}
}
For local development:
{
"mcpServers": {
"backend-performance": {
"command": "node",
"args": ["/absolute/path/to/ai-backend-performance-mcp/dist/index.js"]
}
}
}
Usage
Invoke any tool with a projectPath pointing to a Node.js backend repository:
{
"projectPath": "/path/to/your/api"
}
Example output (truncated)
{
"projectPath": "/app/examples/sample-node-api",
"technologies": ["express", "mongodb"],
"metadata": {
"packageName": "sample-node-api",
"packageVersion": "1.0.0",
"sourceFileCount": 4
},
"findings": [
{
"category": "pooling",
"severity": "critical",
"title": "Connection or client created in request handler",
"evidence": {
"kind": "confirmed",
"snippet": "const client = await MongoClient.connect(...)"
},
"confidence": 0.9,
"recommendation": "Create a shared client/pool at module scope and reuse it."
}
],
"summary": {
"totalFindings": 6,
"confirmedCount": 3,
"potentialCount": 3
}
}
Try the included demo project at examples/sample-node-api.
Safety
- Read-only: never writes to analyzed projects
- Path validation: prevents traversal outside
projectPath - No code execution: parses source text only; does not run repository code
- Untrusted input: treat analyzed repos as untrusted
Limitations
- Static analysis only; findings that depend on cluster state stay
potential - Dynamic
require()/ runtime-generated queries are not fully tracked - Index analysis compares in-repo
createIndexcalls only (not Atlas/ops-managed indexes) and stays silent when the repo defines none Array.find, batched$in/ANY(),_idlookups, and module-scope DB clients are not treated as issues- Sequential awaits are flagged only when they do not consume prior bindings;
Promise.allis never reported as a finding - Dependency unused detection is import-scan based
- Redis-specific rules are planned but not implemented in v0.1.0
Development
git clone https://github.com/robinafaruqia/ai-backend-performance-mcp.git
cd ai-backend-performance-mcp
npm install
npm run typecheck
npm run lint
npm test
npm run build
See docs/development.md.
Testing
npm test
Fixture projects under tests/fixtures/ pair problematic and valid code for N+1 queries, indexes, async, pooling, and dependencies so analyzers do not fire on every await, query, loop, or connection.
Roadmap
- [ ] Redis/cache analyzer
- [ ] Prisma/TypeORM-specific query rules
- [ ] ProjectContext caching
- [ ] SARIF/JSON report export
- [ ] Configurable severity thresholds
Contributing
Contributions are welcome! See CONTRIBUTING.md and CODE_OF_CONDUCT.md.
License
MIT — see LICENSE.
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.
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.
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.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
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.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
E2B
Using MCP to run code via e2b.