# MCP user analytics: Know who uses your MCP. On every AI client.

> MCP user analytics shows who calls your server, from which AI clients, and who comes back. Flowlines groups tool calls by user, recognizes the same person across Claude, ChatGPT and other clients when your server identifies them, and shows what each user was trying to do.

Source: https://flowlines.ai/mcp-user-analytics · By Flowlines
Index of all Flowlines pages for AI agents: https://flowlines.ai/llms.txt

MCP user analytics shows who calls your server, from which AI clients, and who comes back. Flowlines groups tool calls by user, recognizes the same person across Claude, ChatGPT and other clients when your server identifies them, and shows what each user was trying to do.

## What is MCP user analytics?

MCP user analytics measures who calls an MCP server, from which AI clients, how often and whether they come back. Flowlines provides it per server, with each user's clients, sessions, tools and use cases.

It turns a stream of anonymous tool calls into people you can reason about: the customer who relies on your server every day, the team that tried it once, and the user who keeps running into the same error.

## How do I track MCP tool calls by user?

Flowlines groups your MCP server's tool calls by user, with each user's sessions, tools, clients and failures, once your server attaches a stable, permitted user or account identifier to every call.

Calls without an identifier stay in an unknown group rather than being guessed. Keep individual identifiers in access-controlled analytics rather than metric labels, and count retries separately from distinct jobs.

| User (synthetic) | Client | Sessions | Status |
| --- | --- | --- | --- |
| User 014 | Claude | 18 | Returning |
| User 028 | ChatGPT | 12 | Returning |
| User 036 | Claude | 4 | New |

## How do I track MCP usage by AI client?

Flowlines shows calls, users and sessions for each AI client that calls your server, such as Claude, ChatGPT or Cursor, with an unknown group for calls that name no client.

Client names are reported by the calling application and identify the application, not the person. Compare the same jobs across clients before concluding that one works better with your tools.

| Client (synthetic) | Users | What to check |
| --- | --- | --- |
| Claude | User 014, User 036 | Which tools each user reaches. |
| ChatGPT | User 028 | Whether the same jobs succeed as on Claude. |
| Unknown | Calls without a client name | How much client metadata is missing. |

## How do I identify who uses my MCP server?

Flowlines identifies users by the stable, permitted identifier your server attaches to each call, usually the account or user ID from the authentication your server already performs, and can show names or emails when you choose to send them.

Prefer a pseudonymous account ID where you can. Send names and emails only when you are permitted to process them, and never use identity in analytics as a substitute for authorization.

| Identity source | Identifies a person? | Note |
| --- | --- | --- |
| Authenticated account or user ID | Yes | The most reliable option. |
| Email address | Yes | Personal data; keep it out of metric series. |
| Client name | No | Identifies the application. |
| Transport or protocol session | No | Not durable and not tied to a person. |
| Anonymous calls | No | Counted separately as unknown users. |

## Can I recognize the same user across clients?

Yes: Flowlines shows one user with activity from Claude, ChatGPT and other clients when your server sends the same user identifier whichever client made the call.

Client names and transport sessions cannot link people on their own. The link comes from your server's own authentication, so a user who signs in to your MCP from two clients is one person in Flowlines, not two unrelated visitors.

| Scenario | Recognized as one user? | Why |
| --- | --- | --- |
| Same account ID from Claude and ChatGPT | Yes | Your server sends the same identifier. |
| Same person, no identifier sent | No | Calls stay in the unknown group. |
| Shared team account | As one account | Several people may sit behind it. |

## Which users come back?

Flowlines marks each user as new or returning for the selected period and shows which client they came back on.

A returning MCP user was also active in an earlier period; returning users divided by active users gives the returning share. Read it with identity coverage, because anonymous calls cannot be counted as returning.

- [Glossary: returning MCP user](https://flowlines.ai/glossary#returning-mcp-user)

## What is each user trying to do?

Flowlines shows the use cases behind each user's sessions, such as preparing a customer brief, and how those sessions ended: accomplished, partial, failed or unknown.

That separates a power user who gets value every day from one who keeps returning because the job never finishes. Open a session to see the path before deciding which it is.

- [See full sessions in MCP session analytics](https://flowlines.ai/mcp-session-analytics)


## Frequently asked questions

### How do I track MCP tool calls by user?

Flowlines groups tool calls by user once your server attaches a stable, permitted user or account identifier to each call. Calls without one stay in an unknown group.

### How do I track MCP usage by AI client?

Flowlines shows calls, users and sessions for each AI client, such as Claude, ChatGPT or Cursor, with an unknown group. Client names identify the application, not the person.

### Can I recognize the same user across Claude and ChatGPT?

Yes. Flowlines shows one user across clients when your server sends the same user identifier whichever client made the call. Client names alone cannot link people.

### How do I identify who uses my MCP server?

Flowlines identifies users by the stable identifier your server attaches to each call, usually the account ID from your existing authentication. Names and emails are optional.

### Which users come back to my MCP server?

Flowlines marks each user as new or returning for the selected period. The returning share is returning users divided by active users, read with identity coverage.
