{"id":34281166,"url":"https://github.com/clouatre-labs/math-mcp-learning-server","last_synced_at":"2026-08-28T02:24:02.351Z","repository":{"id":315815064,"uuid":"1060761440","full_name":"clouatre-labs/math-mcp-learning-server","owner":"clouatre-labs","description":"Educational MCP server with math operations, matrix algebra, data visualization, and persistent workspace","archived":false,"fork":false,"pushed_at":"2026-08-19T10:07:05.000Z","size":1307,"stargazers_count":5,"open_issues_count":1,"forks_count":4,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-08-19T12:08:58.455Z","etag":null,"topics":["calculator","educational","fastmcp","fastmcp-3","mathematics","mcp","mcp-server","python","tutorial"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/clouatre-labs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":"GOVERNANCE.md","roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","claude":null,"gemini":null,"cursor":null,"copilot":null,"dco":null,"cla":null,"disclosure":null}},"created_at":"2025-09-20T14:39:29.000Z","updated_at":"2026-08-19T10:10:06.000Z","dependencies_parsed_at":"2026-08-12T06:37:31.278Z","dependency_job_id":null,"html_url":"https://github.com/clouatre-labs/math-mcp-learning-server","commit_stats":null,"previous_names":["huguesclouatre/math-mcp-server","huguesclouatre/math-mcp-learning-server","clouatre/math-mcp-learning-server","clouatre-labs/math-mcp-learning-server"],"tags_count":44,"template":false,"template_full_name":null,"purl":"pkg:github/clouatre-labs/math-mcp-learning-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clouatre-labs%2Fmath-mcp-learning-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clouatre-labs%2Fmath-mcp-learning-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clouatre-labs%2Fmath-mcp-learning-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clouatre-labs%2Fmath-mcp-learning-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/clouatre-labs","download_url":"https://codeload.github.com/clouatre-labs/math-mcp-learning-server/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clouatre-labs%2Fmath-mcp-learning-server/sbom","scorecard":{"id":1245811,"data":{"date":"2026-04-06T02:19:07Z","repo":{"name":"github.com/clouatre-labs/math-mcp-learning-server","commit":"637bad6ea7e514c204ad10784240718bd56922cf"},"scorecard":{"version":"v5.3.0","commit":"c22063e786c11f9dd714d777a687ff7c4599b600"},"score":7.5,"checks":[{"name":"Maintained","score":10,"reason":"30 commit(s) and 29 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#dangerous-workflow"}},{"name":"Dependency-Update-Tool","score":10,"reason":"update tool detected","details":["Info: detected update tool: RenovateBot: renovate.json:1"],"documentation":{"short":"Determines if the project uses a dependency update tool.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#dependency-update-tool"}},{"name":"Code-Review","score":0,"reason":"Found 0/28 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#code-review"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1","Info: Found text in security policy: SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#security-policy"}},{"name":"Token-Permissions","score":10,"reason":"GitHub workflow tokens follow principle of least privilege","details":["Info: jobLevel 'contents' permission set to 'read': .github/workflows/ci.yml:127","Info: jobLevel 'contents' permission set to 'read': .github/workflows/ci.yml:141","Info: found token with 'none' permissions: .github/workflows/ci.yml:1","Info: jobLevel 'contents' permission set to 'read': .github/workflows/ci.yml:24","Info: jobLevel 'contents' permission set to 'read': .github/workflows/issue-triage.yml:14","Info: jobLevel 'contents' permission set to 'read': .github/workflows/pr-triage.yml:16","Info: jobLevel 'contents' permission set to 'read': .github/workflows/release.yml:31","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/release.yml:74","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/release.yml:129","Info: jobLevel 'contents' permission set to 'read': .github/workflows/release.yml:164","Info: jobLevel 'contents' permission set to 'read': .github/workflows/release.yml:184","Info: jobLevel 'contents' permission set to 'read': .github/workflows/reuse.yml:44","Info: jobLevel 'contents' permission set to 'read': .github/workflows/scorecard.yml:21","Info: topLevel 'contents' permission set to 'read': .github/workflows/ci.yml:17","Info: found token with 'none' permissions: .github/workflows/issue-triage.yml:1","Info: found token with 'none' permissions: .github/workflows/pr-triage.yml:1","Info: found token with 'none' permissions: .github/workflows/release.yml:1","Info: found token with 'none' permissions: .github/workflows/reuse.yml:1","Info: found token with 'none' permissions: .github/workflows/scorecard.yml:1"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":10,"reason":"all dependencies are pinned","details":["Info:  16 out of  16 GitHub-owned GitHubAction dependencies pinned","Info:  16 out of  16 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#vulnerabilities"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#signed-releases"}},{"name":"CII-Best-Practices","score":7,"reason":"badge detected: Silver","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#cii-best-practices"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/release.yml:154"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#packaging"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#sast"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#fuzzing"}},{"name":"Branch-Protection","score":4,"reason":"branch protection is not maximal on development and all release branches","details":["Info: 'allow deletion' disabled on branch 'main'","Info: 'force pushes' disabled on branch 'main'","Warn: 'branch protection settings apply to administrators' is disabled on branch 'main'","Info: 'stale review dismissal' is required to merge on branch 'main'","Warn: branch 'main' does not require approvers","Warn: codeowners review is not required on branch 'main'","Warn: 'last push approval' is disabled on branch 'main'","Info: 'up-to-date branches' is required to merge on branch 'main'","Info: status check found to merge onto on branch 'main'","Info: PRs are required in order to make changes on branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#branch-protection"}},{"name":"Contributors","score":6,"reason":"project has 2 contributing companies or organizations -- score normalized to 6","details":["Info: found contributions from: clouatre-labs, slalom hec montreal"],"documentation":{"short":"Determines if the project has a set of contributors from multiple organizations (e.g., companies).","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#contributors"}},{"name":"CI-Tests","score":10,"reason":"30 out of 30 merged PRs checked by a CI test -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project runs tests before pull requests are merged.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#ci-tests"}}]},"last_synced_at":"2026-04-09T00:30:15.978Z","repository_id":315815064,"created_at":"2026-04-09T00:30:15.978Z","updated_at":"2026-04-09T00:30:15.978Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36948253,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-08-22T15:14:58.755Z","status":"online","status_checked_at":"2026-08-28T02:00:06.244Z","response_time":114,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["calculator","educational","fastmcp","fastmcp-3","mathematics","mcp","mcp-server","python","tutorial"],"created_at":"2025-12-16T23:00:37.557Z","updated_at":"2026-08-28T02:24:02.345Z","avatar_url":"https://github.com/clouatre-labs.png","language":"Python","funding_links":[],"categories":["カテゴリ","MCP Servers Directory","Data Analysis \u0026 Exploration Mcp Servers","🧮 Data Science Tools (13 servers)","📦 Other"],"sub_categories":["🛠️ \u003ca name=\"developer-tools\"\u003e\u003c/a\u003e開発ツール","Quick Submission"],"readme":"\u003c!-- mcp-name: io.github.clouatre-labs/math-mcp-learning-server --\u003e\n\n\u003ch1 align=\"center\"\u003emath-mcp-learning-server\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://pypi.org/project/math-mcp-learning-server/\"\u003e\u003cimg alt=\"PyPI\" src=\"https://img.shields.io/pypi/v/math-mcp-learning-server?style=for-the-badge\u0026color=3b82f6\" height=\"20\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://pypi.org/project/math-mcp-learning-server/\"\u003e\u003cimg alt=\"Python\" src=\"https://img.shields.io/pypi/pyversions/math-mcp-learning-server?style=for-the-badge\" height=\"20\"\u003e\u003c/a\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg alt=\"License\" src=\"https://img.shields.io/badge/license-Apache--2.0-blue.svg?style=for-the-badge\" height=\"20\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://api.reuse.software/info/github.com/clouatre-labs/math-mcp-learning-server\"\u003e\u003cimg alt=\"REUSE\" src=\"https://img.shields.io/reuse/compliance/github.com/clouatre-labs/math-mcp-learning-server?style=for-the-badge\" height=\"20\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.bestpractices.dev/projects/12334\"\u003e\u003cimg alt=\"OpenSSF Best Practices\" src=\"https://img.shields.io/cii/level/12334?style=for-the-badge\" height=\"20\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\u003cstrong\u003eEducational MCP server with 17 tools, persistent workspace, and cloud hosting.\u003c/strong\u003e Built with \u003ca href=\"https://gofastmcp.com\"\u003eFastMCP\u003c/a\u003e and the official \u003ca href=\"https://github.com/modelcontextprotocol/python-sdk\"\u003eModel Context Protocol Python SDK\u003c/a\u003e.\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  Available on the \u003ca href=\"https://registry.modelcontextprotocol.io/\"\u003eMCP Registry\u003c/a\u003e (\u003ccode\u003eio.github.clouatre-labs/math-mcp-learning-server\u003c/code\u003e) and \u003ca href=\"https://pypi.org/project/math-mcp-learning-server/\"\u003ePyPI\u003c/a\u003e.\n\u003c/p\u003e\n\n## Demo\n\n![math-mcp Demo](https://raw.githubusercontent.com/clouatre-labs/math-mcp-learning-server/main/assets/demo.gif)\n\nSee [CONTRIBUTING.md](https://github.com/clouatre-labs/math-mcp-learning-server/blob/main/CONTRIBUTING.md#demo-gif) for instructions to record your own demo.\n\n## Quick Start\n\n### Cloud (No Installation)\n\nConnect your MCP client to the hosted server:\n\n**Claude Desktop** (`claude_desktop_config.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"math-cloud\": {\n      \"transport\": \"http\",\n      \"url\": \"https://math-mcp.fastmcp.app/mcp\"\n    }\n  }\n}\n```\n\n### Local Installation\n\n```json\n{\n  \"mcpServers\": {\n    \"math\": {\n      \"command\": \"uvx\",\n      \"args\": [\"math-mcp-learning-server[scientific,plotting]\"]\n    }\n  }\n}\n```\n\nFor other installation options (basic, scientific-only, plotting-only), see [CONTRIBUTING.md](https://github.com/clouatre-labs/math-mcp-learning-server/blob/main/CONTRIBUTING.md).\n\n## Tools\n\n| Category | Tool | Description |\n|----------|------|-------------|\n| **Workspace** | `workspace_save` | Save calculations to persistent storage |\n| | `workspace_load` | Retrieve previously saved calculations |\n| **Math** | `calc_expression` | Safely evaluate mathematical expressions |\n| | `calc_statistics` | Statistical analysis (mean, median, mode, std_dev, variance) |\n| | `calc_interest` | Calculate compound interest for investments |\n| | `calc_units` | Convert between units (length, weight, temperature) |\n| **Matrix** | `matrix_multiply` | Multiply two matrices |\n| | `matrix_transpose` | Transpose a matrix |\n| | `matrix_determinant` | Calculate matrix determinant |\n| | `matrix_inverse` | Calculate matrix inverse |\n| | `matrix_eigenvalues` | Calculate eigenvalues |\n| **Visualization** | `plot_function` | Plot mathematical functions |\n| | `plot_histogram` | Create statistical histograms |\n| | `plot_line_chart` | Create line charts |\n| | `plot_scatter` | Create scatter plots |\n| | `plot_box_plot` | Create box plots |\n| | `plot_financial_line` | Create financial line charts |\n\n## Resources\n\n- `math://workspace` - Persistent calculation workspace summary\n- `math://history` - Chronological calculation history\n- `math://functions` - Available mathematical functions reference\n- `math://constants/{constant}` - Mathematical constants (pi, e, golden_ratio, etc.)\n- `math://catalog/tools` - Tool catalog with metadata and usage examples\n- `math://variables` - Active variables in the current workspace\n- `math://test` - Server health check\n\n## Prompts\n\n- `math_tutor` - Structured tutoring prompts (configurable difficulty)\n- `formula_explainer` - Formula explanation with step-by-step breakdowns\n\nSee [Usage Examples](https://github.com/clouatre-labs/math-mcp-learning-server/blob/main/docs/EXAMPLES.md) for detailed examples.\n\n## Development\n\nSee [CONTRIBUTING.md](https://github.com/clouatre-labs/math-mcp-learning-server/blob/main/CONTRIBUTING.md) for development setup, testing, and contribution guidelines.\n\n## Security\n\n- **OpenSSF Best Practices Silver** - Fewer than 1% of open source projects reach this level\n- **REUSE/SPDX** - License compliance for all files\n- **Signed Commits** - GPG-signed commits required\n- **Dependency Scanning** - Automated updates via Renovate\n- **pip-audit CVE Scanning** - Automated dependency vulnerability checks\n- **gitleaks Secret Scanning** - Detects secrets in code and history\n- **zizmor GitHub Actions Security** - Workflow security scanning\n- **commitlint Enforcement** - Conventional commit validation in CI\n- **OpenSSF Scorecard** - Continuous open source security assessment\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003ecalc_expression safety\u003c/strong\u003e\u003c/summary\u003e\n\nThe `calc_expression` tool uses restricted `eval()` with a whitelist of allowed characters and functions, restricted global scope (only `math` module and `abs`), and no access to dangerous built-ins or imports. All tool inputs are validated with Pydantic models. File operations are restricted to the designated workspace directory. Complete type hints and validation are enforced for all operations.\n\n\u003c/details\u003e\n\n## Documentation\n\n- [Architecture](https://github.com/clouatre-labs/math-mcp-learning-server/blob/main/docs/ARCHITECTURE.md)\n- [Cloud Deployment Guide](https://github.com/clouatre-labs/math-mcp-learning-server/blob/main/docs/CLOUD_DEPLOYMENT.md)\n- [Usage Examples](https://github.com/clouatre-labs/math-mcp-learning-server/blob/main/docs/EXAMPLES.md)\n- [Contributing Guidelines](https://github.com/clouatre-labs/math-mcp-learning-server/blob/main/CONTRIBUTING.md)\n- [Maintainer Guide](https://github.com/clouatre-labs/math-mcp-learning-server/blob/main/.github/MAINTAINER_GUIDE.md)\n- [Roadmap](https://github.com/clouatre-labs/math-mcp-learning-server/blob/main/ROADMAP.md)\n- [Code of Conduct](https://github.com/clouatre-labs/math-mcp-learning-server/blob/main/CODE_OF_CONDUCT.md)\n- [License](https://github.com/clouatre-labs/math-mcp-learning-server/blob/main/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclouatre-labs%2Fmath-mcp-learning-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fclouatre-labs%2Fmath-mcp-learning-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclouatre-labs%2Fmath-mcp-learning-server/lists"}