# n8n-nodes-mcp-client

This package provides an n8n node for interacting with Model Context Protocol (MCP) tools. It allows you to integrate MCP-compatible AI tools into your n8n workflows.

## Installation

To install this package in your n8n instance:

```bash
npm install @coulee-tech/n8n-nodes-mcp-client
```

## Features

- List available MCP tools
- Call specific MCP tools with custom arguments
- Full integration with n8n workflows
- Support for standard MCP protocol communication

## MCP Protocol Requirements

Your MCP client must:
1. Accept JSON-RPC style messages via stdin
2. Output responses via stdout
3. Support the following methods:
   - `tools/list`: Lists available tools
   - `tools/call`: Calls a specific tool with arguments

Example MCP message format:
```json
// Request
{
  "method": "tools/call",
  "params": {
    "name": "tool-name",
    "arguments": {
      // tool-specific arguments
    }
  }
}

// Response
{
  "result": {
    // tool-specific response
  }
}
```

## Configuration

### Credentials

To use the MCP Client node, you need to configure the following credentials:

1. **Command**: The command to execute for the MCP client (e.g., the path to your MCP-compatible tool)
2. **Arguments**: Command-line arguments for the MCP client (comma-separated)

### Node Configuration

The node provides two operations:

1. **List Tools**
   - Lists all available MCP tools from your configured client
   - No additional parameters required

2. **Call Tool**
   - Calls a specific MCP tool with custom arguments
   - Required parameters:
     - Tool Name: The name of the tool to call
     - Tool Arguments: JSON object containing the arguments for the tool

## Usage Example

Here's an example of how to use the MCP Client node in your workflow:

1. Add the MCP Client node to your workflow
2. Configure the credentials with your MCP client command and arguments
3. Choose an operation:
   - To list tools: Select "List Tools" operation
   - To call a tool: Select "Call Tool" operation and provide:
     ```json
     {
       "toolName": "your-tool-name",
       "toolArguments": {
         "param1": "value1",
         "param2": "value2"
       }
     }
     ```

## Error Handling

The node includes comprehensive error handling:
- Invalid command or arguments
- Tool execution failures
- MCP protocol communication errors
- JSON parsing errors

## Development

To contribute to this package:

1. Clone the repository
2. Install dependencies:
   ```bash
   npm install
   ```
3. Build the package:
   ```bash
   npm run build
   ```
4. Run tests:
   ```bash
   npm test
   ```

## License

This project is licensed under the MIT License - see the LICENSE file for details.

## Support

For issues and feature requests, please use the GitHub issue tracker. 