跳至主要内容
小龙虾小龙虾AI
🤖

Frappe MCP

Pre-defined business workflows combining multiple MCP tools for CRM, sales, purchase, inventory, project, payments, and utility tasks in ERPNext.

下载332
星标0
版本1.0.0
商业运营
安全通过
💬Prompt

技能说明

Business Claw Skills

High-level business workflows that combine multiple MCP tools into reusable, executable skills for ERPNext.

Overview

Skills are pre-defined workflows stored as JSON files in definitions/. Each skill defines:

  • Triggers: Natural language patterns that activate the skill
  • Tools: MCP tools to execute in sequence
  • Input Schema: Required and optional parameters
  • Workflow Steps: Ordered execution plan with variable substitution
  • Guardrails: Validation rules for safe execution
  • Output Template: Formatted response message

Available Skills

CRM Skills

SkillDescriptionCategory
create_customerCreate a new customer with contact and addresscrm
create_leadRegister a new leadcrm
create_supplierAdd a new suppliercrm

Sales Skills

SkillDescriptionCategory
create_sales_orderCreate a sales ordersales
create_quotationCreate a quotationsales
create_invoiceGenerate sales invoicesales
complete_sales_workflowFull Quotation → SO → Invoice → Paymentsales

Purchase Skills

SkillDescriptionCategory
create_purchase_orderCreate a purchase orderpurchase

Inventory Skills

SkillDescriptionCategory
create_itemCreate new item in inventoryinventory
stock_entryRecord stock movementsinventory

Project Skills

SkillDescriptionCategory
create_projectCreate a new projectproject

Financial Skills

SkillDescriptionCategory
process_paymentRecord payment entrypayments

Utility Skills

SkillDescriptionCategory
search_recordsSearch across DocTypesutility
bulk_operationBulk create/update/deleteutility
generic_taskFlexible multi-step workflowutility

Usage

Loading Skills

from bc_skills import get_available_skills, load_skill

# List all available skills
skills = get_available_skills()
print(skills)  # ['create_customer', 'create_sales_order', ...]

# Load a specific skill
skill = load_skill("create_customer")

Executing Skills

from bc_skills.loader import execute_skill

result = execute_skill(
    name="create_customer",
    context={
        "customer_name": "ACME Corp",
        "customer_type": "Company",
        "customer_group": "Commercial",
        "email": "contact@acme.com"
    },
    user="Administrator"
)

print(result)

Trigger Examples

Skills respond to natural language triggers:

Trigger PhraseSkill
"create customer"create_customer
"add customer"create_customer
"new customer"create_customer
"complete sales workflow"complete_sales_workflow
"full sales process"complete_sales_workflow
"process order to payment"complete_sales_workflow
"create sales order"create_sales_order
"generate invoice"create_invoice

Skill Definition Schema

{
  "name": "skill_name",
  "version": "1.0.0",
  "description": "What the skill does",
  "author": "Business Claw Team",
  "category": "crm|sales|purchase|inventory|project|payments|utility",
  
  "triggers": [
    "trigger phrase 1",
    "trigger phrase 2"
  ],
  
  "tools": [
    {
      "name": "tool_name",
      "description": "What it does",
      "required": true
    }
  ],
  
  "input_schema": {
    "type": "object",
    "properties": {
      "param_name": {
        "type": "string",
        "description": "Parameter description",
        "enum": ["option1", "option2"]
      }
    },
    "required": ["required_param"]
  },
  
  "workflow": {
    "steps": [
      {
        "step": "step_name",
        "tool": "tool_to_call",
        "arguments": {
          "doctype": "DocType",
          "data": {
            "field": "${variable}"
          }
        }
      }
    ]
  },
  
  "guardrails": {
    "rule_name": true
  },
  
  "output_template": "Formatted output {{variable}}"
}

Variable Substitution

Workflow steps support ${variable} substitution from execution context:

{
  "step": "create_order",
  "tool": "create_document",
  "arguments": {
    "doctype": "Sales Order",
    "data": {
      "customer": "${customer_id}",
      "items": "${items}"
    }
  }
}

Creating Custom Skills

  1. Create a JSON file in definitions/
  2. Define triggers, tools, input schema, and workflow
  3. Use the SkillLoader to load and execute

Example custom skill structure:

{
  "name": "my_custom_skill",
  "version": "1.0.0",
  "description": "My custom workflow",
  "category": "utility",
  "triggers": ["my trigger"],
  "tools": [
    {"name": "get_doctype_meta", "required": true},
    {"name": "create_document", "required": true}
  ],
  "input_schema": {
    "type": "object",
    "properties": {
      "param1": {"type": "string"}
    },
    "required": ["param1"]
  },
  "workflow": {
    "steps": [
      {
        "step": "step1",
        "tool": "get_doctype_meta",
        "arguments": {"doctype": "Item"}
      }
    ]
  },
  "output_template": "Result: {{result}}"
}

Architecture

  • loader.py - SkillLoader class manages skill loading and execution
  • definitions/ - JSON files containing skill definitions
  • Skills use the ToolRouter to execute MCP tools in sequence
  • Guardrails provide validation before skill execution

Requirements

  • Frappe/ERPNext environment
  • bc_mcp module for tool routing
  • JSON or YAML skill definitions

License

MIT

如何使用「Frappe MCP」?

  1. 打开小龙虾AI(Web 或 iOS App)
  2. 点击上方「立即使用」按钮,或在对话框中输入任务描述
  3. 小龙虾AI 会自动匹配并调用「Frappe MCP」技能完成任务
  4. 结果即时呈现,支持继续对话优化

相关技能