Frappe应用分析协议

一个帮助AI代理理解和操作Frappe应用的模型上下文协议,提供语义分析和代码探索功能。

  • by anvie
  • Rust
  • 本地部署
  • 13 星标
  • 更新于
在 GitHub 查看 anvie/frappe-mcp

使用说明

Frappe MCP

一种模型上下文协议(MCP),旨在帮助人工智能代理理解和操作Frappe应用程序。该工具为Frappe代码库提供了语义分析和探索功能。

特点/特性

  • 自动分析在服务器启动时,自动分析文件变化时的Frappe应用程序结构
  • 文档类型管理完整的文档类型(DocType)生命周期,包括信息检索、模板生成和数据库模式访问
  • 代码分析符号搜索、函数签名提取和字段使用追踪
  • 测试集成为模块或特定的文档类型执行Frappe单元测试
  • 开发工具为文档类型(DocTypes)和网页生成样板代码
  • 数据库访问直接执行MariaDB查询并集成bench命令
  • 关系映射分析并可视化DocType之间的关系和依赖性
  • MCP集成用于AI代理通信的标准MCP服务器接口

可用工具

核心分析工具

  • **find_symbols**在应用程序的源代码文件中搜索符号,支持模糊匹配
  • **find_field_usage**在代码中搜索对特定DocType字段的引用
  • **search_frappe_docs**使用模糊匹配和类别过滤搜索嵌入的Frappe框架文档
  • **read_frappe_doc**通过ID阅读特定Frappe文档文件的全部内容

文档类型管理

  • **get_doctype**通过名称获取全面的文档类型(DocType)信息(例如,“销售发票”)
  • **get_doctype_db_schema**获取特定文档类型的数据库模式
  • **create_doctype**生成带有JSON元数据、Python控制器和JS表单文件的模板DocType结构
  • **analyze_links**通过检查链接(Link)、表格(Table)和选择(Select)字段,分析并绘制文档类型(DocTypes)之间的关系图
  • **list_doctypes**列出当前Frappe应用程序中所有可用的文档类型(DocTypes),可选择按模块过滤

开发与测试

  • **create_web_page**生成包含HTML、CSS和JavaScript结构的网页模板文件
  • **create_custom_page**生成带有表单和后端API端点的Frappe自定义页面脚手架
  • **create_test_template**为Frappe DocType创建具有适当测试结构的测试模板文件
  • **create_report**创建报告模板文件(脚本报告、查询报告或报告生成器)
  • **run_tests**使用 `bench run-tests` 执行特定模块、文档类型或整个应用程序的单元测试

系统集成

  • **run_bench_command**运行带有参数的任意基准测试命令(例如,迁移、安装应用)
  • **run_db_command**通过 bench mariadb 命令执行 SQL 查询
  • **bench_execute**通过 `bench execute` 命令执行 Frappe 函数,并可选地传递参数和关键字参数

安装与使用

先决条件

  • Rust(最新稳定版)
  • 对Frappe应用程序代码库进行分析

设置

  1. 克隆并构建:
git clone https://github.com/anvie/frappe-mcp.git
cd frappe-mcp
cargo build --release
  1. 通过创建一个来配置您的Frappe应用程序 frappe-mcp.conf 文件(见下文的配置部分)

  2. 运行MCP服务器:

cargo run -- --config frappe-mcp.conf run

服务器将在首次运行或源文件更改时自动分析您的Frappe应用程序。

与Claude代码一起使用:

claude mcp add frappe_mcp ./target/release/frappe_mcp run

确保你已 frapppe-mcp.conf 在你运行的同一目录下的文件 “the claude”可以翻译为“克劳德(这个人/事物)”。具体翻译可能需要根据上下文来确定“claude”所指的具体对象或含义。

测试

使用MCP检查器测试服务器:

cargo build --release
npx @modelcontextprotocol/inspector -- ./target/release/frappe_mcp --config frappe-mcp.conf run

可用的测试方法包括上述所有工具: find_symbols, get_doctype, create_doctype, run_tests, analyze_links, create_web_page, find_field_usage, run_bench_command, get_doctype_db_schema, run_db_command, search_frappe_docs, read_frappe_doc, list_doctypes, create_custom_page, create_test_template, create_report, bench_execute

配置

创建一个 frappe-mcp.conf 用于配置服务器的文件。示例配置:

frappe_bench_dir = "/path/to/frappe-bench"
app_relative_path = "your-app-name"
app_name = "Your App Name"
site = "yoursite.localhost"

配置参数:

  • frappe_bench_dir到您的Frappe基准目录的路径
  • app_relative_path在 bench/apps 文件夹中,您应用目录的名称
  • app_name您应用的显示名称
  • site站点名称(如果未指定,默认为“frontend”)

手动分析(可选)

当服务器在启动时自动分析您的应用时,您也可以手动运行分析:

cargo run -- --config frappe-mcp.conf analyze --app-dir /path/to/frappe-bench/apps/your-app

这会产生一个 analyzed_output.dat 包含有关您应用程序模块和文档类型(DocTypes)的结构化信息的文件。

命令行界面工具(CLI Tools)

函数工具命令

这个(或“它”) functool 子命令允许从命令行直接执行MCP功能,对于测试和调试非常有用:

# Get DocType information
cargo run -- functool get-doctype "Sales Invoice"
cargo run -- functool get-doctype "Sales Invoice" json  # JSON output only

# List all DocTypes in a module
cargo run -- functool list-doctypes "Selling"

# Search for symbols in the codebase
cargo run -- functool find-symbols "get_doc" "accounts" true 10

# Find field usage
cargo run -- functool find-field-usage "Sales Invoice" "customer" 20

# Run bench commands
cargo run -- functool run-bench-command "list-apps"

可用功能:

  • get-doctype获取完整的文档类型(DocType)信息
  • list-doctypes列出文档类型,可选择按模块过滤
  • find-symbols在代码中搜索函数/类符号
  • find-field-usage查找DocType字段的引用位置
  • run-bench-command执行基准测试命令

文档搜索

该服务器内置了用于搜索嵌入式Frappe文档的CLI(命令行界面)命令:

注文档通过基于哈希的短ID(例如,“48b014”)来引用,而不是使用文件路径,以避免与文件系统操作产生混淆。使用 search-docs 查找文档ID。

搜索文档

# Search for documentation about DocTypes
cargo run -- search-docs "DocType" --category doctypes --limit 5

# Fuzzy search for API documentation
cargo run -- search-docs "databse" --category api --fuzzy

# Search across all categories
cargo run -- search-docs "getting started"

阅读特定文档

# First, search to get document IDs
cargo run -- search-docs "Frappe Framework Documentation" --limit=1

# Then read the document using its ID
cargo run -- read-doc "48b014"  # ID for main documentation index

# Read DocType creation guide
cargo run -- read-doc "3b7f1e"  # ID for creating_doctypes.md

# Read API documentation
cargo run -- read-doc "454ba4"  # ID for database_api.md

CLI 选项

  • --category按类别筛选(doctypes, api, tutorial)
  • --fuzzy启用模糊搜索(默认:true)
  • --limit最大结果数量(默认:10)

作者罗宾·西哈布