MCP Multi-Tool Server
# MCP Multi-Tool Server
A comprehensive Model Context Protocol (MCP) server built with FastMCP that provides calculator tools, document resources, and prompt templates. This server demonstrates multiple MCP capabilities including tools, resources, and prompts in a single implementation.
## Features
### š§® Calculator Tools
- **Basic Operations**: Addition, subtraction, multiplication, division
- **Advanced Math**: Power, square root, factorial calculations
- **Utility Functions**: Percentage calculations
- **Error Handling**: Division by zero protection, negative square root protection, factorial range limits
### š Document Resources
- **TypeScript SDK Resource**: Access to MCP TypeScript SDK documentation
- **Dynamic File Reading**: Reads from configurable file paths
- **Error Handling**: Graceful handling of missing files
### š Prompt Templates
- **Meeting Summary Template**: Executive meeting summary generator
- **Variable Substitution**: Dynamic template variable replacement
- **Structured Output**: Professional meeting summary format
## Quick Start
### Prerequisites
- Python 3.12 or later
- `uv` package manager
### Installation
1. **Clone the repository**
```bash
git clone <your-repo-url>
cd mcp-multi-tool-server
```
2. **Install dependencies**
```bash
uv sync
```
3. **Test the server**
```bash
uv run mcp dev server.py
```
Open http://localhost:3000 to test the server in MCP Inspector.
## Usage
### Calculator Tools
The server provides 8 calculator tools:
| Tool | Description | Example |
|------|-------------|---------|
| `add` | Add two numbers | `add(5, 3) ā 8` |
| `subtract` | Subtract second from first | `subtract(10, 4) ā 6` |
| `multiply` | Multiply two numbers | `multiply(6, 7) ā 42` |
| `divide` | Divide first by second | `divide(15, 3) ā 5` |
| `power` | Raise to power | `power(2, 8) ā 256` |
| `square_root` | Calculate square root | `square_root(16) ā 4` |
| `factorial` | Calculate factorial | `factorial(5) ā 120` |
| `calculate_percentage` | Calculate percentage | `calculate_percentage(200, 15) ā 30` |
### TypeScript SDK Resource
Access the TypeScript SDK documentation:
```python
# Resource URI: file://typesdk
# Returns the contents of the TypeScript SDK documentation
```
**Configuration**: Update `DESKTOP_FILE_PATH` in `server.py` to point to your documentation file:
```python
DESKTOP_FILE_PATH = r"C:\Users\VipanKumar\Desktop\typesdk.md"
```
### Meeting Summary Prompt
Generate structured meeting summaries:
```python
# Prompt: meeting_summary
# Required parameters:
# - meeting_date: Date of the meeting
# - meeting_title: Title or purpose of the meeting
# - transcript: Meeting transcript or notes
```
**Output Structure**:
- Overview (purpose, participants, topics)
- Key Decisions (major decisions, strategic changes)
- Action Items (next steps, responsibilities, deadlines)
- Follow-up Required (pending discussions, future meetings)
## Claude Desktop Integration
### Configuration
Add to your Claude Desktop config file:
**Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
```json
{
"mcpServers": {
"multi-tool-server": {
"command": "uv",
"args": [
"--directory",
"/path/to/your/server/directory",
"run",
"python",
"server.py"
],
"env": {
"UV_PROJECT_ENVIRONMENT": ".venv"
}
}
}
}
```
### Restart Claude Desktop
After updating the configuration, restart Claude Desktop to load the server.
## Development
### Project Structure
```
mcp-multi-tool-server/
āāā server.py # Main server implementation
āāā templates/
ā āāā Prompt.md # Meeting summary template
āāā pyproject.toml # Project configuration
āāā claude_desktop_config.json # Claude Desktop config example
āāā README.md # This file
āāā .venv/ # Virtual environment
```
### Testing
**MCP Inspector (Recommended)**
```bash
uv run mcp dev server.py
```
**Direct Server Testing**
```bash
python server.py
```
**Testing Individual Components**
1. **Calculator Tools**: Use MCP Inspector to call each tool with test parameters
2. **Resource Access**: Check the resource tab in MCP Inspector for `file://typesdk`
3. **Prompt Templates**: Test the `meeting_summary` prompt with sample data
### Customization
**Adding New Calculator Tools**:
```python
@mcp.tool()
def new_calculation(param1: float, param2: float) -> float:
"""Description of the new calculation."""
return param1 + param2 # Your calculation logic
```
**Adding New Resources**:
```python
@mcp.resource("file://your-resource")
async def get_your_resource() -> str:
"""Description of your resource."""
# Your resource logic
return "Resource content"
```
**Adding New Prompts**:
```python
@mcp.prompt("your_prompt")
async def your_prompt(param1: str, param2: str) -> str:
"""Description of your prompt."""
# Your prompt logic
return f"Processed: {param1}, {param2}"
```
## Error Handling
The server includes comprehensive error handling:
- **Division by Zero**: Returns appropriate error message
- **Negative Square Roots**: Prevents invalid operations
- **Factorial Limits**: Restricts calculations to reasonable ranges (n ⤠100)
- **File Not Found**: Graceful handling of missing resource files
- **Template Errors**: Proper error reporting for prompt template issues
## Configuration Options
### File Paths
Update these paths in `server.py` for your environment:
```python
# TypeScript SDK documentation path
DESKTOP_FILE_PATH = r"C:\Users\YourUser\Desktop\typesdk.md"
# Prompt template path (relative to server.py)
PROMPT_TEMPLATE_PATH = os.path.join(os.path.dirname(__file__), "templates", "Prompt.md")
```
### Server Name
Change the server name in `server.py`:
```python
mcp = FastMCP("Your Server Name")
```
## Troubleshooting
### Common Issues
**Server won't start**:
- Check Python version (3.12+ required)
- Verify `uv` installation: `uv --version`
- Check virtual environment: `uv sync`
**Tools not appearing in Claude**:
- Verify Claude Desktop config file location
- Check file paths in configuration
- Restart Claude Desktop after config changes
**Resource file not found**:
- Verify `DESKTOP_FILE_PATH` points to correct file
- Check file permissions
- Ensure file exists and is readable
**Prompt template errors**:
- Verify `templates/Prompt.md` exists
- Check template syntax
- Ensure proper variable placeholders: `{{ variable_name }}`
### Debug Mode
Run with debug output:
```bash
uv run python server.py --debug
```
## Contributing
1. Fork the repository
2. Create a feature branch: `git checkout -b feature-name`
3. Make your changes
4. Add tests for new functionality
5. Submit a pull request
## License
This project is licensed under the MIT License. See LICENSE file for details.
## Resources
- [MCP Documentation](https://modelcontextprotocol.io/)
- [FastMCP GitHub](https://github.com/jlowin/fastmcp)
- [Claude Desktop MCP Setup](https://claude.ai/docs)
---
**Built with FastMCP** - A high-level Python library for building MCP servers. TDQS
Scored across 8 tools
Each tool has a clearly distinct mathematical operation with no overlap in purpose. For example, 'add' and 'subtract' are complementary but not ambiguous, and 'factorial' and 'power' serve unique functions. An agent can easily differentiate between them based on their specific descriptions.
The tool names are mostly consistent, using clear verb-based or descriptive terms like 'add', 'multiply', and 'square_root'. However, there is a minor deviation with 'calculate_percentage' which is more verbose compared to others like 'divide' or 'power', slightly breaking the pattern but still maintaining readability.
With 8 tools, this server is well-scoped for a basic mathematical operations toolkit. Each tool earns its place by covering fundamental arithmetic and mathematical functions, such as addition, subtraction, multiplication, division, and specialized operations like factorial and square root, without being overly complex or sparse.
The tool set provides complete coverage for basic mathematical operations, including all core arithmetic (add, subtract, multiply, divide) and common functions (percentage, factorial, power, square root). There are no obvious gaps for this domain, as it supports a wide range of calculations an agent might need without dead ends.