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: A fast Python package installer and resolver.
- npx: Required if you want to use the MCP Inspector for testing.
Installation & Setup
- Clone or Navigate to the Project Directory
- Install Dependencies
Use uv to sync the project dependencies:
uv sync
- Configure Environment Variables
This server requires environment variables for the n8n integration.
Create a .env file from the example:
cp .env.example .env
Open .env and configure your settings:
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:
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:
- Locate Configuration File:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
- 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.
{
"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.
- 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
.envfile is properly set up and that you are running the server from the project root where the.envfile 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.






