Arquimedes

io.github.richer-richard由 GitHub 帳號 richer-richard 發布v1.1.0更新於 Nov 4, 2026

Search and sample 1,038,963 competition and benchmark math problems.

已驗證STDIO僅桌面知識與記憶AI 與機器學習

概覽

AI 產生的概覽

唯讀 MCP 伺服器,以本機約 104 萬題競賽與基準數學題資料庫為基礎,支援全文檢索、依條件隨機抽題與讀取完整題目紀錄。

可以做什麼
  • 彙總題庫:依資料集、類別、競賽與解答類型統計數量
  • 依關鍵字檢索題目,可依類別、資料集、競賽與 Mohs 難度篩選
  • 依篩選條件隨機抽題,可用種子重現
  • 依 id 取得單一題目:LaTeX 題幹、選項、答案、提示、解答與推理軌跡
適用情境
適合讓助理取出真實的競賽或奧林匹亞數學題,用於出練習題、教學解說、探索資料集或建立評測素材,並依難度與主題篩選。
執行需求
以 stdio 本機程序執行,透過 uvx 從 PyPI 套件 arquimedes-mcp 啟動,需要 Python 與 uv。套件本身不含題目:需一次性下載約 1.3 GB 分片與約 0.8 GB 精簡索引到使用者資料目錄。未宣告帳號、API 金鑰或環境變數。
安裝前請注意
首次下載超過 2 GB 資料,需要磁碟空間與網路。未建立 SQLite 索引時,伺服器只能掃描部分題庫,統計與檢索涵蓋範圍不完整。Mohs 難度是校準值而非實測難度,紀錄修正後計數可能變動。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Arquimedes,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

[Arquimedes — Open Database of Competition & Olympiad Mathematics]

Arquimedes: Math Problem Database

[Listed on mcpservers.org] [Glama score] [CI] [Release] [Code license: MIT]

A structured, deduplicated database of competition and benchmark mathematics: 1,038,963 problems across 9 datasets, each with a normalized LaTeX statement, calibrated Mohs difficulty (1.0 to 10.0), answer metadata, and solutions in a uniform JSON schema (v2).

  • 1,038,963 problems with full statements and 99.98% domain categorization
  • 797,671 written solutions: proof-sketch (797,631), strategy (22), answer-only (18)
  • 277,002 model-reasoning traces (deepmath dataset, JSONL shards)
  • 1,219 diagram images (SVG and JPG), content-addressed by hash
  • Unified Mohs difficulty (1.0–10.0) populated across all 1,038,963 records
  • Fast CLI & MCP Server: installable via uv (arquimedes CLI and arquimedes-mcp server)
  • Decontaminated Train/Eval Splits: one-command export (972,458 decontaminated train / 10,533 canonical eval)
  • Interactive Web Explorer: minimalistic browser catalog in site/ ready for GitHub Pages

Datasets

datasetcontentsproblemsnotable fields
numinaNuminaMath problems, the largest dataset840,924origin tags per problem, Mohs difficulty 1.0–9.5
deepmathDeepMath problems with R1 reasoning traces92,334three model-reasoning traces per problem, difficulty rating 1–10
bigmathBig-Math-RL-Verified problems with verified answers77,527Llama-8B solve-rate difficulty note, hierarchical domain tags
mathMATH benchmark problems12,401difficulty levels 1 to 5, train/test split tags
corecurated competition problems (AMC program, IMO, HMMT, and more)10,645concept tags, course/source difficulty ratings, progressive hints, solve time
omnimathOmni-MATH olympiad problems2,640difficulty rating from 1 to 9.5, contest origin tags
olympiadbenchOlympiadBench olympiad problems1,389diagram images (JPG), answer-type tags
cemcCEMC multiple-choice contests (Gauss, Pascal, Cayley, Fermat)792five answer choices per problem, reference URLs
aopscompetition problems with community-written solutions311collection, year, and problem code per record

Category Distribution

categoryproblemsshare
algebra386,69937.22%
geometry243,23123.41%
arithmetic183,93017.70%
number-theory129,48212.46%
probability38,8093.74%
combinatorics35,4933.42%
logic-foundations19,9351.92%
problem-solving-techniques1,2250.12%
uncategorized1590.02%

Per-dataset category breakdowns and field notes: docs/datasets.md.

Competition Coverage

The source.collection field labels records that come from a named competition or benchmark:

  • AMC program (core): AHSME 1,810 · AMC 8 1,025 · AMC 10A 625 · AMC 10B 625 · AMC 10 50 · AMC 12A 625 · AMC 12B 625 · AMC 12 50 · AIME I 405 · AIME II 405 · AIME 255 · USAMO 153 · USA TST 45 · USA TSTST 48
  • IMO (core): 156
  • HMMT (core): February 2,606 · November 1,072 · Invitational 65
  • CEMC (cemc): Gauss (Grade 7) 174 · Gauss (Grade 8) 166 · Pascal (Grade 9) 134 · Cayley (Grade 10) 150 · Fermat (Grade 11) 168
  • AoPS (aops): IMO Shortlist 102 · USAJMO 91 · Canadian MO 83 · APMO 28 · Putnam 7
  • OlympiadBench (olympiadbench): 1,389
  • MATH (math): 12,401

Records in omnimath, deepmath, numina, and bigmath carry origin and domain labels in source.tags.

CLI & MCP Server (uv)

arquimedes ships a zero-dependency Python package with both a fast CLI (arquimedes) and a Model Context Protocol server (arquimedes-mcp) backed by SQLite + FTS5 (with automatic JSONL shard fallback when SQLite is absent).

Install from PyPI

The package name is arquimedes-mcp. It does not contain the problems. Download them once from the Hugging Face dataset (about 1.3 GB of shards, then a lean index of about 0.8 GB):

bash
uvx arquimedes-mcp fetch

That copy lives in the user data directory (~/Library/Application Support/arquimedes on macOS), so the next uvx run finds it.

json
{  "mcpServers": {    "arquimedes": {      "command": "uvx",      "args": ["arquimedes-mcp"]    }  }}
bash
uvx --from arquimedes-mcp arquimedes statsuvx --from arquimedes-mcp arquimedes search "Cauchy-Schwarz" --min-mohs 7.0 -n 5

From a checkout

bash
# Build the local 1.7 GB SQLite + FTS5 database (~50 seconds)uv run arquimedes build# or a 0.8 GB index that reads solutions from the shardsuv run arquimedes build --lean
# Show corpus summaryuv run arquimedes stats
# Sub-20ms full-text search across 1,038,963 problemsuv run arquimedes search "Cauchy-Schwarz" --min-mohs 7.0 -n 5
# Sample calibrated problems by competition, category, or Mohs difficultyuv run arquimedes sample --competition IMO --category geometry -n 3
# Inspect a full problem record with choices, answer, hints, and proofuv run arquimedes show prob.ahsme-1950-p10

MCP server from a checkout

Add to your mcp.json or claude_desktop_config.json when the shards are already in a checkout:

json
{  "mcpServers": {    "arquimedes": {      "command": "uv",      "args": ["--directory", "/path/to/arquimedes", "run", "arquimedes-mcp"]    }  }}

Exposed MCP tools (all read-only; arguments in docs/usage.md):

  • arquimedes_get_stats: dataset, category, competition, and solution counts
  • arquimedes_search_problems: full-text search with category, dataset, competition, and min_mohs/max_mohs filters
  • arquimedes_sample_problems: uniform random draw among problems matching the filters, repeatable with a seed
  • arquimedes_get_problem: full LaTeX statement, choices, answer, hints, solutions, and optional deepmath reasoning traces by id

Stability (1.x)

From 1.0.0 on, these interfaces only change in backward-compatible ways until a 2.0.0 release:

  • the v2 problem record schema in docs/schema.md: fields are not removed or renamed, and their types do not change
  • the MCP tool names, their arguments, and the shape of their results
  • the arquimedes CLI commands and flags, and their --json output
  • the SQLite tables and columns built by arquimedes build
  • the ArquimedesEngine methods get_stats, search, sample, and get_problem

New fields, tools, flags, and data fixes can arrive in minor and patch releases. Corrections to individual records (a wrong answer, a mislabeled category) are data fixes, not breaking changes. Counts and difficulty.mohs values can change as records are corrected; mohs is a calibration, not a measured difficulty. Changes are listed in CHANGELOG.md.

Decontaminated Train / Eval Splits

For LLM post-training and RLVR (Reinforcement Learning with Verifiable Rewards), tools/export_splits.py (or uv run arquimedes splits) produces a decontaminated training set and a canonical evaluation benchmark:

bash
uv run arquimedes splits --out-dir splits/
  • Evaluation split (splits/eval.jsonl.gz — 10,533 problems): math test split (4,974), omnimath (2,640), olympiadbench (1,389), core 2023+ contests (931), aops (311), and cemc 2023+ contests (288).
  • Decontaminated training split (splits/train.jsonl.gz — 972,458 problems): filters out 46,057 unverifiable records and strips 9,915 near-duplicate benchmark leaks detected via 5-gram token shingle overlap across numina, bigmath, core, math, deepmath, and cemc.

Quickstart (Python & SQLite)

Read a problem directly from a shard with the Python standard library:

python
import gzip, json
with gzip.open("problems/core/shard-00000.jsonl.gz", "rt", encoding="utf-8") as fh:    prob = json.loads(fh.readline())
print(prob["title"], "Mohs:", prob["difficulty"]["mohs"])print(prob["statement"])               # raw LaTeX with \( \) delimitersprint(prob["answer"])                  # {'letter': 'd', 'value': '3+\\sqrt6'}print(prob["solutions"][0]["text"][:200])

Query SQLite + FTS5 directly:

sql
SELECT p.id, p.title, p.difficulty_mohs, p.answer_valueFROM problems_fts fJOIN problems p ON p.rowid = f.rowidWHERE problems_fts MATCH '"pigeonhole"'  AND p.difficulty_mohs BETWEEN 5.0 AND 8.5LIMIT 10;

Layout

problems/<dataset>/shard-*.jsonl.gz   gzipped JSON Lines, one v2 problem record per lineimages/<hash>.svg, images/<hash>.jpg  1,219 content-addressed diagram filesdata/index.json                       summary index (counts by dataset, category, competition)data/problems.sqlite                  queryable SQLite + FTS5 database (build locally)arquimedes/                           uv-installable CLI and MCP server packagesite/                                 minimalistic interactive web explorer (GitHub Pages)tools/                                converters, shard normalizer, split exporter, DB builderdocs/                                 schema, usage, and dataset documentation

Documentation

  • docs/schema.md: full v2 record reference, shard format, SQLite + FTS5 schema, LaTeX convention, image store
  • docs/usage.md: CLI, MCP server, SQL & FTS5 queries, reasoning traces, decontaminated splits
  • docs/datasets.md: per-dataset contents, field notes, category distributions, deduplication rules, and upstream licenses

License

Code in arquimedes/, tools/, and site/ is MIT. The Mohs calibration, the category labels assigned by this project, and data/index.json are CC BY 4.0. Problem statements, solutions, answers, and diagrams are not relicensed; the upstream terms are in docs/datasets.md. A Hugging Face copy keeps every record and stamps the holder's notice on it: richard01172000/arquimedes. See LICENSE.

來源:README.md,提交 d142f84

工具

4

arquimedes_get_stats

Database Statistics

Summarize what the Arquimedes math problem database holds: the problems this server can search (it is running without its SQLite index, so that is only part of the full corpus), with problem counts by dataset, category, and competition, and written-solution counts by kind. Call it first to learn which category, dataset, and competition values exist before filtering arquimedes_search_problems or arquimedes_sample_problems. Takes no arguments.

無需輸入參數。

arquimedes_search_problems

Search Math Problems

Find problems by keyword in the competition and olympiad math problems this server can scan (it is running without its SQLite index; call arquimedes_get_stats for exact coverage). Full-text search returns problems whose statement or title contains all the query words: a topic, a theorem name such as 'Cauchy-Schwarz', or a LaTeX fragment. Optional filters narrow by category, dataset, competition, and Mohs difficulty (1.0 to 10.0). Results are summaries (id, title, competition, year, difficulty, answer, statement) without solutions; pass an id to arquimedes_get_problem for solutions and hints. To get random problems instead of keyword matches, use arquimedes_sample_problems.

輸入參數limitquery必填datasetcategorymax_mohsmin_mohscompetition

arquimedes_sample_problems

Sample Math Problems

Draw random problems from the competition and olympiad math problems this server can scan (it is running without its SQLite index; call arquimedes_get_stats for exact coverage), uniformly among those matching optional filters: category, dataset, competition, contest year, Mohs difficulty range (1.0 to 10.0), multiple-choice only, or with a diagram. Use it to build practice sets, mock contests, or evaluation samples; pass the same seed to repeat a draw. Results are summaries without solutions; pass an id to arquimedes_get_problem for solutions. To find problems about a specific topic or keyword, use arquimedes_search_problems.

輸入參數seedyearlimitdatasetcategorymax_mohsmin_mohscompetitionhas_choiceshas_diagram

arquimedes_get_problem

Get Math Problem by ID

Fetch one problem by its id, as returned by arquimedes_search_problems or arquimedes_sample_problems (e.g. 'prob.ahsme-1950-p10', 'prob.numina-000369'). Returns the full record: LaTeX statement, answer choices, answer, written solutions with progressive hints, difficulty, source, and diagram references. Ids cannot be guessed; an unknown id returns an error, so discover ids with search or sample first.

輸入參數problem_id必填include_tracesinclude_solutions

版本歷史

1
  1. v1.1.0最新Oct 21, 2026

評分

已滿足適用檢查項的 80%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

    請在儲存庫或註冊中心條目中宣告授權條款。