Geneva4AI
AI-powered Geneva log queries — ask Copilot to search DGrep, no browser switching needed.
Features
- Natural language log queries — Ask Copilot: "Show me SignalEscalator error logs from yesterday"
- Zero context-switch — Stay in VS Code while Copilot fetches and analyzes production logs
- AI-powered analysis — Copilot summarizes patterns, identifies errors, and cross-references with your code
- Smart parameter discovery — Browse endpoints, namespaces, events, and columns before querying
- Query history & favorites — Auto-saves every query; save common ones as named favorites
- Persistent cache — Namespace/event/column lists cached locally for instant lookups
Prerequisites
| Requirement |
Details |
| VS Code 1.99+ |
Required for MCP Server support |
| GitHub Copilot extension |
Provides Chat UI and AI capabilities |
| Microsoft Edge |
Used for Geneva Portal login via CDP (no need to close existing windows) |
Nothing else to install. No Python, no Node.js, no extra config — the MCP server is bundled as JavaScript and runs on VS Code's built-in runtime.
Quick Start
- Install this extension (from VSIX or Marketplace)
- Click "DGrep" in the status bar → Launch Edge — a dedicated Edge window opens automatically with an isolated profile
- Log in to Geneva Portal in the new Edge window
- Open Copilot Chat → Ask: "Query DGrep logs for namespace X, event Y in the last hour"
How It Works
You (Copilot Chat)
→ "Show me errors in SignalEscalator logs from the last 2 hours"
Copilot
→ Calls query_dgrep MCP tool
→ Connects to Edge via CDP (reuses your Corp login)
→ Fetches logs from Geneva Portal API
→ Analyzes and summarizes results
→ "Found 42 error entries. 15 are IcmClient failures..."
| Tool |
Description |
check_dgrep_connection |
Verify Edge CDP connection status |
list_dgrep_endpoints |
List 13 available Geneva endpoints |
list_dgrep_namespaces |
Search namespaces for an endpoint |
list_dgrep_events |
List events for a namespace |
list_dgrep_columns |
List columns/fields for an event (for building filters) |
query_dgrep_tool |
Query DGrep logs with full parameters |
list_dgrep_history |
View recent query history |
save_dgrep_favorite |
Save a query as a named favorite |
list_dgrep_favorites |
List all saved favorite queries |
delete_dgrep_favorite |
Remove a saved favorite |
query_dgrep Parameters
| Parameter |
Required |
Default |
Description |
namespace |
Yes |
— |
Geneva namespace (e.g., SignalEscalatorTest) |
event |
No |
Log |
Event name (e.g., Log, CustomEvent) |
endpoint |
No |
Diagnostics PROD |
Geneva endpoint |
time_range |
No |
1h |
Relative time range: 30m, 1h, 6h, 1d, 5d. Ignored when start_time/end_time are set. |
start_time |
No |
— |
Absolute start time in ISO 8601 UTC (e.g., 2026-03-01T00:00:00.000Z). Use with end_time. |
end_time |
No |
— |
Absolute end time in ISO 8601 UTC (e.g., 2026-03-02T00:00:00.000Z). Use with start_time. |
conditions |
No |
— |
Filter conditions: list of [column, operator, value] triples |
max_rows |
No |
200 |
Max rows to return (up to 10,000) |
columns |
No |
— |
Column projection: only include these columns in output (+ PreciseTimeStamp always included). Use with list_dgrep_columns. |
timeout |
No |
60 |
Query timeout in seconds. Increase for slow namespaces or large time ranges. |
Natural Language Examples
| You say |
Copilot does |
| "show me SignalEscalator error logs from yesterday" |
namespace=SignalEscalator*, time_range=1d, Level≤2 |
| "show me timeout errors in the last 6 hours" |
time_range=6h, filter=timeout |
| "any exceptions in the last 30 minutes?" |
time_range=30m, filter=exception |
| "run that query again" |
checks history, re-runs last query |
Extension Commands
| Command |
Description |
Geneva4AI: Launch Edge (CDP Mode) |
Launch Edge with remote debugging for DGrep |
Geneva4AI: Check Edge Connection |
Check if Edge CDP is connected |
Status Bar
- $(check) Geneva4AI — Connected and ready
- $(debug-disconnect) Geneva4AI — Edge not connected (click to check or launch)
Data Storage
| File |
Contents |
~/.geneva4ai_cache.json |
Cached namespaces, events, columns (~1 MB) |
~/.geneva4ai_history.json |
Last 50 query entries |
Troubleshooting
"Edge CDP not connected"
Click DGrep in the status bar → Launch Edge. The extension opens Edge with an isolated profile (--user-data-dir) so you don't need to close existing Edge windows.
Alternatively, launch manually:
msedge --remote-debugging-port=9222 --user-data-dir="%LOCALAPPDATA%\geneva4ai-edge"
"Login required"
Navigate to Geneva Portal in the CDP-enabled Edge window and log in with your Corp account.
Architecture
The MCP server is written in TypeScript, bundled into a single JavaScript file with esbuild, and runs on VS Code's built-in Node.js — zero external dependencies to install.
It connects to Edge via Chrome DevTools Protocol (CDP) using playwright-core, reusing your existing Corp/AAD login session to call the Geneva Portal API. A 2-page pool ensures query resilience, and auth headers are captured via response interception for reliable token reuse. Permission errors are detected instantly via iframe content inspection and API response interception — no more 30-second timeouts when you lack access to a namespace.
VS Code + Copilot Chat
↕ MCP (stdio)
Node.js MCP Server (bundled JS, 10 tools)
↕ Playwright CDP (2-page pool)
Edge Browser (isolated profile, Corp/AAD login)
↕ HTTPS
Geneva Portal API
License
MIT