大麻追踪协议服务器

METRC MCP Server是一个基于Model Context Protocol的服务器,用于为大语言模型提供METRC大麻追踪API工具,支持Basic Auth认证并使用科罗拉多沙盒环境。

  • by F8ai
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 F8ai/metrc-mcp

使用说明

METRC MCP服务器

MCP(模型上下文协议)服务器,公开用于LLM的METRC大麻跟踪API工具。在科罗拉多沙盒中使用Basic Auth。

设置

  1. 安装依赖项:

    npm install
    
  2. 配置凭据 在 .env:

    METRC_API_URL=https://sandbox-api-co.metrc.com
    METRC_VENDOR_API_KEY=your-vendor-key
    METRC_USER_API_KEY=your-user-key
    
  3. 添加到光标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会看到新工具。然后:

  1. metrc_get_location_types (license_number)–选择一个 LocationTypeId 其中类型允许植物生长(例如生长室)。
  2. metrc_create_location (license_number、name、location_type_id)-创建一个可以容纳植物的位置(您当前唯一的位置是“集中式处理中心”,不允许种植植物)。
  3. metrc_get_tags_plant_available (license_number)-获取可用的植物标签。
  4. 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中每株植物一个标签标签)。
  5. metrc_get_plants_vegetative (license_number)-列出营养植物(新植物可以从这里开始种植)。
  6. 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、自定义应用程序等)都可以加载它们:

  1. resources/list --返回URI,如下所示 metrc://skills/needs-attention, metrc://skills/facility-summary等等。
  2. 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 部署。看 使用GitHub和Vercel进行设置 完整的步骤。

回购包括 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/ 文件夹:

  • 现场: https://f8ai.github.io/metrc-mcp/
  • 启用(已通过完成 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