Describe the problem/error/question
I have installed self hosted N8N a few different ways, and every time I do it, the MCP Client Community Node doesnt have the select automatically with AI option for the parameter selection.
I have tried to get around it with {{ $fromAI(‘tool_parameters’, ‘’, ‘json’) }} but i cant get it to work well on the complex MCPs with many tools and parameter options. It always gives me an error “Received tool input does not match expected schema”.
So first question would be how do i get the AI option to work. And if i cant get that option to work, how do i input tool descriptions or agent system prompt so that the parameters always get filled out correctly, even for complex MCPs like airtable and clickup.
What is the error message (if any)?
Please share your workflow
{
“nodes”: [
{
“parameters”: {
“descriptionType”: “manual”,
“toolDescription”: “tool_name: list_tables\nInput parameters:\nbaseId (string, required): appg2Uq45gecl8Iba\ndetailLevel (string, optional): full\n\ntool_name: describe_table\nInput parameters:\nbaseId (string, required): appg2Uq45gecl8Iba\ntableId (string, required): The ID of the table to describe\ndetailLevel (string, optional): full\n\ntool_name: get_record\nInput parameters:\nbaseId (string, required): appg2Uq45gecl8Iba\ntableId (string, required): The ID of the table\nrecordId (string, required): The ID of the record to retrieve\n\ntool_name: create_record\nInput parameters:\nbaseId (string, required): appg2Uq45gecl8Iba\ntableId (string, required): The ID of the table\nfields (object, required): The fields and values for the new record\n\ntool_name: update_records\nInput parameters:\nbaseId (string, required): appg2Uq45gecl8Iba\ntableId (string, required): The ID of the table\nrecords (array, required): Array of objects containing record ID and fields to update\n\ntool_name: delete_records\nInput parameters:\nbaseId (string, required): appg2Uq45gecl8Iba\ntableId (string, required): The ID of the table\nrecordIds (array, required): Array of record IDs to delete\n\ntool_name: create_table\nInput parameters:\nbaseId (string, required): appg2Uq45gecl8Iba\nname (string, required): Name of the new table\ndescription (string, optional): Description of the table\nfields (array, required): Array of field definitions (name, type, description, options)\n\nupdate_table\nInput parameters:\nbaseId (string, required): appg2Uq45gecl8Iba\ntableId (string, required): The ID of the table\nname (string, optional): New name for the table\ndescription (string, optional): New description for the table\n\ncreate_field\nInput parameters:\nbaseId (string, required): appg2Uq45gecl8Iba\ntableId (string, required): The ID of the table\nname (string, required): Name of the new field\ntype (string, required): Type of the field\ndescription (string, optional): Description of the field\noptions (object, optional): Field-specific options\n\ntool_name: update_field\nInput parameters:\nbaseId (string, required): appg2Uq45gecl8Iba\ntableId (string, required): The ID of the table\nfieldId (string, required): The ID of the field\nname (string, optional): New name for the field\ndescription (string, optional): New description for the field\n\ntool_name: list_records\nInput parameters:\nbaseId (string, required): The ID of the Airtable base\ntableId (string, required): The ID of the table to query\nmaxRecords (number, optional): Maximum number of records to return. Defaults to 100.\nfilterByFormula (string, optional): Airtable formula to filter records\n\ntool_name: search_records\nInput parameters:\nbaseId (string, required): The ID of the Airtable base\ntableId (string, required): The ID of the table to query\nsearchTerm (string, required): Text to search for in records\nfieldIds (array, optional): Specific field IDs to search in. If not provided, searches all text-based fields.\nmaxRecords (number, optional): Maximum number of records to return. Defaults to 100.\n”,
“operation”: “executeTool”,
“toolName”: “={{ $fromAI(‘tool_name’) }}”,
“toolParameters”: “={{ $fromAI(‘tool_parameters’, ‘’, ‘json’) }}”
},
“type”: “n8n-nodes-mcp.mcpClientTool”,
“typeVersion”: 1,
“position”: [
220,
280
],
“id”: “84a63992-fe55-4207-ad73-53bac8f20831”,
“name”: “Airtable Agent2”,
“credentials”: {
“mcpClientApi”: {
“id”: “tEpXzNmHlRFteZl2”,
“name”: “Airtable”
}
}
}
],
“connections”: {
“Airtable Agent2”: {
“ai_tool”: [
]
}
},
“pinData”: {},
“meta”: {
“instanceId”: “705c861d0e7c5b96674a6bc2012a5cd91f46280f3e473b200cbb3fde271c846c”
}
}
Share the output returned by the last node
Information on your n8n setup
- n8n version:. 1.89.2
- Database (default: SQLite):. Postgres
- n8n EXECUTIONS_PROCESS setting (default: own, main):
- Running n8n via (Docker, npm, n8n cloud, desktop app): self hosted on railway using docker
- Operating system:
I have N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE set to true.
MCP Client Tool node version 1
MCP Client Version v0.1.23