Virtual Engineer MCP Server
Provides tools for querying MongoDB Atlas operational data (assets, alarms, telemetry, service history) and performing vector and hybrid search over knowledge and case notes, enabling AI agents to retrieve relevant chiller troubleshooting information.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Virtual Engineer MCP ServerHelp me troubleshoot alarm A1.01 on chiller CH-ATL-003."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Virtual Engineer
AI-assisted troubleshooting for field engineers — a runnable demo that shows how an LLM agent grounded in MongoDB Atlas can surface expert-level diagnostic guidance without Level 2 escalation.
When an engineer describes a symptom, the system automatically surfaces the unit's current alarm state, recent operational telemetry, and prior repair history to identify the most likely root cause and recommended next steps. Two audience-specific interfaces are included: a structured evidence view for technical staff and a conversational interface for field teams.
Context
Commercial HVAC equipment generates a constant stream of alarms, telemetry, and work-order data that is rarely connected at the point of diagnosis. A field engineer on-site typically has access to an alarm code and a gut feeling — not the 8-month prior service record, the rising motor temperature trend that preceded the fault, or the knowledge article that recommends PTC sensor inspection before compressor replacement.
Virtual Engineer closes that gap. It is designed to demonstrate MongoDB Atlas as the operational backbone for an agentic field-service AI: deterministic lookups for factual grounding, hybrid semantic search for knowledge and case retrieval, time-series telemetry for trend analysis, and a session/feedback layer for continuous improvement.
Related MCP server: Florentine.ai MCP Server
Architecture
Browser (React + Vite)
│ SSE /api/chat
▼
Express Server ──► LLM Agent (OpenAI / Anthropic / Grove)
│ │ tool calls
│ MCP HTTP client
│ │
▼ ▼
MCP Server (20 tools)
│
▼
MongoDB Atlas
├── Atlas Database chillers, sites, alarms, telemetry, service tickets
├── Atlas Vector Search semantic search on knowledge_documents + service_tickets
├── Atlas Text Search lexical search for $rankFusion hybrid queries
├── Native Reranking Voyage $rerank after hybrid candidate generation
└── Time Series 7-day hourly telemetry per chillerTwo-layer retrieval strategy
Layer | Pattern | Tools |
Deterministic | Exact finds, |
|
Probabilistic | Hybrid |
|
The agent always resolves asset and operational facts first (deterministic), then expands into knowledge and case retrieval (probabilistic). Tool sequences are chosen dynamically by the LLM — nothing is scripted.
Atlas services used
Atlas Database — operational collections
Atlas Vector Search — autoEmbed on
knowledge_documents.contentandservice_tickets.case_notesAtlas Text Search — lexical index for
$rankFusionhybrid searchAtlas Hybrid Search (
$rankFusion) — Reciprocal Rank Fusion combining vector + lexical results natively (requires MongoDB 8.1+ or 8.0 with a support-case feature flag)Native Reranking (
$rerank) — Voyage cross-encoder rerank in the same aggregation after$rankFusion(MongoDB 8.3+, project toggle; Preview). Default model:rerank-2.5-lite. See Enable Native Reranking below.Time Series collection —
telemetry, withtimeField: timestamp,metaField: chiller_id,granularity: minutes
MCP server
Built on @modelcontextprotocol/sdk with Streamable HTTP transport. The server exposes 20 tools across five categories:
Category | Tools |
Asset & site |
|
Alarms |
|
Telemetry & state |
|
Service history |
|
Knowledge & cases |
|
Session & feedback |
|
Every tool response includes a query_insight object (access pattern, collection, pipeline summary) that the UI surfaces in real time.
LLM agent
Stateless tool-use loop configured via AGENT_MAX_STEPS (default: 12). Supports four providers:
| Gateway | Key |
| Direct |
|
| Direct |
|
| MongoDB Grove |
|
| MongoDB Grove |
|
Demo UI
Single-page React app (Vite) with three tabs, all sharing a single ChatContext SSE stream:
Overview — architecture diagram, Atlas service inventory, scenario picker with starter prompts
Evidence Board — technical view: structured evidence cards, agent flow timeline, query inspector (shows MongoDB access patterns as each tool fires)
Field Chat — conversational interface with X-ray mode to expose tool calls inline
Demo scenarios
Chiller | Site | Active alarm | What it demonstrates |
CH-ATL-003 | Piedmont Regional Medical Center |
| Hero scenario: rising temperature trend over 24 h, prior PTC sensor replacement 8 months ago, open emergency dispatch ticket. Illustrates repeat-fault pattern recognition. |
CH-DAL-002 | Dallas Convention Center |
| Cooling tower fan VFD fault contribution; two prior related work orders. Tests cross-system causal reasoning. |
CH-PHX-005 | Phoenix Sky Harbor Logistics |
| LEN bus fault; unit offline at alarm time. Tests degraded-connectivity diagnostic path. |
CH-ATL-001 | Hartsfield-Jackson Tech Hub | (none) | Stable unit — PM history only. Negative control: confirms agent does not hallucinate faults. |
CH-CHI-004 | Chicago Medical District | (none) | Cross-case: prior |
Hero demo sequence (CH-ATL-003)
Open the Overview tab, select CH-ATL-003, and click a starter prompt.
Switch to Evidence Board — watch the agent flow timeline populate as tools fire in sequence: asset lookup → active alarms → telemetry trend → service history → knowledge search → case search.
Switch to Field Chat and run the same prompt for the conversational framing.
Use the thumbs-up/thumbs-down reaction to capture engineer feedback.
Getting started
Prerequisites
Node.js 18+
MongoDB Atlas cluster on 8.3+ for Voyage
$rerank(choose Latest version with auto-upgrades in Cluster Builder).$rankFusionhybrid search works on 8.1+ (or 8.0 with a support-case flag); deterministic tools work on earlier versions.M10+ recommended for CLI index management (
npm run indexes:create); M0 can run the demo if you create the four search indexes in the Atlas UILLM API key — one of
OPENAI_API_KEY,ANTHROPIC_API_KEY, orMDB_GROVE_API_KEY
1. Clone and install
git clone <repo-url>
cd virtual-engineer
npm install
cd frontend && npm install && cd ..2. Configure environment
cp .env.example .envEdit .env:
# Atlas
MONGODB_URI=mongodb+srv://<user>:<pass>@<cluster>.mongodb.net/
MONGODB_DB=virtual_engineer
# LLM — pick one provider
LLM_PROVIDER=openai
OPENAI_API_KEY=sk-...
# Local dev
MCP_AUTH_DISABLED=true
MCP_PORT=3100
CORS_ORIGIN=http://localhost:5173See the full environment variable reference in docs/runbook.md.
3. Seed sample data
npm run seed:dropThis regenerates 7-day hourly telemetry, creates the time-series collection, and inserts all sample documents.
4. Create Atlas search indexes
npm run indexes:check # reports READY / BUILDING / MISSING
npm run indexes:create # creates missing indexes and polls until READYFour indexes are required for hybrid search to work without degraded: true responses: vector + lexical on both knowledge_documents and service_tickets. See docs/indexes.md for manual index definitions.
Note:
$rankFusionhybrid search requires MongoDB 8.1+ (or 8.0 with a support-case feature flag). On earlier versions, knowledge and case search tools return empty results withdegraded: true— all deterministic tools continue to work.
5. Enable Native Reranking ($rerank)
Knowledge and case search append Voyage $rerank after $rankFusion in the same aggregation. No extra search indexes and no Voyage API key — usage is billed through Atlas (Preview).
Do this once per Atlas project before expecting non-degraded reranked results:
Confirm the cluster is MongoDB 8.3+ (Atlas UI → cluster → version, or create/upgrade with Latest version with auto-upgrades).
$rerankis not available on 8.1/8.2 even if$rankFusionworks.As Project Owner, open Project Settings and set Native Reranking:
$rerankin the Aggregation Pipeline to On. Confirm the Voyage model usage / billing dialog.Leave the defaults in
.env(or omit them):RERANK_ENABLED=true,RERANK_MODEL=rerank-2.5-lite,RERANK_CANDIDATES=20.
$rerank is not supported on Atlas Local or self-managed mongod. It cannot sit inside $rankFusion input pipelines — this demo runs it after fusion.
If the toggle is off or the cluster is below 8.3, search retries $rankFusion only and returns degraded: true with fusion order. Set RERANK_ENABLED=false to skip $rerank on purpose. Full pipeline notes: docs/indexes.md.
6. Start the backend
npm run mcp:devServer starts on http://localhost:3100. Verify with:
curl http://localhost:3100/health7. Start the demo UI
cd frontend && npm run devOpen http://localhost:5173. The Vite dev server proxies /api to the backend automatically.
8. Run connectivity tests
npm run test:connectivity # requires backend running on :3100API endpoints
Method | Path | Purpose |
|
| DB ping + service status |
|
| MCP JSON-RPC (initialize, tools/call) |
|
| SSE stream for server-initiated messages ( |
|
| Session termination |
|
| LLM agent chat (SSE stream) |
|
| Engineer reaction capture |
|
| Chat API health (returns provider + model, no secrets) |
Data freshness
Sample data uses Date.now()-relative windows for alarms and telemetry. Re-run npm run seed:drop any time to reset to a fresh baseline anchored to the current hour.
For continuous automated freshness without manual steps, deploy the Atlas Scheduled Trigger at scripts/data/atlas-trigger/refresh-demo-data.js — it fires daily at 02:00 UTC and rolls alarm timestamps and telemetry forward. See docs/data-freshness.md for setup instructions.
Repository layout
Path | Purpose |
| Express server — MCP tools, LLM agent, SSE chat API |
| 20 MCP tool definitions |
| LLM orchestrator + MCP HTTP client |
| MongoDB data access layer |
| Demo UI — Overview, Evidence Board, Field Chat |
| Sample data, schemas, seed scripts, Atlas trigger |
| MCP smoke tests |
| Architecture, runbook, indexes, schema review, gates |
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAI assistant application that integrates FastMCP server with MongoDB Atlas knowledge base, enabling direct MCP tool calling for document search and retrieval through a complete REST API.
- AlicenseNot gradedqualityCmaintenanceEnables natural language querying of MongoDB data by transforming AI agent questions into MongoDB aggregations. Supports secure data separation, semantic vector search, and advanced lookup capabilities for database interactions.5,1296MIT
- AlicenseNot gradedqualityBmaintenanceA smart MCP gateway that routes AI agents to the right tools using hybrid search (vector + full-text) on MongoDB Atlas, collapsing the retrieval infrastructure into a single query.MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact natively with MongoDB databases, including schema discovery, CRUD operations, aggregation pipelines, and index management via natural language.31MIT
Related MCP Connectors
Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.
A paid remote MCP for AI SDK data query MCP, built to return verdicts, receipts, usage logs, and aud
Connect MCP clients to 2,000+ AI models without managing provider API keys.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/benkipnis/virtual_engineer'
If you have feedback or need assistance with the MCP directory API, please join our Discord server