Debug production from Copilot agent mode. Polylane puts your logs, traces and deploys a question away.
Signs you in, connects your stack and registers the MCP server in GitHub Copilot.
> why is checkout returning 502s since this morning?
polylane · searchcheckout errors, recent deploys
polylane · runToolqueryLogs · checkout-edge 5xx, last 6h
polylane · searchcheckout-edge deploys and config changes
The 502s started at 09:14, two minutes after deploy 9f3c2a1 cut the hd-prod Hyperdrive pool from 50 connections to 5. Requests queue for a connection and time out at the edge.
Fix: put max_connections back to 50 in wrangler.jsonc. Want me to make the change?
Critical latency degradation in checkout-edge worker · issue already open in Polylane
Every tool you use, from GitHub Copilot. Polylane sits between GitHub Copilot and your stack.
Connect your clouds, observability, code and chat once. GitHub Copilot gets three tools: searchTools finds the right one for the question, runTool calls it, and runCode chains several in one go. One sign-in covers every provider, and a tool's schema loads only when GitHub Copilot uses it.
- searchTools find the right tool
- runTool call one
- runCode chain many
Code mode. GitHub Copilot writes the program, Polylane runs it.
Calling tools one at a time fills GitHub Copilot's context with raw results: tens of kilobytes of metrics, thousands of log lines, each step waiting on the model. With runCode, GitHub Copilot writes a short program that calls every tool it needs. It runs in Polylane's sandbox, and only the answer comes back.
deployHistory → 12 deploys
queryMetrics → 41 kB of series
queryMetrics → another 41 kB
queryLogs → 3,000 lines
… and a model turn between each
Every raw result lands in the context window before GitHub Copilot can think about it.
// Which deploy slowed checkout-edge? const deploys = await tools.deployHistory({ service: "checkout-edge", hours: 24 }); const { points } = await tools.queryMetrics({ service: "checkout-edge", metric: "latency.p99", hours: 24, }); const median = (xs) => xs.sort((a, b) => a - b)[xs.length >> 1] ?? 0; const p99 = (t, side) => median(points.filter((p) => (side < 0 ? p.t < t : p.t > t)).map((p) => p.v)); // Score every deploy by the p99 shift across its timestamp. const [worst] = deploys .map((d) => ({ ...d, shift: p99(d.at, 1) / p99(d.at, -1) })) .sort((a, b) => b.shift - a.shift); // Pull the error logs right after the suspect deploy. const errors = await tools.queryLogs({ service: "checkout-edge", level: "error", after: worst.at, limit: 5, }); return { deploy: worst.sha, shift: worst.shift, errors };
One call. The raw data stays in the sandbox and GitHub Copilot reads the answer.
Ask GitHub Copilot about production. It answers from what's actually running.
> Why is checkout returning 502s?
GitHub Copilot queries logs and traces across every provider you connect, and finds when it started.
> What changed before the latency spike?
Deploys and config changes come back with when they landed and what they touched.
> Who calls this endpoint before I change it?
The context graph and real request logs show every caller, so a schema change doesn't break one you forgot.
> Look at the issue Polylane opened this morning.
GitHub Copilot reads the investigation and its evidence, then starts on the fix with you.
Prefer to add it by hand?
Already have a Polylane account? Register the MCP server in GitHub Copilot directly, then ask it a question you'd normally open five dashboards for.
Add an entry in .vscode/mcp.json under "servers" with type "http", pointing at https://mcp.polylane.com/mcp.
Guides for GitHub Copilot
- Guide How to add MCP servers to GitHub Copilot in VS Code How to add MCP servers to GitHub Copilot in VS Code: workspace and user mcp.json, HTTP and stdio servers, MCP: Add Server and confirming tool calls.
- Guide How to add MCP servers to Cursor How to add MCP servers to Cursor: project and global mcp.json files, remote and local servers, OAuth sign-in, secrets from env vars and tool approvals.
- Guide How to use Claude Code: a practical guide How to use Claude Code: install it, write a CLAUDE.md, pick a permission mode, steer it mid-task, script it with -p and connect it to your tools with MCP.
- Guide How to use Codex CLI: install, AGENTS.md, MCP and exec How to use Codex CLI: install it, sign in, write an AGENTS.md, set permissions, resume sessions, script it with codex exec and add MCP servers.
- Guide How to use OpenCode: install, plan and build, MCP How to use OpenCode: install it, connect a provider, write an AGENTS.md with /init, switch between Plan and Build, undo changes and add MCP servers.
- Guide How to use the Pi coding agent How to use the Pi coding agent: install it, sign in with /login, pick a model, branch sessions with /tree and /fork, compact context and script it with -p.
Frequently asked questions
How does GitHub Copilot authenticate?
GitHub Copilot signs in over OAuth in a browser the first time it calls the server. For CI and headless machines, create an API key under Settings > Coding agents and add "headers": { "x-api-key": "YOUR_API_KEY" } to the server entry.
Can GitHub Copilot change my infrastructure through Polylane?
Not unless you opt in. Write tools stay hidden until your credential carries the write scope, and every write is screened before it runs.
What can GitHub Copilot actually query?
Everything Polylane knows: logs, metrics and traces across every connected provider, the context graph, deploys and recent changes, and the full REST API.
Do I need the Polylane CLI too?
No, the MCP server is a complete surface on its own. Install the CLI and polylane setup also registers that server in every coding agent it detects.