---
title: MCP Servers
description: Monitor the calls, errors, latency, and users of your MCP servers in AI Center, using OpenTelemetry MCP semantic-convention spans.
url: https://coralogix.com/docs/user-guides/ai/mcp-servers/
product: ai
feature: AI Overview
feature_id: ai-general
feature_identifier: ai/ai-general
last_updated: '2026-11-11'
---

# MCP servers

MCP Servers in AI Center shows how your Model Context Protocol (MCP) servers perform. It is for the teams that own those servers. See which tools agents call, which calls fail and why, how long calls take, and who uses the server.

## Let your coding agents do this

Recommended

Easiest way through this page: hand it to your coding agent. Copy this prompt in, from your MCP server project:

```
Read https://coralogix.com/docs/ai-center, install the ai-app-instrumentation skill

(npx -y skills add coralogix/cx-skills --skill ai-app-instrumentation -y), then run it to

instrument this MCP server and verify the data in Coralogix AI Center.
```

The [ai-app-instrumentation skill](https://coralogix.com/docs/ai-center) checks what your MCP SDK already emits, adds the missing OpenTelemetry MCP spans, sends a real request through the server, and checks that the spans land in AI Center. It asks you only for what it cannot get on its own, such as a Send-Your-Data key. The empty state of the MCP Servers page shows the same prompt.

## What you need

The skill above sets this up for you. You need this list only to instrument the server yourself.

MCP Servers reads OpenTelemetry MCP semantic-convention spans from your spans data. These spans carry attributes such as `mcp.method.name`, `gen_ai.tool.name`, `error.type`, the span status message, and `enduser.id`. No other setup is needed beyond sending these spans to Coralogix.

* The MCP Python SDK 2.x emits these spans by default once you set a TracerProvider.
* FastMCP servers also emit `enduser.id` when they authenticate callers.

## Open MCP Servers

1. In the Coralogix UI, go to **AI Center**, then **MCP Servers**.
2. Use the time picker to select the time range.

If your account has no MCP server spans, the page shows an empty state. Create a Send-Your-Data key, then paste the agent prompt into your coding agent. The first spans appear on the page after your MCP server handles a request.

## Page sections

Use the side navigation to jump between sections. Each widget shows a ranked total or, with **Over time**, its top values over time. Each widget menu has **View query** and **Add to Olly context**.

| Section      | What it shows                                                                                                    |
| ------------ | ---------------------------------------------------------------------------------------------------------------- |
| **Insights** | Findings across your servers, such as tools that fail often and slow tools. Select a finding to open the server. |
| **Overview** | Tiles for **Clients**, **Calls**, **Error rate**, and **P95 latency**. Select a tile to chart it over time.      |
| **Servers**  | Busiest, slowest, and most failing servers, and a table of all servers. Select a server to open its drilldown.   |
| **Clients**  | Most active clients, and a table with each client's calls, servers used, tools used, and error rate.             |
| **Tools**    | Most used, slowest, and most failing tools, and a table of all tools.                                            |
| **Methods**  | Calls, latency, and failed calls per MCP method, and a table of all methods.                                     |

Tables support search, CSV export, and paging. "Most failing" ranks by failed calls.

**Clients** on this page and **Users** in the drilldown count distinct authenticated identities (`enduser.id`). Only servers that authenticate callers send this attribute, and a service account counts as one user. Credential-like user IDs are masked.

## Server drilldown

Select a server in the Server Catalog to open its drilldown. The breadcrumb reads **MCP Servers** / the server name.

| Section        | What it shows                                                                                                                                                                                                        |
| -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Insights**   | Calls to unknown tools, errors from one caller, rejected methods, discovery overhead, timeouts, runaway agent loops, slow failures, and failing and slow tools.                                                      |
| **Activity**   | Tiles and a chart for calls, users, error rate, and P95 latency over time.                                                                                                                                           |
| **Errors**     | **Error codes**, **Errors over time**, **Errors by caller**, and **Error rate by deployment**.                                                                                                                       |
| **Latency**    | P50, P95, and P99 latency, timeouts, **Latency over time**, and **Slowest tools**. **Where tool time goes** shows the time each tool spends in its direct downstream calls, for the last hour of the selected range. |
| **Tool Calls** | **Calls by tool** and **Calls by method**, each with a table, and **Runaway traces**.                                                                                                                                |
| **Clients**    | Calls, error rate, and P95 latency per MCP client app (`mcp.client.name`).                                                                                                                                           |

## Fill every widget

Most widgets fill from the standard MCP server spans. Two sections need more data from your server. The [agent prompt](#let-your-coding-agents-do-this) sets up both.

| Section                  | Needs                                                      | How to send it                                                                                                                                                                                      |
| ------------------------ | ---------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Where tool time goes** | Spans for the server's own HTTP, database, and RPC calls   | Turn on OpenTelemetry auto-instrumentation for the HTTP, database, and gRPC client libraries your server uses. Their spans nest under each tool call.                                               |
| **Clients**              | `mcp.client.name` and `mcp.client.version` on server spans | Copy `clientInfo.name` and `clientInfo.version` from the session's `initialize` request onto every server span of that session. These attributes are not yet part of the OpenTelemetry conventions. |

**Users** and the client views on the overview use `enduser.id`. Servers that authenticate callers, such as FastMCP servers, set it.
