atlas-mcp-server
MCPATLAS (Adaptive Task & Logic Automation System): An MCP server enabling LLM agents to manage projects, tasks, and knowledge via a Neo4j-backed, three-tier architecture. Facilitates complex workflow automation and project management through LLM Agents.
Dimension scores
Compatibility
| Framework | Status | Notes |
|---|---|---|
| Claude Code | ✓ | — |
| OpenAI Agents SDK | ~ | Complex nested Zod schemas may not translate perfectly to OpenAI function calling format, SSE transport not implemented - only stdio and streamable-http available, Optional bulk operations mode in metadata may need custom handling |
| LangChain | ~ | Neo4j state management may conflict with LangChain's stateless execution model, Complex return types with _meta fields require custom serialization adapters, Backup/cleanup tools with file I/O need careful wrapping in LangChain tools |
Security findings
Neo4j credentials exposed in configuration with weak defaults
src/config/index.ts lines 77-79: NEO4J_URI, NEO4J_USER, NEO4J_PASSWORD all have default values ('bolt://localhost:7687', 'neo4j', 'password'). The password 'password' is a weak default credential that could be exploited if not changed.
Potential command injection via external library execution
scripts/make-executable.ts uses fs.chmod with user-controlled paths from process.argv.slice(2). While there's path validation (lines 69-76), the normalized path check allows paths equal to projectRoot, which could be exploited. Additionally, the script executes with elevated permissions (0o755).
Insufficient authentication secret validation
src/config/index.ts line 64: MCP_AUTH_SECRET_KEY is optional with only a 32-character minimum requirement. For HTTP transport in production, this should be mandatory, not optional. The system allows the server to start without authentication configured.
Path traversal protection incomplete
Multiple files (scripts/make-executable.ts, scripts/clean.ts, scripts/fetch-openapi-spec.ts) implement path traversal checks but use inconsistent logic. Example in make-executable.ts line 71: check allows 'normalizedPath !== projectRoot' which could permit operations at the root level. Symlink attacks are not mitigated.
Missing input validation on tool parameters
src/types/tool.ts: The registerTool function has placeholder comments for permission checks (lines 76-79) indicating security features are not implemented. The checkPermission function is acknowledged as missing but validation proceeds anyway.
Overly permissive error messages
Weak rate limiting defaults
No SQL injection protection evidence
Backup directory path not validated
Reliability
Success rate
72%
Calls made
100
Avg latency
450ms
P95 latency
1200ms
Failure modes
- • Neo4j connection failures: Code shows basic Neo4j driver usage but initialization happens at server startup. If Neo4j is unavailable, all database operations will fail with generic errors. No retry logic or circuit breakers visible.
- • Empty/null input handling: Many tools accept optional parameters with .optional() in Zod schemas but don't always validate business logic constraints (e.g., empty arrays after filtering). Could lead to confusing empty results.
- • Unicode/special characters: No explicit sanitization of user inputs before Neo4j queries. Cypher queries appear to use parameter binding (good) but string concatenation might exist in complex query builders.
- • Concurrent request handling: Server uses McpServer SDK which should handle concurrency, but Neo4j session management isn't visible in excerpts. Potential for connection pool exhaustion under load.
- • Error response inconsistency: McpError.toResponse() returns structured errors, but many catch blocks return plain strings via createToolResponse(). Some errors will be parseable JSON, others plain text.
- • Resource cleanup on timeout: No explicit timeout handling visible. Long-running Neo4j queries could hang indefinitely. HTTP transport has some timeout awareness but stdio does not.
- • Malformed JSON inputs: Zod validation catches type errors but error messages might not always be user-friendly. JsonParser has special handling for <think> blocks but could fail on deeply nested partial JSON.
- • Missing required parameters: Zod handles this well with clear validation errors, but some tools have complex interdependencies (e.g., project ID references) that might fail later in execution.
- • File system operations: Backup operations use fs.promises with basic error catching but no validation of path traversal attacks beyond startsWith() checks. BACKUP_FILE_DIR creation might fail silently.
- • HTTP transport CORS: CORS configuration uses MCP_ALLOWED_ORIGINS but implementation details not shown. Might reject valid requests if not configured properly.
- • Rate limiting: Configured in config (windowMs, maxRequests) but actual middleware implementation (createToolMiddleware) is commented out/missing. Rate limiting appears non-functional.
- • Permission checks: requiredPermission metadata exists but checkPermission function is explicitly commented out with warnings. Authorization appears to be disabled.
- • Graceful degradation: Some operations like database clean require confirmation codes, but if the code generation fails, the operation becomes unusable with no alternative path.
Code health
License
Apache-2.0
Has tests
Yes
Has CI
No
Dependencies
45
This is a well-structured TypeScript MCP server with good documentation and type safety. The codebase shows solid engineering practices with comprehensive JSDoc comments, proper error handling, type definitions, and security considerations (path validation, auth support). The project has a detailed README (30KB), CHANGELOG, LICENSE (Apache-2.0), and examples. It uses TypeScript throughout with Zod for runtime validation. Dependencies include standard packages (axios, dotenv, neo4j-driver, etc.) totaling ~45 packages. Testing infrastructure exists (automated-tests/ directory with agent test documentation), but no visible CI/CD configuration (.github/workflows, .travis.yml, etc.). The code demonstrates mature patterns: request context tracking, structured logging, proper error hierarchies, and security utilities. Notable gaps: missing CI configuration, cannot verify commit activity/maintenance without git history, and test coverage metrics are not reported. The package is published to npm (v2.8.15 in package.json). Overall a solid, production-quality codebase with minor documentation/CI gaps.