Scientific Computation MCP

Fornece ferramentas para computação científica, incluindo armazenamento de tensores, álgebra linear, cálculo vetorial e visualização.

Documentação

MseeP.ai Security Assessment Badge

Scientific Computation MCP

smithery badge

Verified on MseeP

MCP Badge

Guia de Instalação

O servidor fala HTTP streamable. Adicione-o pelo Smithery com a CLI do Smithery (Node 20+):

npm install -g smithery@latest
smithery mcp add @aman-amith-shastry/scientific_computation_mcp --client claude

O namespace é em minúsculas. A busca no registro do Smithery diferencia maiúsculas de minúsculas, e a grafia com maiúsculas resolve para um registro vazio sem ferramentas, em vez de falhar diretamente, então um nome capitalizado parece um servidor sem capacidades.

Troque --client cursor por Cursor, ou remova --client para adicioná-lo como uma conexão remota do Smithery. Reinicie o cliente depois para que ele reconheça o servidor.

Executando Localmente

uv sync
uv run src/main.py

O endpoint MCP está em http://localhost:8081/mcp e uma sonda de atividade em http://localhost:8081/health. Substituições de ambiente: PORT, HOST, MCP_PATH, ALLOWED_ORIGINS, LOG_LEVEL.

Implantação

O Smithery não constrói nem hospeda mais contêineres — os servidores são publicados como uma URL que o gateway do Smithery faz proxy, ou como um pacote MCPB para stdio local. Este servidor é publicado por URL, então o contêiner roda em qualquer host que possa servir HTTPS.

docker build -t scientific-computation-mcp .
docker run -p 8081:8081 -e PORT=8081 scientific-computation-mcp

Duas restrições que o host deve atender:

  • Uma única instância. Tensores vivem na memória do processo entre chamadas de ferramentas, então escalar além de uma única réplica divide o armazenamento e quebra os fluxos de create_tensorview_tensor.
  • As sessões devem sobreviver. O transporte roda com estado (stateless_http=False) e o armazenamento de tensores é indexado por sessão MCP, o que mantém usuários concorrentes de ler os tensores uns dos outros.

Hospedando no Render

render.yaml implanta o Dockerfile como um serviço web de plano gratuito único. No painel do Render: New → Blueprint, depois selecione este repositório. O Render injeta PORT, encerra TLS e faz sondas em /health; nenhuma outra configuração é necessária.

Instâncias gratuitas desligam após 15 minutos sem tráfego de entrada e levam cerca de um minuto para voltar. Uma sessão MCP aberta não impede isso: o stream HTTP streamable é do servidor para o cliente, então uma sessão ociosa não envia nada de entrada e o serviço dorme por baixo dela. Duas consequências para planejar:

  • Tensores não sobrevivem a uma lacuna de 15 minutos entre chamadas de ferramentas. O armazenamento está na memória do processo, então um desligamento leva a sessão e seus tensores juntos. Uso ativo mantém o serviço de pé, pois cada chamada de ferramenta é tráfego de entrada; uma pausa longa no meio da análise não.
  • Varreduras no momento da publicação podem cair em uma instância adormecida. O Smithery varre a URL como SmitheryBot/1.0, e uma inicialização a frio pode exceder seu tempo limite. Aqueça /health primeiro.

O nível gratuito também concede 750 horas de instância por workspace por mês contra um mês de ~730 horas, então um serviço gratuito rodando continuamente cabe exatamente e um segundo não.

Qualquer host que mantenha um processo sempre ativo evita tudo isso — o contêiner é HTTP simples em $PORT sem suposições específicas de plataforma.

Publicação

curl -sS -o /dev/null -w '%{http_code}\n' https://<your-host>/health
smithery mcp publish "https://<your-host>/mcp" -n @aman-amith-shastry/scientific_computation_mcp

O servidor não aceita configuração do usuário, então nenhum esquema de configuração é necessário.

Componentes do Servidor

Ferramentas

Armazenamento de tensores

  • create_tensor: Cria um novo tensor com base em um nome, formato e valores fornecidos, e o adiciona ao armazenamento de tensores. Para os fins deste servidor, tensores são vetores e matrizes.
  • view_tensor: Exibe o conteúdo de um tensor do armazenamento.
  • delete_tensor: Exclui um tensor com base em seu nome no armazenamento de tensores.

Álgebra Linear

  • add_matrices: Soma duas matrizes com os nomes fornecidos, se compatíveis.
  • subtract_matrices: Subtrai duas matrizes com os nomes fornecidos, se compatíveis.
  • multiply_matrices: Multiplica duas matrizes com os nomes fornecidos, se compatíveis.
  • scale_matrix: Escala uma matriz do nome fornecido por um certo fator, no lugar por padrão.
  • matrix_inverse: Calcula a inversa da matriz com o nome fornecido.
  • transpose: Calcula a transposta da inversa da matriz do nome fornecido.
  • determinant: Calcula o determinante da matriz do nome fornecido.
  • rank: Calcula o posto (número de pivôs) da matriz do nome fornecido.
  • compute_eigen: Calcula os autovetores e autovalores da matriz do nome fornecido.
  • qr_decompose: Calcula a fatoração QR da matriz do nome fornecido. As colunas de Q são uma base ortonormal para a imagem da matriz, e R é triangular superior.
  • svd_decompose: Calcula a Decomposição em Valores Singulares da matriz do nome fornecido.
  • find_orthonormal_basis: Encontra uma base ortonormal para a matriz do nome fornecido. Os vetores retornados são todos ortogonais entre si e têm comprimento unitário.
  • change_basis: Calcula a matriz do nome fornecido na nova base.

Cálculo Vetorial

  • vector_project: Projeta um vetor no armazenamento de tensores para o vetor especificado no mesmo espaço vetorial.
  • vector_dot_product: Calcula o produto escalar de dois vetores nos armazenamentos de tensores com base em seus nomes fornecidos.
  • vector_cross_product: Calcula o produto vetorial de dois vetores nos armazenamentos de tensores com base em seus nomes fornecidos.
  • gradient: Computes the gradient of a multivariable function based on the input function. Example call: gradient("x^2 + 2xyz + zy^3"). Do NOT include the function name (like f(x, y, z) = ...`).
  • curl: Computes the curl of a vector field based on the input vector field. The input string must be formatted as a python list. Example call: curl("[3xy, 2z^4, 2y]"").
  • divergenceComputes the divergence of a vector field based on the input vector field. The input string must be formatted as a python list. Example call: divergence("[3xy, 2z^4, 2y]"").
  • laplacianComputes the laplacian of a scalar function (as the divergence of the gradient) or a vector field (where a component-wise laplacian is computed). If a scalar function is the input, it must be input in the same format as in the gradient tool. If the input is a vector field, it must be input in the same manner as the curl/divergence ferramentas.
  • directional_deriv: Computes the directional derivative of a function in a given direction u By default, the tool normalizes u before computing the directional derivative, as specified by the unit parâmetro.

Visualização

  • plot_vector_field: Plota um campo vetorial (especificado no mesmo formato das funções de rotacional/divergência). Atualmente, apenas campos vetoriais 3D são suportados. Uma imagem png 2D em perspectiva do campo vetorial é retornada. Por padrão, os limites do gráfico são de -1 a 1 em cada eixo.
  • plot_function: Plots a function in 2d or 3d (based on the input variables), specified in the same format as in the gradient ferramenta. Apenas as variáveis x e y podem ser usadas.