mcp-parigp
# mcp-parigp
> MCP server exposing cypari2 (PARI/GP) number theory library
[](https://pypi.org/project/mcp-parigp/)
[](https://pypi.org/project/mcp-parigp/)
[](https://codecov.io/gh/daedalus/mcp-parigp)
[](https://github.com/astral-sh/ruff)
mcp-name: io.github.daedalus/mcp-parigp
## Install
```bash
pip install mcp-parigp
```
## Usage
### As MCP Server
Run directly:
```bash
mcp-parigp
```
Or use with an MCP client by configuring in your settings:
```json
{
"mcpServers": {
"mcp-parigp": {
"command": "mcp-parigp"
}
}
}
```
### In Python
```python
from mcp_parigp import eval_expression, factor, isprime
# Evaluate PARI/GP expressions
result = eval_expression("factor(100)")
print(result) # [[2, 2], [5, 2]]
# Factor integers
print(factor(100)) # [[2, 2], [5, 2]]
# Test primality
print(isprime(29)) # True
```
## API
### Number Theory
- `factor(n)` - Factor an integer
- `isprime(n)` - Test if n is prime
- `gcd(a, b)` - Greatest common divisor
- `phi(n)` - Euler's totient function
- `sigma(n, k)` - Sum of k-th power of divisors
- `jacobi(a, n)` - Jacobi symbol
- `znorder(x, n)` - Multiplicative order modulo n
- `primes(n)` - First n primes
- `nextprime(n)` - Next prime after n
### Polynomials
- `polroots(pol)` - Find roots of polynomial
- `polcyclo(n)` - n-th cyclotomic polynomial
- `deriv(pol)` - Derivative of polynomial
- `subst(pol, v, expr)` - Substitute in polynomial
### Number Fields
- `nfinit(pol)` - Initialize number field
- `bnfinit(pol)` - Initialize with Buchmann's algorithm
- `idealadd(nf, a, b)` - Add ideals
- `idealmul(nf, a, b)` - Multiply ideals
### Elliptic Curves
- `ellinit(eq)` - Initialize elliptic curve
- `ellap(E, p)` - Trace of Frobenius at p
- `elltors(E)` - Torsion subgroup
- `ellheight(E, P)` - Canonical height
### Matrices
- `matid(n)` - n×n identity matrix
- `matdet(m)` - Matrix determinant
- `matinv(m)` - Matrix inverse
- `matrank(m)` - Matrix rank
### Elementary Functions
- `sin`, `cos`, `tan`, `asin`, `acos`, `atan`
- `sinh`, `cosh`, `tanh`, `asinh`, `acosh`, `atanh`
- `exp`, `log`, `sqrt`, `abs`
- `pi()`, `euler()`, `I()`
## Development
```bash
git clone https://github.com/daedalus/mcp-parigp.git
cd mcp-parigp
pip install -e ".[test]"
# run tests
pytest
# format
ruff format src/ tests/
# lint
ruff check src/ tests/
# type check
mypy src/
```
TDQS
Scored across 143 tools
Each tool corresponds to a distinct mathematical operation or concept, with clear names and descriptions that avoid confusion. Only a few generic tools like 'abs' and 'sqrt' are unambiguous, and most have specialized domains (e.g., elliptic curve functions, number field functions).
All tool names are lowercase, single words (or concatenated without underscores), following a consistent pattern of using the mathematical symbol or abbreviation. No mixing of cases or styles, making it predictable.
With 143 tools, the server is excessively large for typical use, overwhelming agents with choices. While the full PARI/GP library warrants many functions, this count far exceeds the recommended 3-15 range for a coherent toolset.
The tool set covers a broad range of mathematical domains including arithmetic, number theory, elliptic curves, linear algebra, and modular forms. Minor gaps exist (e.g., Galois group functions), but the overall coverage is very comprehensive.