litellm-mcp
This MCP server lets agents administer a LiteLLM proxy — keys, teams, budgets, models, guardrails, the MCP gateway, platform areas, and more — through five risk-graded meta-tools plus a version op, all driven by operation + params.
litellm_read (safe): list/inspect resources, read spend/usage, health, settings, MCP gateway registry, prompt registry, and agent activity.
litellm_write (medium): create/update keys, teams, users, orgs, customers, budgets, models, credentials, tags, guardrails, fallbacks, MCP servers/toolsets, access groups, policies, evals, agents, workflows, and prompts.
litellm_execute (medium): block/unblock toggles, regenerate/reset keys, test connections, delete cache entries, apply guardrails, and run one-shot dev-loop actions like testing a dotprompt or invoking an A2A agent.
litellm_delete (high): irreversible deletions and cache flushall.
litellm_admin (high): proxy-global settings, allowed IPs, global spend reset, bulk user updates.
litellm_version: returns MCP package version and proxy readiness status.
Every meta-tool supports
operation="help"to list ops andoperation="schema"to get full JSON Schema for an op.List responses are slimmed for context efficiency, and write operations verify that fields were actually persisted.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@litellm-mcpshow me the proxy health status"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
litellm-mcp
MCP server for the LiteLLM proxy. It is a development-and-operations surface for LiteLLM resources - creating, configuring, testing, invoking, observing, and cleaning up virtual keys, teams, users, orgs, customers, budgets, models, credentials, tags, guardrails, spend/usage, cache, health, proxy settings, the MCP gateway registry (backend servers, toolsets, access groups), prompts, and the platform areas (policies, evals, A2A agent registry, workflow runs, CloudZero export) - as risk-graded meta-tools an agent can drive.
Bulk inference and the OpenAI-compatible surface (chat/completions,
embeddings, files, batches, assistants, vector stores, provider
pass-throughs) stay out of scope: agents already have model access through
their LLM client. What comes in is one-shot, dev-loop invocation that
closes a loop through the MCP alone - test_prompt renders and runs a
dotprompt, invoke_agent sends an A2A message/send. Both are graded as
litellm_execute (they spend inference) and return bounded output, never a
raw stream.
Built on the v2.5 MCP server family: five meta-tools dispatched by
operation + params, strict Pydantic validation, per-op help and JSON
schema introspection, list slimming with truncation metadata, and
write-response verification.
Operations
211 operations total: 210 grouped across the five meta-tools, plus one
root litellm_version op. The count is machine-checked - it equals
len(OPS) in codegen/inventory.py (210) plus the hand-written root op,
and equals the summed grep -c "^@_op" src/litellm_mcp/tools/*.py (211).
Meta-tool | Risk | Ops |
| safe | 94 |
| medium | 55 |
| medium | 23 |
| high | 26 |
| high | 12 |
litellm_read(safe): lists, infos, spend/usage, health, settings reads, token/cost utils, MCP gateway registry reads, prompt registry reads (list/get/versions), agent daily activity.litellm_write(medium): create/update for keys, teams, users, orgs, customers, budgets, models, credentials, tags, guardrails, fallbacks, MCP servers/toolsets, access groups, policies, evals, agents, workflows, and prompts (create/update/patch).litellm_execute(medium): block/unblock toggles, key regenerate/reset, connection tests, targeted cache delete, applying a guardrail to text, and one-shot dev-loop invocation (test a prompt, invoke an agent) with bounded output.litellm_delete(high): irreversible deletes and cache flushall.litellm_admin(high): proxy-global settings, allowed IPs, global spend reset, bulk user update.
Root: litellm_version returns {"mcp": <package version>, "service": GET /health/readiness}. On LiteLLM v1.93.0 the readiness payload is
{status, db} (that image carries no LiteLLM version field).
Related MCP server: litellm-admin-mcp
Install
uvx --refresh \
--extra-index-url https://nikitatsym.github.io/litellm-mcp/simple \
litellm-mcpAdd the following to your MCP client configuration (Claude Desktop, Cursor, Claude Code, or any MCP-compatible client):
{
"mcpServers": {
"litellm": {
"command": "uvx",
"args": [
"--refresh",
"--extra-index-url",
"https://nikitatsym.github.io/litellm-mcp/simple",
"litellm-mcp"
],
"env": {
"LITELLM_URL": "https://litellm.example.com",
"LITELLM_API_KEY": "sk-your-admin-key"
}
}
}
}Or use the interactive Setup Page to generate the config.
Configuration
Variable | Required | Description |
| Yes | Base URL of the LiteLLM proxy (no trailing slash) |
| Yes | Admin bearer key (master or admin virtual key) |
Both are read lazily: the server imports and lists ops without them, and
fails on the first call that reaches the proxy. LITELLM_API_KEY is sent
as Authorization: Bearer.
Minting an admin key
This MCP drives the proxy administration surface, so it needs an
admin-scoped key, not a plain inference key. The master key works, but a
dedicated virtual key with the proxy_admin role is easier to rotate and
scope.
Admin UI: Virtual Keys -> Create New Key, assign the
proxy_adminrole (or a role carrying admin permissions), and copy the key (shown once).API, calling with the master key:
curl -X POST "$LITELLM_URL/key/generate" \
-H "Authorization: Bearer $LITELLM_MASTER_KEY" \
-H "Content-Type: application/json" \
-d '{"user_role": "proxy_admin", "key_alias": "mcp-admin"}'Using the tools
Each meta-tool takes operation (a PascalCase op name, or help /
schema) plus params (a dict):
litellm_read(operation="help")
litellm_read(operation="help", params={"search": "spend"})
litellm_read(operation="schema", params={"op": "ListKeys"})
litellm_read(operation="ListKeys", params={"team_id": "..."})
litellm_write(operation="GenerateKey", params={"team_id": "..."})
litellm_execute(operation="BlockKey", params={"key": "sk-..."})
litellm_delete(operation="DeleteKeys", params={"keys": ["sk-..."]})operation="help" lists the group's ops; add params={"search": "foo"}
to filter by substring across names and docstrings (it also hints at
matches in other groups). operation="schema" returns one op's full JSON
Schema. Params are validated strictly via Pydantic: unknown keys, wrong
types, and missing required fields return a contextual error result with
field-level detail pointing at operation='schema'.
v2.5 dispatch model
operation='help'renders every op's signature with typed params and a description bullet per field; thesearchparam filters the listing.operation='schema'returns the full JSON Schema for one op (additionalProperties: false, descriptions embedded).Omitted-vs-null. Optional body params default to an internal
_UNSETsentinel. Omitting a param drops it from the request; passing an explicitnullsurvives to the wire as JSONnull- so a caller can clear a nullable field distinctly from leaving it untouched.List slimming. List ops return a slimmed row projection plus truncation metadata (
{"total", "returned", "truncated"}), and secret-bearing fields (credentials, static headers, env vars) are dropped from list output. This keeps large responses within an agent's context budget.Write verification. Create/update ops presence-check that the fields they sent are echoed in the stored row the proxy returns; a silently dropped field raises with the full dotted path, so a partial write cannot pass unnoticed.
Upstream feature gating
Some endpoints depend on the LiteLLM edition or on extra provider config.
Observed on the OSS ghcr.io/berriai/litellm:v1.93.0 image; the MCP does
not special-case them - the upstream API context and body are returned in a
contextual error result.
Enterprise-licensed (fail on the OSS image without LITELLM_LICENSE):
GlobalSpendReport(GET /global/spend/report) - 400, "You must be a LiteLLM Enterprise user".RegenerateKey(POST /key/regenerate) - 500, "Regenerating Virtual Keys is an Enterprise feature".
Present but needs external provider credentials:
evals(CreateEval/CreateEvalRunand the run/get/delete family) - the create body is accepted, then the run fails 500 "OPENAI_API_KEY is required for Evals API". Unusable without a real provider key on the proxy.
Working end to end on OSS (exercised by the integration smokes): keys, teams, users, budgets, models, tags, spend logs, the MCP gateway (servers, health, access groups), policies (create/attach/resolve/delete), A2A agents, workflow runs, and CloudZero settings.
Development
Requires uv. Enable the pre-commit hook once per clone (it runs the full gate on every commit):
git config core.hooksPath .githooksdev.py is the task entry point:
uv run python dev.py check # lint + mypy + codegen sync + tackbox + tests
uv run python dev.py lint # ruff + mypy + codegen sync gate + tackbox
uv run python dev.py test # unit tests only (no docker)
uv run python dev.py e2e # integration smokes (needs the stack up)Integration tests run against an ephemeral LiteLLM + Postgres stack. The npm scripts wrap the compose lifecycle:
npm run litellm:up # compose up -d --wait (first run pulls + migrates)
uv run python dev.py e2e
npm run litellm:down # tear down + remove volumes
npm run litellm:logs # follow container logsCodegen
The tool surface is generated, not hand-transcribed.
codegen/inventory.py fixes the operation list; the judgment layer (param
descriptions, docstring bodies, slim specs, verify skip sets, override list,
and path/body collision dispositions) lives as plain data in
codegen/annotations.py, slims.py, verify.py, overrides.py,
bodyless_ok.py, and path_body.py. codegen/generate.py is a pure function
of the committed OpenAPI snapshot
(codegen/openapi-v1.93.0.json) plus that data, emitting the
src/litellm_mcp/tools/_generated_*.py modules. Generated files are never
hand-edited; ops that need bespoke logic are listed in
codegen/overrides.py and implemented by hand in tools/overrides.py.
The sync gate (uv run python -m codegen.check, part of dev.py lint)
regenerates into a temp dir and fails unless the result is byte-identical
to the committed tree - so a hand-edit of a generated file, a stale data
key, or a drifted snapshot all fail the build. To change the surface: edit
the data (or the snapshot), regenerate, and commit the diff.
License
MIT - see LICENSE.
Available Tools
6 toolslitellm_adminA
Proxy-global LiteLLM administration (high risk): proxy-global settings, allowed IPs, global spend reset, bulk user update.
Call with operation="help" to list all available admin operations. Otherwise pass the operation name and a JSON object with parameters.
Example: litellm_admin(operation="AddAllowedIp", params={"ip": "1.2.3.4"})
| Name | Required | Description | Default |
|---|---|---|---|
| params | No | ||
| operation | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It labels the tool as 'high risk' and lists potentially destructive operations (global spend reset, bulk user update), which is upfront about behavioral traits. It does not detail all side effects, but the risk warning is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: three sentences plus a code example, with no fluff. It front-loads the high-risk purpose and immediately directs the user to the help operation for details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (multiple admin operations), the description provides enough context to start via the help operation and lists example operations. No output schema exists, but the help mechanism compensates. It is adequate for a high-risk admin tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description compensates by explaining the operation parameter as a command name and params as a JSON object. It provides an example and mentions the help operation, adding meaning beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as for 'Proxy-global LiteLLM administration' and lists specific operations (allowed IPs, global spend reset, bulk user update), distinguishing it from siblings like litellm_read, litellm_delete, litellm_execute, and litellm_version.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description instructs to call with operation='help' to list available operations and provides an example, giving a clear entry point. It does not explicitly state when not to use, but the context of high-risk admin operations compared to siblings implies appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
litellm_deleteB
Delete LiteLLM resources (destructive, irreversible), including cache flushall.
Call with operation="help" to list all available delete operations. Otherwise pass the operation name and a JSON object with parameters.
Example: litellm_delete(operation="DeleteKeys", params={"keys": ["sk-..."]})
| Name | Required | Description | Default |
|---|---|---|---|
| params | No | ||
| operation | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly marks the tool as 'destructive, irreversible', which is a key behavioral trait. However, it does not disclose any other side effects, permission requirements, or error behavior beyond the single example.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is relatively short and front-loads the destructive nature. The example is helpful, though it could be more tightly structured. Unnecessary repetition of 'litellm_delete' could be removed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and low schema coverage, the description should provide more context about return values, error handling, and complete parameter semantics. The current description lacks this completeness, making it insufficient for complex usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% parameter description coverage, so the description must compensate. It mentions 'operation' and 'params' but only through a single example; it does not explain the structure of 'params' or specify valid operations beyond the hint to use 'help'. This leaves the agent with insufficient guidance for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool deletes LiteLLM resources and mentions cache flushall, making the purpose concrete. However, it does not enumerate the specific resource types that can be deleted, leaving room for ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains how to list available operations with 'help' and provides an example call, which guides usage. But it does not differentiate from sibling tools like litellm_read or litellm_execute, missing a clear when-to-use vs alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
litellm_executeA
Execute reversible actions on LiteLLM resources: block/unblock toggles, key regenerate/reset, connection tests, targeted cache delete.
Call with operation="help" to list all available execute operations. Otherwise pass the operation name and a JSON object with parameters.
Example: litellm_execute(operation="BlockKey", params={"key": "sk-..."})
| Name | Required | Description | Default |
|---|---|---|---|
| params | No | ||
| operation | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must carry full burden. Mentions 'reversible actions' but includes 'targeted cache delete', implying some irreversibility. Lacks details on side effects, permissions, rate limits, or error handling. Important behavioral traits are missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences plus an example. First sentence immediately states purpose, second gives help mechanism, third example. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 2 params, no output schema, and no annotations, the description covers the broad purpose and usage pattern but lacks information about return values, error handling, and a full list of operations. Adequate but leaves gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. Describes 'operation' as a string that can be 'help' or an operation name, and 'params' as a JSON object. Provides an example. However, does not enumerate common operations or parameter structures beyond the example, leaving the agent dependent on calling help.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states specific verb+resource ('Execute reversible actions on LiteLLM resources') with concrete examples (block/unblock, key regenerate/reset, cache delete). Clearly distinguishes from siblings like litellm_read (read-only) and litellm_admin (administration).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance to call with operation='help' to discover operations and an example invocation. Does not explicitly exclude alternatives or state when not to use, but sibling names and purpose make context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
litellm_readA
Query LiteLLM proxy data (safe, read-only): lists, infos, spend/usage, health, settings reads, token/cost utils, MCP gateway registry reads.
Call with operation="help" to list all available read operations. Otherwise pass the operation name and a JSON object with parameters.
Example: litellm_read(operation="ListKeys")
| Name | Required | Description | Default |
|---|---|---|---|
| params | No | ||
| operation | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It transparently declares the tool as 'safe, read-only' and enumerates the types of data accessible. This sufficiently conveys the non-destructive nature, though it lacks details on error handling or access requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences plus an example, front-loading the purpose and usage. Every sentence adds value: purpose, discovery method, and example. No redundant words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's dynamic nature (many sub-operations), the description is reasonably complete. It explains how to discover operations via help and provides a working example. It could mention return value format or error behavior, but the limited schema and no output schema make this acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description adds critical meaning: it explains that 'operation' is the operation name and that 'params' is a JSON object with parameters. The example and the help mechanism provide concrete guidance, compensating for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool is for querying LiteLLM proxy data in a safe, read-only manner and lists categories of operations (lists, infos, spend/usage, health, settings reads, etc.). It distinguishes from sibling tools like litellm_admin, litellm_delete, litellm_execute by emphasizing the read-only nature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs to call with operation="help" to list all available read operations, providing a clear discovery mechanism. It gives a concrete example (litellm_read(operation="ListKeys")). It does not explicitly state when not to use it, but the read-only context and sibling differentiation imply appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
litellm_versionA
Get the MCP server version and the LiteLLM service readiness.
mcp is this package's version (importlib metadata). service is
GET /health/readiness, reporting the proxy's status and database
connectivity - on LiteLLM v1.93.0 that payload is {status, db}, with no
LiteLLM version field.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully bears the burden of behavioral disclosure. It details that the output includes `mcp` (via importlib metadata) and `service` (via GET /health/readiness), and notes specific behavior for LiteLLM v1.93.0 where the payload is {status, db} without a version field. This is comprehensive and accurate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, consisting of two clear sentences. The first sentence states the core purpose, and the second provides necessary technical details without extraneous words. It is well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the tool's simplicity, the description covers the expected output fields, their derivation, and version-specific notes. Given the presence of an output schema (which may provide additional structure), the description is complete enough for an agent to understand and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the description adds meaning by explaining the output structure and data sources. According to guidelines, zero parameters yields a baseline of 4, and the description meets this baseline without needing further param info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool's purpose: 'Get the MCP server version and the LiteLLM service readiness.' It uses specific verbs ('Get') and resources ('version', 'service readiness'), and clearly distinguishes from sibling tools focused on read, admin, delete, and execute operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly suggests usage for checking server version and health, but it does not explicitly state when to use this tool versus alternatives or provide any exclusions. No explicit usage guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
litellm_writeA
Create or update LiteLLM resources (non-destructive): keys, teams, users, orgs, customers, budgets, models, credentials, tags, guardrails, fallbacks, MCP servers/toolsets, access groups.
Call with operation="help" to list all available write operations. Otherwise pass the operation name and a JSON object with parameters.
Example: litellm_write(operation="GenerateKey", params={"team_id": "..."})
| Name | Required | Description | Default |
|---|---|---|---|
| params | No | ||
| operation | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses the non-destructive nature and create/update semantics, but doesn't detail permissions, idempotency, or effects on existing resources. With no annotations, more depth would be helpful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences plus a clear example; no redundant information. The key points are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a broad multi-resource tool, the description adequately orients the agent, leveraging the operation='help' mechanism to discover specifics. No output schema exists, but the help command mitigates this gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains the operation parameter via the help mechanism and gives an example with params, compensating for the schema's lack of detail. It clarifies that params is a JSON object but doesn't enumerate possible values beyond the example.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Create or update LiteLLM resources (non-destructive)' with a list of resource types, distinguishing this write tool from siblings like litellm_delete and litellm_read. The verb and resource scope are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage instructions: call with operation='help' to list operations, otherwise pass operation name and params. It doesn't explicitly exclude use cases but the non-destructive label implies when to use vs delete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
The tools' action categories overlap significantly: litellm_admin includes global spend reset and bulk updates (write-like actions), while litellm_execute includes key reset and cache delete (write/delete-like actions). This makes it hard for an agent to choose the correct tool without diving into each tool's internal operation list.
All tools share the litellm_ prefix and snake_case, creating a predictable pattern. However, two tools (version, admin) use nouns rather than verbs, deviating from the verb-based pattern of the other four.
Six tools is an appropriate scope for a LiteLLM proxy management server, covering version, read, write, delete, execute, and admin categories without being unwieldy.
The tool set provides a broad lifecycle: read, write, delete, and execute actions, plus a dedicated admin tool for global settings. It covers the core proxy management operations, though the underlying operation lists are hidden.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
MCP server for building and testing AI agents with multi-model experimentation and insights.
Related MCP Servers
- AlicenseAqualityAmaintenanceMCP server for Portkey Admin API - 116 tools for prompts, configs, analytics & more.1711,1226MIT
- FlicenseNot gradedqualityDmaintenanceExposes LiteLLM Proxy admin APIs as MCP tools for managing internal users, virtual keys, and spend logs via streamable-http, enabling agents to administer LiteLLM without custom HTTP glue.1
- AlicenseNot gradedqualityDmaintenanceMCP server that provides tools to interact with the LiteLLM proxy API, enabling LLM completions, embeddings, image generation, and admin operations.18MIT
- AlicenseAqualityDmaintenanceMCP server for ProxyLLM, the OpenAI-compatible LLM gateway, enabling live model catalogs, plan-savings calculations, routing key management, and autonomous account signup.9123MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/nikitatsym/litellm-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server