symbolica-mcp

Um servidor

Documentação

symbolica-mcp

Um servidor de Model Context Protocol (MCP) para computação científica permite que IAs, como o Claude, realizem computação simbólica, conduzam cálculos, analisem dados e gerem visualizações. Isso é particularmente útil para aplicações científicas e de engenharia, incluindo computação quântica, tudo em um ambiente containerizado.

Recursos

  • Execute operações de computação científica com NumPy, SciPy, SymPy, Pandas
  • Realize matemática simbólica e resolva equações diferenciais
  • Suporte para operações de álgebra linear e manipulações de matrizes
  • Análise de computação quântica
  • Crie visualizações de dados com Matplotlib e Seaborn
  • Execute operações de aprendizado de máquina com scikit-learn
  • Execute operações de tensor e cálculos complexos de matrizes
  • Analise conjuntos de dados com ferramentas estatísticas
  • Suporte multiplataforma (detecta automaticamente Windows, macOS e Linux), especialmente para usuários com chips da série M da Apple
  • Funciona em processadores Intel/AMD (x86_64) e ARM

Início Rápido

Usando a imagem 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 usuários Windows:

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

Integrando com o Claude for Desktop

  1. Abra o Claude for Desktop
  2. Abra Configurações ➝ Desenvolvedor ➝ Editar Configuração
  3. Adicione a seguinte configuração:

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"
      ]
    }
  }
}

Exemplos

Produtos Tensoriais

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ática Simbólica

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álise de Dados

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)

Computação Quântica

quantum example

Galeria

física do laser: laser

integral elíptica: elliptic integral elliptic integral pic

Solução de Problemas

Problemas Comuns

  1. Erros de permissão com montagens de volume

    • Certifique-se de que o diretório de montagem existe e tem permissões adequadas
  2. Arquivos de imagem de gráficos não aparecem

    • Verifique o caminho no seu sistema host: /tmp para macOS/Linux ou sua pasta temporária para Windows

    • Verifique se o Docker tem permissões para escrever no local de montagem

    • verifique o conteúdo de saída da ferramenta mcp find the pic depois abra-o no terminal ou no seu visualizador de imagens.

      ⭐️ ⭐️ Eu uso o iterm-mcp-server ou servidores mcp de outros terminais para abrir o arquivo sem interromper seu fluxo de trabalho. ⭐️ ⭐️

Suporte

Se você encontrar problemas, abra uma issue no GitHub com:

  1. Mensagens de erro
  2. Seu sistema operacional e versão do Docker
  3. Passos para reproduzir o problema

Licença

Este projeto é licenciado sob a Licença MIT.
Para mais detalhes, consulte o arquivo LICENSE no repositório deste projeto.