NewAgent Observability is live.
Back to directory
LiteLLM logo

LiteLLM MCP server: a gateway, not a server

Why LiteLLM appears in MCP registries without publishing a server of its own data, and what the entry bearing its name actually points at.

Connector
LiteLLM routes to servers, doesn't publish one
Coverage
Nothing of LiteLLM's own
Tools
No LiteLLM tools; it proxies others'
Working route
Route other servers through the proxy

Last verified 26 August 2026 · from LiteLLM's MCP Gateway documentation, the MCP registry, PyPI and GitHub

This page is one of 90 in a directory of monitoring and developer tools. Each page checks what an AI coding agent can get out of the tool through its MCP server, the connector that lets the agent query the tool directly.

Summary

LiteLLM publishes no MCP server exposing LiteLLM's own data. Its proxy sits on the other side: it consumes MCP servers and governs which callers may reach which tools.

That makes it a gateway, which is a third role alongside client and server. Agents talk to the proxy, and the proxy talks to the servers, applying access rules in between.

One entry muddies this. io.github.BerriAI/litellm-mcp is in the official registry, published 7 February 2026, and it points at BerriAI/litellm-agent-mcp, which returns 404. The twin publisher account was deleted.

What is the LiteLLM MCP server, and is it usable?

LiteLLM is a proxy in front of language-model providers, giving one API across many models with keys, budgets and rate limits attached. Its MCP role follows from that position: it stands between agents and tools the way it already stands between applications and models.

In gateway mode the proxy registers MCP servers, and agents connect to the proxy rather than to each server. Access control, budgets and logging then apply to tool calls as well as model calls.

What it does not do is expose LiteLLM's own state, such as spend per key or request logs, as MCP tools. That is what a LiteLLM connector would mean, and it does not exist.

Every one of the 90 vendors in this directory gets the same four checks. LiteLLM passes 0 of them.

CheckResultEvidence
OfficialFailNo first-party server of LiteLLM's own data. The proxy acts as an MCP gateway, and the registry entry io.github.BerriAI/litellm-mcp points at BerriAI/litellm-agent-mcp, which returns 404.
MaintainedFailThe linked repository is gone and the twin publisher account was deleted. The registry entry was published on 7 February 2026 and has not been replaced.
DistributedFailA litellm-mcp package exists on PyPI at 1.0.4, but it is absent from LiteLLM's own documentation and is not the vendor's published route.
UsableFailLiteLLM's MCP documentation describes the proxy consuming and governing other people's servers, not exposing its own.

LiteLLM operates in AI cost management, and registers no tool an agent could use to ask what a key has spent.

Part of the workWhat LiteLLM has hereCan an agent reach it
Code, tests & reviewNoneNo code-review product, and no server
CI & releaseNoneNo CI product, and no server
Production observabilityNoneNo infrastructure telemetry, and no server
Agent observability & evalsProxy request logsNo. The proxy records model calls, and exposes none of them over MCP. Reading them means the LiteLLM API, not a connector
AI cost managementKeys, budgets, spend trackingNo. Spend tracking is what LiteLLM is for, and none of it is reachable as MCP tools. The proxy governs tool access rather than reporting its own spend

LiteLLM's MCP support points outward, not inward. An agent cannot ask LiteLLM what a key has spent, because no tool exposes that. What LiteLLM offers instead is a controlled path to other people's tools. That is worth having, for a different reason than a connector would be.

What can an AI agent do with LiteLLM?

One thing goes wrong here, and a registry entry is the cause.

The MCP registry lists a LiteLLM server, and the repository behind it does not exist.

io.github.BerriAI/litellm-mcp was published to the official registry on 7 February 2026. It points at BerriAI/litellm-agent-mcp, which returns 404, and the twin publisher account has been deleted.

A litellm-mcp package does exist on PyPI at version 1.0.4, and it wraps model calling rather than LiteLLM's own data. It appears nowhere in LiteLLM's documentation, so it is not the vendor's published route whatever the registry says.

Guard: Treat a registry entry as a claim to check rather than a fact. Follow it to the repository before installing anything.

How to configure LiteLLM MCP for agents

  1. 1

    Turn on database storage first

    LiteLLM documents STORE_MODEL_IN_DB=True, or store_model_in_db: true under general_settings, as the prerequisite for holding MCP servers. supported_db_objects: ["mcp"] narrows that to MCP alone.

  2. 2

    Pick the transport per server

    The documented default is sse. http selects Streamable HTTP and stdio runs a local process, which then needs command and may take args and env.

  3. 3

    Choose the alias carefully, because it becomes a prefix

    LiteLLM prefixes every tool name with its server name. SEP-986 is the MCP proposal that sets the format for tool names. From v1.80.18 new server names must comply with SEP-986, and non-compliant names can no longer be added.

  4. 4

    Decide who reaches each server

    Permissions apply by key, by team and by organization. Setting allow_all_keys: true overrides that and exposes the server to every LiteLLM key.

  5. 5

    Decide where each credential lives

    A server can carry its own through auth_type and auth_value, or the caller can forward one per request as x-mcp-{server_alias}-{header_name}.

Paste this into your agent’s instructions

The gateway filters the tool list by the calling key's permissions and renames every tool with its server prefix. An agent therefore sees a subset of the tools, under altered names. A tool that is missing may be unregistered, or not permitted for this key. It is not necessarily absent.

Terminal
When you answer through the LiteLLM gateway, state:
- Which server prefix the tool you called came from.
- That the tool list is filtered by the key in use, so a
  tool may exist and not be visible to this key.
Never state that data does not exist. State which servers
this key can see, and that others may be hidden.
Write your answer in ASD-STE100 Simplified Technical
English. Use short sentences with one idea in each.

Do you need the MCP server at all?

No, LiteLLM publishes no server of its own data. For governing tool access, the proxy is the product and it works. Register your MCP servers with it, point agents at the proxy, and key-level permissions and budgets apply to tool calls.

For reading LiteLLM's own spend data, there is no connector. The proxy exposes a REST API with spend and key endpoints, and an agent can call that directly with the same key.

If per-call LLM cost in an agent conversation is the goal, Helicone publishes a real server for exactly that, at two tools.

Use LiteLLM as the gateway it is. For querying spend from an agent, call its API, or connect a vendor that publishes a cost server.

LiteLLM MCP server setup

Nothing here installs a LiteLLM server, because there is none. This is how other servers are registered with the gateway, and how an agent then reaches them through one endpoint.

One prerequisite comes first. LiteLLM documents that storing MCP servers needs database storage enabled, through STORE_MODEL_IN_DB=True or store_model_in_db: true under general_settings.

Credentials never appear in the routing configuration. Each registered server carries its own through auth_type and auth_value, or receives one forwarded per request in a header.

Register servers in config.yaml

mcp_servers is a top-level key. Each entry names a server, and the documented example covers all three transports. The env block belongs to the stdio process and is where that server's own token goes.

mcp_aliases, under litellm_settings, maps a short name onto a server so tool prefixes stay readable.

Terminal
litellm_settings:
  mcp_aliases:
    "deepwiki": "deepwiki_mcp_server"

mcp_servers:
  deepwiki_mcp:
    url: "https://mcp.deepwiki.com/mcp"
  circleci_mcp:
    transport: "stdio"
    command: "npx"
    args: ["-y", "@circleci/mcp-server-circleci"]
    env:
      CIRCLECI_TOKEN: "your-circleci-token"

Point an agent at the proxy

The documentation is explicit about one trap here. When the request already goes to the proxy, server_url takes the literal string litellm_proxy, not the proxy's own URL.

It states that server_url: "https://your-proxy.com/mcp" is incorrect in that case, because the proxy needs the literal value to route to its configured servers.

This block holds no credentials. The LiteLLM key travels separately in the request headers, and each downstream server supplies its own.

Terminal
{"type":"mcp",
 "server_label":"litellm",
 "server_url":"litellm_proxy",
 "require_approval":"never"}

Cursor

LiteLLM documents opening Cursor settings with Shift-Command-J on macOS or Ctrl-Shift-J elsewhere, then adding a server under MCP Tools.

The LiteLLM key travels in x-litellm-api-key. A downstream server's own credential travels beside it under its server-specific header.

Terminal
{"mcpServers":{"LiteLLM":{
  "url":"litellm_proxy",
  "headers":{
    "x-litellm-api-key":"Bearer $LITELLM_API_KEY",
    "x-mcp-github-authorization":"Bearer $GITHUB_TOKEN"}}}}

Narrow a request to certain servers

x-mcp-servers limits one request to named servers or access groups, which is the lever for keeping a tool list small without changing the registration.

This header selects servers and holds no credentials of its own.

Terminal
"x-mcp-servers": "Zapier_MCP,dev-group"

Every other client

Each block below is the configuration for one client, with the file path and the key that client expects.

Per-server credentials

auth_type decides the header LiteLLM sends on the managed SSE and HTTP path. none adds nothing, api_key sends X-API-Key, bearer_token and basic send the matching Authorization forms, and authorization sends the value verbatim with no prefix.

oauth2 resolves a token through PKCE or client credentials, oauth2_token_exchange performs an on-behalf-of token exchange, defined in RFC 8693, and aws_sigv4 signs each request instead.

static_headers adds fixed pairs to every request, and extra_headers names client headers that may be forwarded through.

Terminal
api_key      ->  X-API-Key: <auth_value>
bearer_token ->  Authorization: Bearer <auth_value>
authorization->  Authorization: <auth_value>   (verbatim)
Calling tools without a model

LiteLLM documents a direct REST path at /mcp-rest/tools/list and /mcp-rest/tools/call, which lets you exercise a registered server with curl and no LLM in the loop.

This proves a registration works before an agent is involved. It uses the same LiteLLM key as any other proxy call.

Terminal
curl <proxy>/mcp-rest/tools/list \
  -H "x-litellm-api-key: Bearer $LITELLM_API_KEY"
Server variables

Credentials can be stored on the server and referenced as ${VAR_NAME} inside static headers or authentication values, including composed strings such as a database URL.

Each variable is scoped either Instance, shared across everyone, or Per-user, where each user supplies their own value.

Terminal
${DB_PROTOCOL}://${CORP_USERNAME}:${CORP_PASSWORD}@${DB_HOSTNAME}

Read-only access, permissions and security

  • allow_all_keys overrides the permission model

    Set on a server, it makes that server available to every LiteLLM key even when the key or team does not list it in its MCP permissions.

  • x-mcp-auth is deprecated, and it goes to every server

    The legacy header is forwarded to every MCP server rather than one, which is why LiteLLM now recommends the server-specific x-mcp-{server_alias}-{header_name} form.

  • One auth type sends two different headers

    LiteLLM notes that the OpenAPI-tool path emits Authorization: ApiKey <value> where the managed transport path emits X-API-Key, and the deprecated broadcast header uses the ApiKey form too.

  • Permissions are graded by key, team and organization

    That is the boundary that decides which registered servers a caller can list at all.

  • Server variables can be shared or personal

    Instance scope shares one stored credential across all users; Per-user scope requires each user to supply their own.

  • The gateway is a chokepoint by design

    Every tool call passes through it, so its logs and its permission table are the audit surface for servers you do not own.

Troubleshooting

You cannot find a LiteLLM MCP server to install
There is not one exposing LiteLLM's own data. The proxy is a gateway that registers and governs other people's servers. To read spend or key data, call LiteLLM's REST API directly.
A registered server does not persist or does not appear
Database storage is required. Set STORE_MODEL_IN_DB=True, or store_model_in_db: true under general_settings. If supported_db_objects is set, it must include mcp.
The connection fails when you use the proxy's own URL
server_url must be the literal string litellm_proxy when the request already goes to the proxy. The documentation states that using the full proxy URL is incorrect, because the proxy needs the literal value to route.
A new server name is rejected
From v1.80.18 names must comply with SEP-986, because LiteLLM prefixes every tool with its server name. Non-compliant names can no longer be added; existing ones warn today and may be blocked later.
The downstream server rejects the credential
Check which header shape auth_type produces. api_key sends X-API-Key on the managed transport path, while the OpenAPI-tool path sends Authorization: ApiKey for the same setting.
A key can reach a server it should not
Look for allow_all_keys: true on that server. It makes the server available to every key regardless of the key or team MCP permissions.
The agent sees too many tools
Send x-mcp-servers with the server names or access groups that request needs. It narrows the tool list without changing the registration.

LiteLLM MCP server: Reference

ItemValue
Role in MCPGateway. It registers and governs other vendors' servers
Server of its own dataNone
Registration keymcp_servers, top-level in config.yaml
Alias keymcp_aliases, under litellm_settings
PrerequisiteSTORE_MODEL_IN_DB=True or store_model_in_db: true
TransportsStreamable HTTP · SSE · stdio
Default transportsse
Client server_url valueThe literal litellm_proxy, not the proxy URL
Tool namingEvery tool is prefixed with its server name
Name ruleSEP-986 compliance required for new servers from v1.80.18
MCP protocol version2025-11-25 from v1.80.18
Default spec version per server2025-06-18
Auth typesnone · api_key · bearer_token · basic · authorization · token · oauth2 · oauth2_token_exchange · aws_sigv4
Permission scopesBy key, by team, by organization
Permission overrideallow_all_keys: true exposes a server to every key
Per-request server filterx-mcp-servers
Per-server auth headerx-mcp-{server_alias}-{header_name}
Deprecated auth headerx-mcp-auth, forwarded to all servers
Direct REST/mcp-rest/tools/list and /mcp-rest/tools/call
MCP operations supportedList tools · call tools · prompts · resources
Inventory sourceLiteLLM MCP Gateway documentation, read 26 August 2026

What engineers report

LiteLLM is the most widely adopted product in this guide, at 57,743 stars. There is no first-party server to review, so this section records what the search returned.

What was checkedWhat it shows
LiteLLM itself57,743 stars · 11,064 forks · pushed 1 September 2026 · PyPI 1.99.0
Registry entryio.github.BerriAI/litellm-mcp, published 7 February 2026
Repository it points atBerriAI/litellm-agent-mcp, returns 404
Publisher accountDeleted
PyPIlitellm-mcp 1.0.4 exists, absent from LiteLLM's documentation
LiteLLM MCP documentationGateway configuration, consuming other servers

Registry, PyPI and GitHub checked on 24 August 2026, and the adoption figures refetched on 1 September 2026. The 404 on the linked repository was confirmed directly against the GitHub API.

Should you connect an agent to LiteLLM?

There is nothing to connect: this is the agent side of MCP. Best for gateway use, with LiteLLM's REST API for anything you need to read back.

Strongest fit
Teams already proxying model calls through LiteLLM who want the same key-level control over tool calls.
Main advantage
Gateway mode puts access control, budgets and logging in front of MCP servers you do not own.
Main weakness
Nothing exposes LiteLLM's own data, so an agent cannot ask what a key spent.
Operational risk
A registry entry bearing LiteLLM's name points at a deleted repository, which is a supply-chain trap rather than a working option.

From Oodle

One platform for agent traces and infrastructure

Agent traces usually sit in a different product from the rest of your telemetry, so when a slow database makes an agent slow the symptom is in one tool and the cause is in another. Oodle keeps both in one query surface, from $10 per million spans.

See agent observability

Frequently asked questions

Does LiteLLM have an MCP server?

Not of its own data. The proxy is an MCP gateway that consumes and governs other servers. There is no connector exposing LiteLLM's keys, budgets or spend.

What about the entry in the MCP registry?

io.github.BerriAI/litellm-mcp was published on 7 February 2026 and points at BerriAI/litellm-agent-mcp, which returns 404. The publisher account was deleted.

There is a litellm-mcp package on PyPI. Is that official?

It exists at 1.0.4 and wraps model calling, but it appears nowhere in LiteLLM's own documentation, so it is not the vendor's published route.

Can an agent ask LiteLLM what a key has spent?

Not over MCP. Call LiteLLM's REST API directly, or connect a vendor that publishes a cost server such as Helicone.

Changelog

  • 7 February 2026. io.github.BerriAI/litellm-mcp published to the MCP registry. Its linked repository is gone and the twin publisher account was deleted.

Sources

Every number on this page traces to one of these

  1. LiteLLM MCP Gateway documentation, read 26 August 2026
  2. Official MCP registry entry io.github.BerriAI/litellm-mcp
  3. GitHub API, confirming BerriAI/litellm-agent-mcp returns 404
  4. PyPI record for litellm-mcp

LiteLLM’s own MCP documentation

For LLM cost with a real server:

Also governing rather than exposing: