Skip to main content
Glama
ShawneilRodrigues

Differentiation MCP Server

README.md
# Differentiation MCP Server

A Model Context Protocol (MCP) server that provides comprehensive mathematical differentiation capabilities using both symbolic computation (SymPy) and automatic differentiation (autograd).

## Features

### Differentiation Tools

The server provides six powerful differentiation tools:

1. **differentiate_symbolic** - Compute exact symbolic derivatives using SymPy
   - Supports any order of derivatives
   - Automatic simplification
   - LaTeX output for mathematical notation

2. **differentiate_numerical** - Numerical derivatives using autograd
   - First and second order derivatives
   - Evaluation at specific points
   - High precision numerical computation

3. **partial_derivatives** - Multivariable function differentiation
   - First-order partials for all variables
   - Mixed partial derivatives
   - Support for any number of variables

4. **gradient_vector** - Gradient computation for multivariable functions
   - Symbolic gradient vectors
   - Point evaluation capabilities
   - LaTeX formatted output

5. **chain_rule** - Application of the chain rule for composite functions
   - Step-by-step breakdown
   - Automatic substitution and simplification
   - Educational explanations

6. **implicit_differentiation** - Differentiation of implicit equations
   - Handles equations of the form F(x,y) = 0
   - Automatic application of implicit differentiation rules
   - Clear step-by-step solutions

### Prompts

The server provides educational prompts:

- **differentiation-help**: Get guidance on which tool to use for different types of problems
- **calculus-problem-solver**: Structured approach to solving calculus problems

## Dependencies

- `mcp` - Model Context Protocol framework
- `autograd` - Automatic differentiation library
- `sympy` - Symbolic mathematics library
- `numpy` - Numerical operations

## Installation and Setup

### Prerequisites

- Python 3.12 or higher
- Virtual environment (created automatically by the project)

### Configuration for Claude Desktop

#### Windows
Add to `%APPDATA%/Claude/claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "differentiation-server": {
      "command": "python",
      "args": ["-m", "differentiation_server"],
      "cwd": "c:\\Users\\shawn\\OneDrive\\Desktop\\diffrentiation",
      "env": {
        "PYTHONPATH": "c:\\Users\\shawn\\OneDrive\\Desktop\\diffrentiation\\src"
      }
    }
  }
}
```

#### macOS
Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "differentiation-server": {
      "command": "python",
      "args": ["-m", "differentiation_server"],
      "cwd": "/path/to/your/diffrentiation",
      "env": {
        "PYTHONPATH": "/path/to/your/diffrentiation/src"
      }
    }
  }
}
```

## Usage Examples

### Symbolic Differentiation

```
Tool: differentiate_symbolic
Arguments:
- expression: "x**3 + 2*x**2 + x + 1"
- variable: "x"
- order: 1
```

### Numerical Differentiation

```
Tool: differentiate_numerical
Arguments:
- function_def: "lambda x: anp.sin(x) + x**2"
- point: 1.5707963267948966
- order: 1
```

### Partial Derivatives

```
Tool: partial_derivatives
Arguments:
- expression: "x**2 + y**2 + x*y"
- variables: ["x", "y"]
```

### Chain Rule

```
Tool: chain_rule
Arguments:
- outer_function: "sin(u)"
- inner_function: "x**2 + 1"
- variable: "x"
```

## Development

### Running the Server

```bash
cd diffrentiation
.\.venv\Scripts\activate.bat  # Windows
source .venv/bin/activate     # macOS/Linux

python -m differentiation_server
```

### Debugging

Use the MCP Inspector for debugging:

```bash
npx @modelcontextprotocol/inspector python -m differentiation_server
```

### Building

```bash
uv sync
uv build
```

## Educational Value

This MCP server is designed to be educational, providing:

- Step-by-step solutions for complex differentiation problems
- Clear explanations of mathematical concepts
- LaTeX formatting for proper mathematical notation
- Error handling with helpful messages
- Support for various difficulty levels from basic to advanced calculus

## Contributing

The server is built using the Model Context Protocol and follows MCP best practices. Contributions are welcome for:

- Additional differentiation techniques
- Enhanced error handling
- More educational prompts
- Performance optimizations

## License

This project is open source and available under standard licensing terms.

TDQS

B3.4/5.0

Scored across 6 tools

Disambiguation4/5

Most tools have clearly distinct purposes: symbolic vs. numerical differentiation are separated by method, and chain rule/implicit differentiation cover specific techniques. However, partial_derivatives and gradient_vector are closely related since a gradient is essentially the vector of all partial derivatives, which could cause some misselection.

Naming Consistency3/5

Two tools follow a clear verb_noun pattern (differentiate_symbolic, differentiate_numerical), but the remaining four are descriptive noun phrases like partial_derivatives, gradient_vector, chain_rule, and implicit_differentiation. The naming is readable and consistently snake_case, but the structural conventions are mixed.

Tool Count5/5

Six tools is a well-scoped count for a differentiation-focused server. Each tool covers a meaningful aspect of the domain without unnecessary redundancy or bloat.

Completeness4/5

The toolset covers symbolic, numerical, partial, gradient, chain rule, and implicit differentiation, which addresses the core domain well. Minor gaps such as higher-order derivatives or directional derivatives could be added, but they are not obvious dead ends for typical differentiation workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues