metrc-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| METRC_STATE | Yes | Two-letter state code, e.g. 'ok' | |
| METRC_SANDBOX | No | Set to 'true' to use sandbox instance (default false) | false |
| METRC_BASE_URL | No | Base URL override for testing (e.g., mock server) | |
| METRC_ALLOW_WRITES | No | Set to 'true' to enable write tools (default false) | false |
| METRC_USER_API_KEY | Yes | METRC user API key (password for Basic auth) | |
| METRC_LICENSE_NUMBER | No | Optional default license number | |
| METRC_VENDOR_API_KEY | Yes | METRC vendor API key (username for Basic auth) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_facilitiesA | List the facilities the configured METRC user key can access, with license numbers and license types. Call this first if you don't know which license number to use for other tools. |
| list_active_packagesA | List active (unfinished) packages at a facility: label, item, quantity, lab testing state, and hold status. This is the day-to-day inventory view for a processor. |
| get_packageA | Look up a single package by its METRC tag label (e.g. 1A4FF0100000022000000123) and return its full record, including source and testing details. |
| finish_packageA | Mark a zero-quantity package as finished, removing it from active inventory. This modifies the state compliance record. Requires METRC_ALLOW_WRITES=true. |
| list_itemsA | List the facility's item catalog (the product definitions packages are created against): name, category, and unit of measure. |
| list_incoming_transfersA | List incoming transfers for a facility: manifest number, shipper, and package count. Useful for reconciling deliveries against manifests. |
| list_outgoing_transfersA | List outgoing transfers for a facility: manifest number, recipient, and package count. |
| get_lab_test_resultsA | Fetch lab test results for a package by its numeric package ID (not the tag label — use get_package first to resolve the ID). Returns test type, pass/fail, measured level, and testing lab. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 8 tools
Each tool targets a distinct resource and action: facilities, active packages, single package lookup, finishing packages, items, incoming/outgoing transfers, and lab results. Even the package-related tools are clearly separated by scope (list vs. get vs. lab results).
Tool names consistently follow a verb_noun pattern using snake_case, with list_ for collection queries, get_ for single-record lookups, and finish_ for the one mutation. This makes the toolset predictable and easy for an agent to route.
Eight tools is a well-scoped size for this domain. Each tool covers a meaningful part of the METRC workflow without unnecessary redundancy or bloat.
The read-side coverage is solid for facilities, packages, items, transfers, and lab results, and finish_package provides one mutation. However, common lifecycle operations such as creating or adjusting packages, receiving incoming transfers, and creating outgoing transfers are missing, leaving agents able to observe but not fully complete many compliance workflows.