Skip to main content
Glama

Frappe MCP Server

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Schema

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Tools

Functions exposed to the LLM to take actions

NameDescription
ping

A simple tool to check if the server is responding.

version

Get version information for the Frappe MCP server.

validate_auth

Validate API credentials and return authentication status.

create_document
Create a new document in Frappe. Args: doctype: DocType name values: Document field values. Required fields must be included. For Link fields, provide the exact document name. For Table fields, provide an array of row objects.
get_document
Retrieve a document from Frappe. Args: doctype: DocType name name: Document name (case-sensitive)
update_document
Update an existing document in Frappe. Args: doctype: DocType name name: Document name (case-sensitive) values: Field values to update
delete_document
Delete a document from Frappe. Args: doctype: DocType name name: Document name (case-sensitive)
list_documents
List documents from Frappe with filters. Args: doctype: DocType name filters: Filter string (optional). Uses custom syntax to bypass MCP validation issues. fields: Comma-separated field names (optional). E.g. "name,customer,total" limit: Maximum number of records to return (optional). E.g. "20" order_by: Field to order by (optional, can include 'desc' like 'creation desc') Filter Syntax: - Simple equality: "field:value" -> {"field": "value"} - Operators: "field:operator:value" -> {"field": ["operator", value]} - Multiple filters: "field1:value1,field2:operator:value2" Supported Operators: - Equality: = (default), != - Comparison: <, >, <=, >= - Pattern: like, not_like (use % for wildcards) - Lists: in, not_in (separate values with |) - Null checks: is:null, is:not_null, is_not:null - Ranges: between (separate values with |) Examples: - list_documents("Bank Transaction", "status:Unreconciled") -> List unreconciled transactions - list_documents("Task", "status:in:Open|Working", "name,subject", "10") -> List open tasks with specific fields - list_documents("User", "name:like:%admin%") -> List users with 'admin' in name
call_method
Execute a whitelisted Frappe method. Args: method: Method name to call (whitelisted) params: Parameters to pass to the method (optional)
count_documents
Count documents in Frappe with optional filters. This tool addresses the filtering limitation that existed in previous implementations by using Frappe's native count functionality via the REST API with a custom filter language. Args: doctype: DocType name filters: Filter string (optional). Uses custom syntax to bypass MCP validation issues. Filter Syntax: - Simple equality: "field:value" -> {"field": "value"} - Operators: "field:operator:value" -> {"field": ["operator", value]} - Multiple filters: "field1:value1,field2:operator:value2" Supported Operators: - Equality: = (default), != - Comparison: <, >, <=, >= - Pattern: like, not_like (use % for wildcards) - Lists: in, not_in (separate values with |) - Null checks: is:null, is:not_null, is_not:null - Ranges: between (separate values with |) Examples: - "status:Unreconciled" -> Status equals Unreconciled - "amount:>:100" -> Amount greater than 100 - "name:like:%admin%" -> Name contains 'admin' - "status:in:Open|Working|Pending" -> Status in list - "date:between:2025-01-01|2025-12-31" -> Date in range - "phone:is:not_null" -> Phone is not null Tool Examples: - count_documents("User") -> Count all users - count_documents("Bank Transaction", "status:Unreconciled") -> Count unreconciled transactions - count_documents("Bank Transaction", "unallocated_amount:>:0") -> Count with unallocated amount - count_documents("Task", "status:in:Open|Working|Pending") -> Count tasks with multiple statuses - count_documents("User", "name:like:%admin%") -> Count users with 'admin' in name - count_documents("Payment Entry", "posting_date:between:2025-01-01|2025-12-31") -> Count in date range - count_documents("Contact", "phone:is:not_null") -> Count contacts with phone numbers
test_hardcoded_filter

Test hardcoded filter to verify Frappe API filtering works. This bypasses all parameter validation issues.

get_doctype_schema
Get the complete schema for a DocType including field definitions, validations, and linked DocTypes. Use this to understand the structure of a DocType before creating or updating documents. Args: doctype: DocType name
get_field_options
Get available options for a Link or Select field. For Link fields, returns documents from the linked DocType. For Select fields, returns the predefined options. Args: doctype: DocType name fieldname: Field name limit: Maximum number of options to return (default: 20)
get_doctype_list
Get a list of available DocTypes, optionally filtered by module. Args: module: Module name to filter by (optional) limit: Maximum number of DocTypes to return (default: 50)
get_frappe_usage_info
Get combined information about a DocType or workflow, including schema metadata and usage guidance. Args: doctype: DocType name (optional if workflow is provided) workflow: Workflow name (optional if doctype is provided)
run_query_report
Execute a Frappe query report with filters. Args: report_name: Name of the report to run filters: Filter string (optional). Uses custom syntax to bypass MCP validation issues. Filter Syntax: Use the same string-based syntax as count_documents and list_documents. Examples: "status:Open", "date:>=:2025-01-01", "status:in:Open|Working"
get_report_meta
Get metadata for a specific report including columns and filters. Args: report_name: Name of the report to get metadata for
list_reports
Get a list of all available reports in the system. Args: module: Filter reports by module (optional) limit: Maximum number of reports to return (default: 50)
run_doctype_report
Run a standard doctype report with filters and sorting. Args: doctype: DocType to generate report for fields: Fields to include in report (optional) filters: Filter string (optional). Uses custom syntax to bypass MCP validation issues. limit: Maximum number of records (default: 100) order_by: Field to order by (optional) Filter Syntax: Use the same string-based syntax as count_documents and list_documents. Examples: "status:Open", "date:>=:2025-01-01", "status:in:Open|Working"
get_financial_statements
Get standard financial reports (P&L, Balance Sheet, Cash Flow). Args: report_type: Type of financial statement ('Profit and Loss Statement', 'Balance Sheet', 'Cash Flow') company: Company name from_date: Start date (YYYY-MM-DD format, optional) to_date: End date (YYYY-MM-DD format, optional) periodicity: Periodicity (Monthly, Quarterly, Half-Yearly, Yearly)
get_report_columns
Get the column structure for a specific report. Args: report_name: Name of the report filters: Filter string (optional). Uses custom syntax to bypass MCP validation issues. Filter Syntax: Use the same string-based syntax as count_documents and list_documents. Examples: "status:Open", "date:>=:2025-01-01", "status:in:Open|Working"

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/appliedrelevance/frappe-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server