METRC MCP服务器
MCP(模型上下文协议)服务器,公开用于LLM的METRC大麻跟踪API工具。在科罗拉多沙盒中使用Basic Auth。
设置
- 安装依赖项:
npm install- 配置凭据 在
.env:
METRC_API_URL=https://sandbox-api-co.metrc.com
METRC_VENDOR_API_KEY=your-vendor-key
METRC_USER_API_KEY=your-user-key- 添加到光标MCP配置 (
.cursor/mcp.json或光标设置→ MCP):
"metrc": {
"command": "node",
"args": ["/path/to/metrc-mcp/server.js"],
"cwd": "/path/to/metrc-mcp"
}或者把钥匙交进去 env:
"metrc": {
"command": "node",
"args": ["/path/to/metrc-mcp/server.js"],
"cwd": "/path/to/metrc-mcp",
"env": {
"METRC_VENDOR_API_KEY": "your-vendor-key",
"METRC_USER_API_KEY": "your-user-key"
}
}工具
| 工具 | 说明 |
|---|---|
metrc_get_facilities | 列出设施和许可证编号 |
metrc_get_strains | 活性菌株(需要许可证编号) |
metrc_get_items | 活动项目/产品 |
metrc_get_locations | 活动地点 |
metrc_get_packages | 活动包 |
metrc_get_harvests | 积极收获 |
metrc_get_plant_batches | 活性植物批次 |
metrc_get_units_of_measure | 计量单位 |
metrc_get_waste_methods | 废物处理方法 |
metrc_get_employees | 员工 |
metrc_get_plants_flowering | 开花植物(用于收获) |
metrc_get_plants_vegetative | 营养植物 |
metrc_harvest_plants | 从开花植物中收获 |
metrc_get_location_types | 位置类型(用于创建位置) |
metrc_create_location | 创建位置 |
metrc_get_tags_plant_available | 可用植物标签 |
metrc_get_plant_batch_types | 植物批次类型(种子、克隆等) |
metrc_create_plant_batch_plantings | 创建植物批次和种植 |
metrc_change_plants_growth_phase | 改变植物生长阶段(例如到开花期) |
创造开花植物
重新启动MCP服务器 拉动后,Cursor会看到新工具。然后:
metrc_get_location_types(license_number)–选择一个LocationTypeId其中类型允许植物生长(例如生长室)。metrc_create_location(license_number、name、location_type_id)-创建一个可以容纳植物的位置(您当前唯一的位置是“集中式处理中心”,不允许种植植物)。metrc_get_tags_plant_available(license_number)-获取可用的植物标签。metrc_create_plant_batch_plantings(license_number、plant_batch_name、strain_id、location_id、type、count、planting_date、plant_labels)-创建批次和单个植物(使用来自metrc_get_strains,步骤2中的位置Id,键入例如。"Clone",以及步骤3中每株植物一个标签标签)。metrc_get_plants_vegetative(license_number)-列出营养植物(新植物可以从这里开始种植)。metrc_change_plants_growth_phase(许可证编号,生长阶段:"Flowering"、change_date、plant_ids或plant_labels)–将这些植物移动到Flowering。
然后使用 metrc_get_plants_flowering 确认,以及 metrc_harvest_plants 当准备好收获时。
技能(光标)
更高层次的分析模式存在 skills/ 并安装为 光标规则 在 .cursor/rules/当此仓库在Cursor中打开并且METRC MCP连接时,AI将使用这些技能来回答分析问题。
| 技能 | 触发器 | 规则文件 |
|---|---|---|
| 需要注意 | “需要注意什么?”,合规性,过期标签 | metrc-skill-needs-attention.mdc |
| 设施概述 | “概述设施”,概述 | metrc-skill-facility-summary.mdc |
| 可追溯性 | “这个包裹是从哪里来的?”,收获产出 | metrc-skill-traceability.mdc |
| 库存汇总 | “库存中有什么?”,按位置/应变分类 | metrc-skill-inventory-summary.mdc |
| 审核就绪快照 | “一周审计——检查风险领域” | metrc-skill-audit-ready-snapshot.mdc |
| 先进先出/老化拉动 | “样品/供应商天数/折扣要取什么?” | metrc-skill-fifo-aging-pull.mdc |
详细信息:请参见 skills/README.md 和那个 .mdc 文件位于 .cursor/rules/无需额外的安装步骤:在Cursor中打开此仓库,规则适用。
外部LLM(任何MCP客户端)
服务器公开了以下技能 MCP资源 因此,任何客户端(Claude Desktop、自定义应用程序等)都可以加载它们:
resources/list--返回URI,如下所示metrc://skills/needs-attention,metrc://skills/facility-summary等等。resources/read随着uri: "metrc://skills/needs-attention"--返回技能标记。
客户端可以将该文本作为上下文传递给LLM,然后LLM按照技能中的描述调用METRC工具。看 skills/README.md 查看URI的完整列表。
产品/功能路线图
docs/MASTER_FRAMEWORK.md 将完整的产品/功能框架(批量操作、老化、合规性、产量等)映射到这个仓库(MCP工具+技能)和应用程序(UI、规则引擎、外部数据)中可以构建的内容。使用它来优先考虑新技能或工具。
Vercel Edge上的聊天和MCP
设置: 在Vercel项目中设置OPENROUTER_API_KEY和METRC\_\*(设置→ 环境变量),然后运行 ./scripts/setup-vercel.sh 部署。看 **** 完整的步骤。
回购包括 Vercel Edge 端点,以便您可以通过HTTP承载聊天UI和METRC MCP:
| 端点 | 描述 |
|---|---|
POST /api/chat | 使用OpenRouter聊天(默认型号: openai/gpt-4o).该模型可以访问所有METRC工具;当它调用一个工具时,Edge会运行它并返回结果。主体: { "message": "List my facilities" } 或 { "messages": [...] }. |
POST /api/mcp | HTTP上的MCP:JSON-RPC tools/list 和 tools/call 因此,任何客户端都可以列出并调用METRC工具。 |
聊天界面: 部署后,打开 https://your-project.vercel.app/chat (或 /chat.html).API URL默认为相同的来源;使用设施下拉菜单并发送消息。 沙盒视图: /sandbox (或 /sandbox.html)检查所选设施的设施、位置、菌株、物品、收成和包装。
部署: 将仓库连接到Vercel;这 api/ 和 lib/ 文件部署为Edge(请参见 export const config = { runtime: 'edge' } 在 api/chat.js 和 api/mcp.js).
环境变量(Vercel项目设置或 .env):
- 聊天(OpenRouter): 更喜欢
OPENROUTER_KEY_URL(返回当前键的铁路边URL;我们旋转键)。否则OPENROUTER_API_KEY.可选:OPENROUTER_MODEL(例如。openai/gpt-4o). - METRC(与stdio服务器相同):
METRC_API_URL(默认值https://sandbox-api-co.metrc.com),METRC_VENDOR_API_KEY,METRC_USER_API_KEY.
聊天请求示例:
curl -X POST https://your-project.vercel.app/api/chat \
-H "Content-Type: application/json" \
-d '{"message": "What facilities do I have?"}'MCP工具/调用示例(通过以下方式获取工具后 tools/list):
curl -X POST https://your-project.vercel.app/api/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"metrc_get_facilities","arguments":{}}}'沙盒视图
文档(GitHub页面)
完整文档发布于 GitHub页面 从 docs/ 文件夹:
- 现场:
- 启用(已通过完成
gh api): 来源是分支 主要的,文件夹 /docs。要重新启用或更改: 设置→ Pages,或gh api repos/OWNER/REPO/pages -X PUT --input -随着{"source":{"branch":"main","path":"/docs"}}. - 页面映射到框架: 这 框架 页面是主功能和功能框架,每个部分都链接到 工具 和 技能.使用文档站点作为MCP+框架参考的唯一位置。
填充沙盒(完整生命周期)
在科罗拉多州的沙箱中播种12个菌株和完整的种子销售流程(种植)→ 开花→ 收获→ 包裹→ 完成):
npm run populate-sandbox需要a .env 在repo根目录中 METRC_VENDOR_API_KEY 和 METRC_USER_API_KEY (复制自 .env.example 并添加METRC沙盒密钥)。该脚本将创建菌株(SBX菌株1-12),运行沙箱设置,如果沙箱提供,则创建一个可种植的位置,创建植物并将其移动到开花状态,创建收获,创建物品和包装,并完成包装。如果沙盒没有位置类型 ForPlants: true,跳过种植;如果API允许,您仍然可以获得菌株并可以创建独立的包。
模拟年份(整个生命周期): 要填充约12个月的回溯数据(收获浪费、完成收获、实验室类型、完成包、可选调整),请运行 npm run populate-simulated-year。参见 沙盒视图——§11填充脚本.
测试
node server.js
# Server runs on stdio; Cursor/other MCP clients connect to it