symbolica-mcp

Un servidor de computación científica para matemáticas simbólicas, análisis de datos y visualización utilizando bibliotecas populares de Python como NumPy, SciPy y Pandas.

Documentación

symbolica-mcp

Un servidor de computación científica del Protocolo de Contexto de Modelos (MCP) que permite a la IA, como Claude, realizar computación simbólica, llevar a cabo cálculos, analizar datos y generar visualizaciones. Esto es particularmente útil para aplicaciones científicas y de ingeniería, incluyendo la computación cuántica, todo dentro de un entorno contenerizado.

Características

  • Ejecutar operaciones de computación científica con NumPy, SciPy, SymPy, Pandas
  • Realizar matemáticas simbólicas y resolver ecuaciones diferenciales
  • Soporte para operaciones de álgebra lineal y manipulaciones de matrices
  • Análisis de computación cuántica
  • Crear visualizaciones de datos con Matplotlib y Seaborn
  • Realizar operaciones de aprendizaje automático con scikit-learn
  • Ejecutar operaciones de tensores y cálculos complejos de matrices
  • Analizar conjuntos de datos con herramientas estadísticas
  • Soporte multiplataforma (detecta automáticamente Windows, macOS y Linux), especialmente para usuarios con chips de la serie M de Mac
  • Funciona tanto en procesadores Intel/AMD (x86_64) como ARM

Inicio rápido

Usando la imagen de Docker

# Pull the image from Docker Hub
docker pull ychen94/computing-mcp:latest

# Run the container (automatically detects host OS)
docker run -i --rm -v /tmp:/app/shared ychen94/computing-mcp:latest

Para usuarios de Windows:

docker run -i --rm -v $env:TEMP:/app/shared ychen94/computing-mcp:latest

Integración con Claude para Desktop

  1. Abre Claude para Desktop
  2. Abre Configuración ➝ Desarrollador ➝ Editar Configuración
  3. Agrega la siguiente configuración:

Para MacOS/Linux:

{
  "mcpServers": {
    "computing-mcp": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-v",
        "/tmp:/app/shared",
        "ychen94/computing-mcp:latest"
      ]
    }
  }
}

Para Windows:

{
  "mcpServers": {
    "computing-mcp": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-v",
        "%TEMP%:/app/shared",
        "ychen94/computing-mcp:latest"
      ]
    }
  }
}

Ejemplos

Productos de tensores

Can you calculate and visualize the tensor product of two matrices? Please run:

import numpy as np
import matplotlib.pyplot as plt

# Define two matrices
A = np.array([[1, 2], 
              [3, 4]])
B = np.array([[5, 6],
              [7, 8]])

# Calculate tensor product using np.kron (Kronecker product)
tensor_product = np.kron(A, B)

# Display the result
print("Matrix A:")
print(A)
print("\nMatrix B:")
print(B)
print("\nTensor Product A ⊗ B:")
print(tensor_product)

# Create a visualization of the tensor product
plt.figure(figsize=(8, 6))
plt.imshow(tensor_product, cmap='viridis')
plt.colorbar(label='Value')
plt.title('Visualization of Tensor Product A ⊗ B')

Matemáticas simbólicas

Can you solve this differential equation? Please run:
import sympy as sp
import matplotlib.pyplot as plt
import numpy as np

# Define symbolic variable
x = sp.Symbol('x')
y = sp.Function('y')(x)

# Define the differential equation: y''(x) + 2*y'(x) + y(x) = 0
diff_eq = sp.Eq(sp.diff(y, x, 2) + 2*sp.diff(y, x) + y, 0)

# Solve the equation
solution = sp.dsolve(diff_eq)
print("Solution:")
print(solution)

# Plot a particular solution (C1=1, C2=0)
solution_func = solution.rhs.subs({sp.symbols('C1'): 1, sp.symbols('C2'): 0})
print("Particular solution:")
print(solution_func)

# Create a numerical function we can evaluate
solution_lambda = sp.lambdify(x, solution_func)

# Plot the solution
x_vals = np.linspace(0, 5, 100)
y_vals = [float(solution_lambda(x_val)) for x_val in x_vals]

plt.figure(figsize=(10, 6))
plt.plot(x_vals, y_vals)
plt.grid(True)
plt.title("Solution to y''(x) + 2*y'(x) + y(x) = 0")
plt.xlabel('x')
plt.ylabel('y(x)')
plt.show()

Análisis de datos

Can you perform a clustering analysis on this dataset? Please run:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler

# Create a sample dataset
np.random.seed(42)
n_samples = 300

# Create three clusters
cluster1 = np.random.normal(loc=[2, 2], scale=0.5, size=(n_samples//3, 2))
cluster2 = np.random.normal(loc=[7, 7], scale=0.5, size=(n_samples//3, 2))
cluster3 = np.random.normal(loc=[2, 7], scale=0.5, size=(n_samples//3, 2))

# Combine clusters
X = np.vstack([cluster1, cluster2, cluster3])

# Create DataFrame
df = pd.DataFrame(X, columns=['Feature1', 'Feature2'])
print(df.head())

# Standardize data
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# Apply KMeans clustering
kmeans = KMeans(n_clusters=3, random_state=42)
df['Cluster'] = kmeans.fit_predict(X_scaled)

# Plot the clusters
plt.figure(figsize=(10, 6))
for cluster_id in range(3):
    cluster_data = df[df['Cluster'] == cluster_id]
    plt.scatter(cluster_data['Feature1'], cluster_data['Feature2'], 
                label=f'Cluster {cluster_id}', alpha=0.7)

# Plot cluster centers
centers = scaler.inverse_transform(kmeans.cluster_centers_)
plt.scatter(centers[:, 0], centers[:, 1], s=200, c='red', marker='X', label='Centers')

plt.title('K-Means Clustering Results')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.legend()
plt.grid(True)

Computación cuántica

quantum example

Galería

física láser: laser

integral elíptica: elliptic integral elliptic integral pic

Solución de problemas

Problemas comunes

  1. Errores de permisos con montajes de volúmenes

    • Asegúrate de que el directorio de montaje exista y tenga los permisos adecuados
  2. Los archivos de imágenes de gráficos no aparecen

    • Verifica la ruta en tu sistema host: /tmp para macOS/Linux o tu carpeta temporal para Windows

    • Verifica que Docker tenga permisos para escribir en la ubicación de montaje

    • Revisa el contenido de salida de la herramienta mcp find the pic luego ábrelo en la terminal o en tu visor de imágenes.

      ⭐️ ⭐️ Utilizo el iterm-mcp-server u otros servidores mcp de terminales para abrir el archivo sin interrumpir tu flujo de trabajo. ⭐️ ⭐️

Soporte

Si encuentras problemas, abre un issue en GitHub con:

  1. Mensajes de error
  2. Tu sistema operativo y versión de Docker
  3. Pasos para reproducir el problema

Licencia

Este proyecto está licenciado bajo la Licencia MIT.
Para más detalles, consulta el archivo LICENSE en el repositorio de este proyecto.