Differentiation MCP Server
# 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
Scored across 6 tools
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.
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.
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.
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.