bifrost-budget
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., "@bifrost-budgetwhat's my current quota snapshot?"
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.
Bifrost Budget
Bifrost Budget is a read-only MCP server that retrieves the caller's quota snapshot from Bifrost and returns normalized budget data with derived remaining values.
This repository includes:
a Python MCP server implemented with the official MCP SDK
a quota normalization layer that flattens upstream Bifrost responses into a stable shape
a container image and Helm chart for deployment
CI that runs tests and builds a multi-arch Docker image
Architecture
The server exposes one primary tool:
get_quota— fetches the caller's Bifrost quota snapshot fromGET /api/governance/virtual-keys/quota
Authentication is read-only and self-service:
production callers should send an Authorization header to Bifrost, and this service forwards that authenticated request directly when the caller's own budget snapshot is requested
the server derives safe caller identity fields from JWT claims for tracing and routing context, but it no longer depends on a JWT-to-virtual-key exchange map
for local development or explicit non-production fallback, pass
virtual_keyto the tool directly, sendx-bf-vkin the MCP request headers with a virtual key, or setBIFROST_VIRTUAL_KEYin the runtime environment
The tool never returns the raw virtual key. It only returns derived quota data.
Related MCP server: financial-trading-risk-aiops-assistant
Configuration
Required:
BIFROST_API_BASE_URL— base URL for the Bifrost API, for examplehttps://bifrost.example.com
Optional:
BIFROST_QUOTA_PATH— defaults to/api/governance/virtual-keys/quotaBIFROST_TIMEOUT_SECONDS— defaults to15BIFROST_LOG_LEVEL— defaults toINFO; controls the structured application logsBIFROST_TRANSPORT—streamable-http(default) orstdioBIFROST_HOST— defaults to0.0.0.0BIFROST_PORT— defaults to8080BIFROST_MCP_PATH— defaults to/mcpBIFROST_VIRTUAL_KEY— fallback caller key for local development or explicit non-production use only
Local development
uv venv .venv
. .venv/bin/activate
uv pip install -e '.[dev]'
pytestRun the server over HTTP:
export BIFROST_API_BASE_URL=https://bifrost.example.com
export BIFROST_VIRTUAL_KEY=vk_...
uv run bifrost-budgetIn production, prefer the caller's Authorization header path and do not rely on a static BIFROST_VIRTUAL_KEY unless you are intentionally using a fallback.
Run the server over stdio:
export BIFROST_TRANSPORT=stdio
export BIFROST_API_BASE_URL=https://bifrost.example.com
uv run bifrost-budgetLogging
The server emits structured JSON logs to standard output for:
startup
auth source selection
tool invocation
upstream quota requests and responses
errors
The logs intentionally omit raw virtual keys and Authorization values; they record only the chosen auth path, a non-reversible token fingerprint for correlation, and safe JWT claim fields such as issuer, subject, and tenant when the token is already a JWT.
Container
Build:
docker build -t bifrost-budget:local .Run:
docker run --rm -p 8080:8080 \
-e BIFROST_API_BASE_URL=https://bifrost.example.com \
-e BIFROST_VIRTUAL_KEY=vk_... \
bifrost-budget:localThe environment-based key above is a fallback example for local/dev or explicit non-production use. Production deployments should rely on the caller's Authorization header path.
Health check:
curl http://localhost:8080/healthzHelm deployment
Chart path: charts/bifrost-budget
Install:
helm upgrade --install bifrost-budget charts/bifrost-budget \
--namespace bifrost-budget \
--create-namespace \
--set image.tag=latest \
--set ingress.enabled=true \
--set ingress.className=traefik \
--set ingress.hosts[0].host=bifrost-budget.example.internal \
--set env.apiBaseUrl=https://bifrost.oly.workside.winIf you need an explicit fallback key for local/dev or other non-production use, add a secret and wire it into env.virtualKey.existingSecret:
kubectl create secret generic bifrost-budget-vk \
--from-literal=BIFROST_VIRTUAL_KEY=vk_...Then install with --set env.virtualKey.existingSecret=bifrost-budget-vk.
The chart configures readiness and liveness probes against /healthz and exposes the MCP server on port 8080.
Kubernetes examples
The Helm chart is the primary production path, but these plain Kubernetes manifests show the same container wiring in a copy-paste friendly form. They use the GHCR image published by CI and keep auth header-first, so no static Bifrost token is required for production use.
Deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
name: bifrost-budget
spec:
replicas: 2
selector:
matchLabels:
app.kubernetes.io/name: bifrost-budget
template:
metadata:
labels:
app.kubernetes.io/name: bifrost-budget
spec:
containers:
- name: bifrost-budget
image: ghcr.io/jasonrve/bifrost-budget:latest
ports:
- name: http
containerPort: 8080
env:
- name: BIFROST_API_BASE_URL
value: https://bifrost.example.com
- name: BIFROST_TRANSPORT
value: streamable-http
- name: BIFROST_MCP_PATH
value: /mcp
- name: BIFROST_TIMEOUT_SECONDS
value: "15"Service:
apiVersion: v1
kind: Service
metadata:
name: bifrost-budget
spec:
type: ClusterIP
selector:
app.kubernetes.io/name: bifrost-budget
ports:
- name: http
port: 80
targetPort: http
protocol: TCPThese examples mirror the chart's container port, service port, and /healthz-based probes; use the Helm chart when you want the full production defaults.
Usage from an MCP client
Clients can call get_quota and provide the upstream credential in one of four ways:
production path: caller's Authorization header
fallback request header:
x-bf-vkfallback tool argument:
virtual_keyfallback environment variable:
BIFROST_VIRTUAL_KEY
The fallback paths are intended for local/dev or explicit non-production use.
The response includes normalized budget rows and a summary with derived totals and remaining values.
If your upstream Bifrost deployment uses a separate enterprise token-exchange layer, configure that outside this server and pass the resulting caller Authorization header through unchanged; this service intentionally no longer remaps callers to virtual keys.
Repository layout
src/bifrost_budget/— server, client, normalization, and settingstests/— unit and integration testsDockerfile— production container imagecharts/bifrost-budget/— Helm chart.github/workflows/ci.yml— test + image build pipeline
Available Tools
1 toolget_quotaGet Bifrost quota snapshotA
Return the caller's Bifrost quota snapshot by calling the configured quota endpoint with the caller's Authorization header when present. Explicit virtual_key, x-bf-vk, and BIFROST_VIRTUAL_KEY remain available for local and non-production fallback use.
| Name | Required | Description | Default |
|---|---|---|---|
| virtual_key | No | ||
| api_base_url | No |
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, the description carries the full burden. It discloses that the tool calls a configured endpoint, uses the caller's Authorization header when present, and falls back to explicit virtual_key/x-bf-vk/BIFROST_VIRTUAL_KEY in non-production environments. It stops short of describing precedence, error behavior, or rate limits, but the core behavioral profile is visible.
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 one dense sentence that front-loads the core behavior and then adds only relevant auth context. Every clause earns its place, and there is no filler or repetition of the title or schema.
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 tool with two optional parameters and an output schema, the description covers the main behavior and authentication fallback well. However, api_base_url is left completely unexplained, and the precedence between Authorization header and virtual_key is not stated. These are clear gaps for an agent trying to call the tool correctly in edge cases.
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 description coverage is 0%, so the description must compensate. It does explain virtual_key as an explicit fallback credential, but it never mentions api_base_url or how it relates to the 'configured quota endpoint.' The agent is left to guess whether api_base_url overrides configuration, which is a significant semantic gap.
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 states a specific verb and resource: 'Return the caller's Bifrost quota snapshot by calling the configured quota endpoint.' It clarifies that the result is caller-specific and not a global quota, going well beyond the title. Even without sibling tools, an agent knows exactly what operation this performs.
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 gives clear context for how authentication works: it uses the caller's Authorization header when present, with virtual keys available 'for local and non-production fallback use.' It does not explicitly list when not to use the tool or mention alternatives, but with no siblings and a clear read-only purpose, the usage context is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
There is only one tool, so there is no possibility of confusing it with another. Its description clearly scopes it to retrieving a Bifrost quota snapshot.
The single tool name 'get_quota' follows a clear verb_noun convention and is descriptive. There are no other names to create inconsistency.
One tool is minimal and feels thin for a server named 'bifrost-budget'. It may be acceptable as a narrow quota-check adapter, but the count is borderline.
The tool surface only supports reading a quota snapshot, with no create, update, delete, or list operations. This leaves significant gaps if the server is meant to support budget or quota management workflows.
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
Query OneLens cloud-cost data in natural language: breakdowns, trends, cost centers. Read-only.
Read-only AWS cost analysis: find idle and underutilized resources, with evidence.
Search, query, and update budgets, transactions, contacts, and purchase orders in Saturation.
Read-only XRP Ledger MCP tools with proof-annotation envelopes and signed daily snapshots.
Related MCP Servers
- AlicenseAqualityCmaintenanceProvides read-only visibility into Snowflake warehouse cost and query performance, including credit usage by warehouse, expensive queries, and heuristic right-sizing recommendations.6MIT
- AlicenseNot gradedqualityAmaintenanceProvides read-only MCP tools for market snapshots, position risk, order reconciliation, and daily report previews with deterministic financial calculations, evidence chains, and audit trails.MIT
- AlicenseNot gradedqualityBmaintenanceEnables deterministic analysis of a single Agent tool-catalog snapshot and comparison of two snapshots through read-only JSON-RPC tools, reporting digests, schema statistics, duplicates, collisions, budget checks, and diffs.Apache 2.0
- -licenseNot gradedqualityCmaintenanceEnables read-only access to Addepar portfolio and ownership data for financial reporting, with transparent provenance caveats and compliance-oriented audit logging.
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/Jasonrve/bifrost-budget'
If you have feedback or need assistance with the MCP directory API, please join our Discord server