使用说明
Frappe MCP服务器
Frappe框架的模型上下文协议(MCP)服务器,通过官方REST API向人工智能助手展示Frappe的功能,重点关注文档CRUD操作、模式处理和详细的API指令。
概述
该MCP服务器允许AI助手通过使用官方Frappe REST API的标准化界面与Frappe应用程序进行交互。它提供了以下工具:
- 文档操作(创建、读取、更新、删除、列出)
- 模式和元数据处理
- DocType发现和探索
- API详细使用说明和示例
该服务器包括全面的错误处理、验证和有用的响应,使人工智能助手更容易使用Frappe。
运输支持
服务器支持多种传输协议:
- 标准输入输出 (默认):用于与Claude Desktop和其他MCP客户端本地集成的标准输入/输出
- 超文本传输协议:RESTful HTTP端点和MCP JSON-RPC over HTTP用于基于web的集成(端口51966/0xCAFE)
- 流式HTTP:现代MCP传输,可选SSE流,用于实时更新(端口51953/0xCAF1)
安装
先决条件
- Node.js 18或更高版本
- 正在运行的Frappe实例(版本15或更高)
- 来自Frappe的API密钥和秘密(必需的)
设置
- 通过npm安装:
npm install -g frappe-mcp-server
或者,直接使用npx运行:
npx frappe-mcp-server
(无需安装)
配置
使用环境变量配置服务器:
FRAPPE_URL:Frappe实例的URL(默认值:http://localhost:8000)FRAPPE_API_KEY:您的Frappe API密钥(必需的)FRAPPE_API_SECRET:您的Frappe API秘密(必需的)
重要:API密钥/机密身份验证是唯一支持的身份验证方法。两者
FRAPPE_API_KEY和FRAPPE_API_SECRET必须为服务器正常运行提供。不支持用户名/密码身份验证。
认证
此MCP服务器 仅支持API密钥/秘密身份验证 通过Frappe REST API。不支持用户名/密码身份验证。
正在获取API凭据
要从您的Frappe实例获取API凭据,请执行以下操作:
- 前往用户>API访问>新建API密钥
- 选择要为其创建密钥的用户
- 点击“生成密钥”
- 复制API密钥和API机密
身份验证故障排除
如果遇到身份验证错误:
- 验证两者
FRAPPE_API_KEY和FRAPPE_API_SECRET环境变量设置正确 - 确保API密钥在Frappe实例中处于活动状态且未过期
- 检查与API密钥关联的用户是否具有必要的权限
- 验证Frappe URL是否正确且可访问
服务器提供详细的错误消息以帮助诊断身份验证问题。
用法
启动服务器
stdio传输(默认)
npx frappe-mcp-server
或者使用环境变量:
FRAPPE_URL=https://your-frappe-instance.com FRAPPE_API_KEY=your_api_key FRAPPE_API_SECRET=your_api_secret npx frappe-mcp-server
HTTP传输
要使用HTTP传输启动服务器,请执行以下操作:
npm run start-http
HTTP服务器在端口51966(0xCAFE)上运行,并提供:
- 用于直接HTTP集成的RESTful端点
- MCP JSON-RPC协议支持
- 健康检查和服务器信息端点
可用HTTP端点:
GET /health-健康检查GET /info-服务器信息GET /tools-列出可用工具POST /call/:tool-调用特定工具POST /-MCP JSON-RPC端点
流式HTTP传输(推荐)
要使用Streamable HTTP传输启动服务器,请执行以下操作:
npm run start-streamable
Streamable HTTP服务器在端口51953(0xCAF1)上运行,并提供:
- 现代MCP协议支持(2024-11-05版)
- 自动内容协商(JSON或SSE)
- 具有自动清理功能的状态会话
- 长时间运行操作的实时流媒体
- 连接健康的心跳机制
特征:
- 单端点:所有MCP操作通过
POST / - 可选流媒体:客户端可以通过设置请求SSE
Accept: text/event-stream - 会话管理:具有会话ID的有状态操作
- 进度更新:长时间运行的工具的实时进度
与AI助手集成
要将此MCP服务器与AI助手一起使用,您需要配置助手以连接到此服务器。确切的配置取决于您使用的AI助手平台。
克劳德桌面(stdio传输)
对于Claude Desktop,请将以下内容添加到MCP设置配置文件中:
{
"mcpServers": {
"frappe": {
"command": "npx",
"args": ["frappe-mcp-server"],
"env": {
"FRAPPE_URL": "https://your-frappe-instance.com",
"FRAPPE_API_KEY": "your_api_key", // REQUIRED
"FRAPPE_API_SECRET": "your_api_secret" // REQUIRED
},
"disabled": false,
"alwaysAllow": []
}
}
}
备注:两者都有
FRAPPE_API_KEY和FRAPPE_API_SECRET需要环境变量。服务器将在没有它们的情况下启动,但大多数操作都会因身份验证错误而失败。
远程MCP服务器(可流式HTTP传输)
对于Claude Pro/Max/Teams/Enterprise用户,您可以部署Streamable HTTP服务器并将其添加为远程MCP服务器:
- 将Streamable HTTP服务器部署到公共URL
- 在Claude Desktop中,转到“设置”>“集成”
- 添加您的MCP服务器URL
重要:Claude Desktop目前仅支持通过以下方式配置的本地MCP服务器的stdio传输
claude_desktop_config.json。必须通过设置界面添加远程HTTP/Streamable服务器。
其他MCP客户端
对于支持HTTP传输的MCP客户端,请使用您的服务器URL对其进行配置:
标准HTTP(传统):
http://localhost:51966
流式HTTP(推荐):
http://localhost:51953
或者对于生产部署:
https://your-mcp-server.com
建议使用流式HTTP传输,因为它:
- 支持最新的MCP协议(2024-11-05)
- 提供自动内容协商
- 支持长时间操作的实时流媒体
- 维护有状态会话
可用工具
文档操作
create_document:在Frappe中创建新文档get_document:从Frappe检索文档update_document:更新Frappe中的现有文档delete_document:从Frappe中删除文档list_documents:使用过滤器列出Frappe的文档
架构操作
get_doctype_schema:获取DocType的完整架构,包括字段定义、验证和链接的DocTypeget_field_options:获取链接或选择字段的可用选项get_frappe_usage_info:获取有关DocType或工作流的组合信息,包括模式元数据、静态提示和应用程序提供的使用指南
辅助工具
find_doctypes:在系统中查找与搜索词匹配的DocTypesget_module_list:获取系统中所有模块的列表get_doctypes_in_module:获取特定模块中的DocType列表check_doctype_exists:检查系统中是否存在DocTypecheck_document_exists:检查文档是否存在get_document_count:获取符合筛选条件的文档数量get_naming_info:获取DocType的命名系列信息get_required_fields:获取DocType的必填字段列表get_api_instructions:获取有关使用Frappe API的详细说明
可用资源
架构资源
schema://{doctype}:DocType的架构信息schema://{doctype}/{fieldname}/options:链接或选择字段的可用选项schema://modules:系统中所有模块的列表schema://doctypes:系统中所有DocType的列表
特性
使用信息增强
服务器通过结合三个来源提供全面的使用信息:
- Metadata打字:直接从Frappe API检索的架构信息
- 静态提示:存储在JSON文件中的补充上下文
static_hints/目录 - 自定义应用程序反思:自定义Frappe应用程序直接提供的使用说明
这一增强功能使人工智能助手能够更好地理解Frappe模块,使其更有效地帮助用户使用基于Frappe的应用程序。
有关更多详细信息,请参阅 使用信息增强.
例子
创建文档
// Example of using the create_document tool
const result = await useToolWithMcp("frappe", "create_document", {
doctype: "Customer",
values: {
customer_name: "John Doe",
customer_type: "Individual",
customer_group: "All Customer Groups",
territory: "All Territories",
},
});
获取文档
// Example of using the get_document tool
const customer = await useToolWithMcp("frappe", "get_document", {
doctype: "Customer",
name: "CUST-00001",
fields: ["customer_name", "customer_type", "email_id"], // Optional: specific fields
});
使用筛选器列出文档
// Example of using the list_documents tool with filters
const customers = await useToolWithMcp("frappe", "list_documents", {
doctype: "Customer",
filters: {
customer_type: "Individual",
territory: "United States",
},
fields: ["name", "customer_name", "email_id"],
limit: 10,
order_by: "creation desc",
});
查找文档类型
// Example of using the find_doctypes tool
const salesDocTypes = await useToolWithMcp("frappe", "find_doctypes", {
search_term: "Sales",
module: "Selling",
is_table: false,
});
获取必填字段
// Example of using the get_required_fields tool
const requiredFields = await useToolWithMcp("frappe", "get_required_fields", {
doctype: "Sales Order",
});
获取API说明
// Example of using the get_api_instructions tool
const instructions = await useToolWithMcp("frappe", "get_api_instructions", {
category: "DOCUMENT_OPERATIONS",
operation: "CREATE",
});
获取使用信息
// Example of using the get_frappe_usage_info tool
const salesOrderInfo = await useToolWithMcp("frappe", "get_frappe_usage_info", {
doctype: "Sales Order",
});
// Example of getting workflow information
const workflowInfo = await useToolWithMcp("frappe", "get_frappe_usage_info", {
workflow: "Quote to Sales Order Conversion",
});
错误处理
服务器提供详细的错误消息和上下文,以帮助诊断问题:
- 缺少必要参数
- 字段值无效
- 权限错误
- 网络问题
- 服务器错误
每个错误包括:
- 描述性信息
- HTTP状态码(如适用)
- 端点信息
- Frappe服务器的其他详细信息
最佳实践
-
首先检查DocType架构:在创建或更新文档之前,请先了解架构以了解所需的字段和验证。
-
使用分页:列出文件时,使用
limit和limit_start用于对结果进行分页的参数。 -
指定字段:只请求提高性能所需的字段。
-
创建前验证:使用
get_required_fields在创建文档之前,确保您拥有所有必填字段。 -
检查是否存在:使用
check_document_exists在更新或删除以确保文档存在之前。
许可证
国际协调委员会
