Skip to main content
Glama
Henryk91
by Henryk91
README.md
# Custom MCP Server: Calculator & Workflow Automation

This is a custom Model Context Protocol (MCP) server built with Python using the `FastMCP` framework. It provides a set of calculator tools, resources for customer support, and prompts for content creation, along with integration to external n8n workflows.

## Features

### 🛠️ Tools

Tools allow the AI model to perform actions or computations.

- `add(a, b)`: Add two numbers.
- `subtract(a, b)`: Subtract two numbers.
- `multiply(a, b)`: Multiply two numbers.
- `divide(a, b)`: Divide two numbers (handles division by zero).
- `trigger_n8n_workflow(prompt)`: Triggers a remote n8n workflow via webhook, sending a prompt and returning the response.

### 📚 Resources

Resources provide context and data to the AI model.

- `calculator://support-playbook`: Reads and returns the content of the "Customer Support Playbook" (`resource_exampe.md`).

### 📝 Prompts

Prompts provide structured templates for the AI model to generate content.

- `webinar_blog_post`: A template to convert a webinar transcript into an engaging blog post. requires: `webinar_title`, `webinar_date`, `speakers`, `transcript`.

## Prerequisites

- **Python 3.10+** (Recommend managing with `uv`)
- **[uv](https://github.com/astral-sh/uv)**: A fast Python package installer and resolver.
- **npx**: Required if you want to use the MCP Inspector for testing.

## Installation & Setup

1.  **Clone or Navigate to the Project Directory**

2.  **Install Dependencies**
    Use `uv` to sync the project dependencies:

    ```bash
    uv sync
    ```

3.  **Configure Environment Variables**
    This server requires environment variables for the n8n integration.

    Create a `.env` file from the example:

    ```bash
    cp .env.example .env
    ```

    Open `.env` and configure your settings:

    ```env
    N8N_WEBHOOK_URL=https://your-n8n-instance.com/webhook/...
    N8N_HEADER_NAME=Your-Header-Name
    N8N_HEADER_VALUE=Your-Header-Value
    ```

    _Note: If `N8N_HEADER_NAME` and `N8N_HEADER_VALUE` are set, they will be included in the webhook request headers._

## Usage

### 🔍 Testing with MCP Inspector

The MCP Inspector is a developer tool to test your server's tools, resources, and prompts in a web interface.

Run the follow command:

```bash
npx @modelcontextprotocol/inspector uv run server.py
```

This will launch a local server (usually at `http://localhost:5173`) where you can interact with your MCP server.

### 🤖 Integration with Claude for Desktop

To use this server with the Claude desktop app:

1.  **Locate Configuration File:**
    - macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
    - Windows: `%APPDATA%\Claude\claude_desktop_config.json`

2.  **Update Configuration:**
    Add the server configuration to the `mcpServers` object. You can copy the contents of the `claude_desktop_config.json` file provided in this repository.

    ```json
    {
      "mcpServers": {
        "calculator": {
          "command": "uv",
          "args": ["--directory", "/ABSOLUTE/PATH/TO/THIS/PROJECT", "run", "server.py"]
        }
      }
    }
    ```

    **Important:** Replace `/ABSOLUTE/PATH/TO/THIS/PROJECT` with the actual absolute path to this directory on your machine.

3.  **Restart Claude:**
    Restart the Claude application to load the new server.

## Troubleshooting

- **Timeout Errors:** The n8n workflow trigger has a 30-second timeout. If your workflow takes longer, you may need to increase this in `server.py`.
- **Missing Environment Variables:** Ensure your `.env` file is properly set up and that you are running the server from the project root where the `.env` file is located.
- **Claude Connection Issues:** Check Claude's logs for connection details. Ensure the absolute path in the config file is correct.

## Project Structure

- `server.py`: Main MCP server implementation.
- `resource_exampe.md`: Source file for the support playbook resource.
- `prompt.md`: Template file for the blog post prompt.
- `.env`: (Ignored by git) Local configuration for secrets.
- `pyproject.toml`: Python project and dependency definition.

TDQS

B3.2/5.0

Scored across 5 tools

Disambiguation5/5

The four arithmetic tools have clear, distinct purposes, and the workflow trigger is unrelated, so there is no ambiguity between any of the tools.

Naming Consistency3/5

The arithmetic tools use simple single-word verbs (add, subtract), while trigger_n8n_workflow uses a verb_noun pattern with an underscore, breaking the otherwise consistent naming convention.

Tool Count5/5

Five tools is within the ideal range, and each tool is simple and focused, though the mix of calculator functions and a workflow trigger is eclectic.

Completeness3/5

The arithmetic set covers basic operations but lacks advanced ones like exponentiation or modulo, and the workflow trigger has no supporting tools, leaving gaps in both implied domains.

Maintenance

ActivityInactive
ResponsivenessNo issues