{
  "markdown": "[![MseeP.ai Security Assessment Badge](https://mseep.net/pr/aman-amith-shastry-scientific-computation-mcp-badge.png)](https://mseep.ai/app/aman-amith-shastry-scientific-computation-mcp)\n\n# Scientific Computation MCP\n\n[![smithery badge](https://smithery.ai/badge/Aman-Amith-Shastry/scientific_computation_mcp)](https://smithery.ai/servers/Aman-Amith-Shastry/scientific_computation_mcp)\n\n[![Verified on MseeP](https://mseep.ai/badge.svg)](https://mseep.ai/app/5927ad38-70f6-4f5b-9778-e61ec902d735)\n\n[![MCP Badge](https://lobehub.com/badge/mcp-full/aman-amith-shastry-scientific_computation_mcp)](https://lobehub.com/mcp/aman-amith-shastry-scientific_computation_mcp)\n\n## Installation Guide\n\nThe server speaks streamable HTTP. Add it from Smithery with the Smithery CLI (Node 20+):\n\n```bash\nnpm install -g smithery@latest\nsmithery mcp add @aman-amith-shastry/scientific_computation_mcp --client claude\n```\n\nThe namespace is lowercase. Smithery's registry lookup is case-sensitive, and the\nmixed-case spelling resolves to an empty record with no tools rather than failing\noutright, so a capitalized name looks like a server with no capabilities.\n\nSwap `--client cursor` for Cursor, or drop `--client` to add it as a remote Smithery\nconnection. Restart the client afterwards so it picks up the server.\n\n## Running Locally\n\n```bash\nuv sync\nuv run src/main.py\n```\n\nThe MCP endpoint is at `http://localhost:8081/mcp` and a liveness probe at\n`http://localhost:8081/health`. Environment overrides: `PORT`, `HOST`, `MCP_PATH`,\n`ALLOWED_ORIGINS`, `LOG_LEVEL`.\n\n## Deployment\n\nSmithery no longer builds or hosts containers — servers are published either as a URL\nthat Smithery's gateway proxies to, or as an MCPB bundle for local stdio. This server is\npublished by URL, so the container runs on any host that can serve HTTPS.\n\n```bash\ndocker build -t scientific-computation-mcp .\ndocker run -p 8081:8081 -e PORT=8081 scientific-computation-mcp\n```\n\nTwo constraints the host must satisfy:\n\n- **One instance.** Tensors live in process memory between tool calls, so scaling past a\n  single replica splits the store and breaks `create_tensor` → `view_tensor` flows.\n- **Sessions must survive.** The transport runs stateful (`stateless_http=False`) and\n  the tensor store is keyed per MCP session, which is what keeps concurrent users from\n  reading each other's tensors.\n\n### Hosting on Render\n\n[`render.yaml`](render.yaml) deploys the Dockerfile as a single free-plan web service.\nIn the Render dashboard: **New → Blueprint**, then select this repo. Render injects\n`PORT`, terminates TLS, and probes `/health`; no other configuration is required.\n\nFree instances spin down after 15 minutes without *inbound* traffic and take roughly a\nminute to come back. An open MCP session does not prevent this: the streamable-HTTP\nstream is server-to-client, so an idle session sends nothing inbound and the service\nsleeps out from under it. Two consequences worth planning around:\n\n- **Tensors do not survive a 15-minute gap between tool calls.** The store is in process\n  memory, so a spin-down takes the session and its tensors together. Active use keeps\n  the service up, since each tool call is inbound traffic; a long pause mid-analysis\n  does not.\n- **Publish-time scans can land on a sleeping instance.** Smithery scans the URL as\n  `SmitheryBot/1.0`, and a cold start can outrun its timeout. Warm `/health` first.\n\nThe free tier also grants 750 instance-hours per workspace per month against a ~730-hour\nmonth, so one continuously running free service just fits and a second does not.\n\nAny host that keeps one process always on avoids all of this — the container is plain\nHTTP on `$PORT` with no platform-specific assumptions.\n\n### Publishing\n\n```bash\ncurl -sS -o /dev/null -w '%{http_code}\\n' https://<your-host>/health\nsmithery mcp publish \"https://<your-host>/mcp\" -n @aman-amith-shastry/scientific_computation_mcp\n```\n\nThe server takes no user configuration, so no config schema is needed.\n\n## Components of the Server\n\n### Tools\n\n#### Tensor storage\n- ```create_tensor```: Creates a new tensor based on a given name, shape, and values, and adds it to the tensor store. For the purposes of this server, tensors are vectors and matrices.\n- ```view_tensor```: Display the contents of a tensor from the store .\n- ```delete_tensor```: Deletes a tensor based on its name in the tensor store.\n\n#### Linear Algebra\n- ```add_matrices```: Adds two matrices with the provided names, if compatible.\n- ```subtract_matrices```: Subtracts two matrices with the provided names, if compatible.\n- ```multiply_matrices```: Multiplies two matrices with the provided names, if compatible.\n- ```scale_matrix```: Scales a matrix of the provided name by a certain factor, in-place by default.\n- ```matrix_inverse```: Computes the inverse of the matrix with the provided name.\n- ```transpose```: Computes the transpose of the inverse of the matrix of the provided name.\n- ```determinant```: Computes the determinant of the matrix of the provided name.\n- ```rank```: Computes the rank (number of pivots) of the matrix of the provided name.\n- ```compute_eigen```: Calculates the eigenvectors and eigenvalues of the matrix of the provided name.\n- ```qr_decompose```: Computes the QR factorization of the matrix of the provided name. The columns of Q are an orthonormal basis for the image of the matrix, and R is upper triangular.\n- ```svd_decompose```: Computes the Singular Value Decomposition of the matrix of the provided name.\n- ```find_orthonormal_basis```: Finds an orthonormal basis for the matrix of the provided name. The vectors returned are all pair-wise orthogonal and are of unit length.\n- ```change_basis```: Computes the matrix of the provided name in the new basis.\n\n#### Vector Calculus\n- ```vector_project```: Projects a vector in the tensor store to the specified vector in the same vector space\n- ```vector_dot_product```: Computes the dot product of two vectors in the tensor stores based on their provided names.\n- ```vector_cross_product```: Computes the cross product of two vectors in the tensor stores based on their provided names.\n- ```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) = ...`).\n- ```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]\"\")```.\n- ```divergence```Computes 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]\"\")```.\n- ```laplacian```Computes 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``` tools.\n- ```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``` parameter.\n\n#### Visualization\n- ```plot_vector_field```: Plots a vector field (specified in the same format as in the curl/divergence functions). Currently, only 3d vector fields are supported. A 2d png perspective image of the vector field is returned. By default, the bounds of the graph are from -1 to 1 on each axis.\n- ```plot_function```: Plots a function in 2d or 3d (based on the input variables), specified in the same format as in the ```gradient``` tool. Only the variables x and y can be used.\n",
  "bytes": 7802,
  "sha": "e2604432e7bc6407948164c96b66185cccf2c7a8458192b768ef253bb10be3c0",
  "repo_slug": "aman-amith-shastry/scientific_computation_mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_ai_smithery_aman_amith_shastry_scientifi_9eeb9ae0/readme"
}