mcpField
A
Algorithm Finder

Algorithm Finder

リモート
pipeworx.io開発ツール06 日前に更新
リポジトリ公式サイト

Algorithm Finder について

Algorithm Finderは、計算問題に適したアルゴリズムを選ぶ開発者向けのMCPサーバーです。出典付きの教科書情報、制約に基づく比較、実装参照、最近の論文をまとめ、リクエスト処理中にモデルは実行しません。

主な機能

  1. 01問題の説明から手法を検索
  2. 02制約に照らして候補を比較
  3. 03出典付きの計算量を表示
  4. 04手法の参照情報と実装を取得
  5. 05最近の研究論文を提示

活用シーン

  1. 01グラフの制約に応じた最短経路手法の選択
  2. 02スケジューリングの最適化定式化を比較
  3. 03検索手法に関する最近の研究を確認

MCP 対応

アルゴリズムの検索、比較、詳細参照のツールと実装情報を提供します。Pipeworxゲートウェイ経由、またはローカルのstdio MCPサーバーとして利用できます。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://gateway.pipeworx.io/algorithm-finder/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

45
パラメーター型必須説明
qstringいいえquestion の別名。
askstringいいえquestion の別名。
textstringいいえquestion の別名。
inputstringいいえquestion の別名。
packsarrayいいえ任意。ルーティング対象をこれらのパックスラッグに限定します(例:["sec-form-d","sec-13f"])。その場合、ルーターは該当パック内のツールのみを選択します。省略すると、デフォルトの全カタログへのルーティングになります。スラッグは list_packs / search_packs / https://pipeworx.io/directory から取得できます。リストにない、または不明なスラッグは無視され、_meta.pack_scope.ignored に記載されます。該当するスラッグが 1 つもない場合は、カタログ全体にルーティングし、_meta.pack_scope.full_catalog:true を設定します(空の回答にはなりません)。
querystringいいえquestion の別名。
promptstringいいえquestion の別名。
messagestringいいえquestion の別名。
questionstringはい自然言語での質問またはリクエスト。query、q、prompt、text、input、ask、message をエイリアスとして使用できます。

詳細

algorithm-finder

計算問題を説明すると、適したアルゴリズム、それが適している理由、出典ページに記載された計算量、および実装の入手先が返ってきます。

Pipeworx の一部です。AI エージェントを 1872 以上のライブデータソースにつなぐ MCP ゲートウェイです。これは独立した非公式の連携であり、上流プロバイダーとの提携、承認、または公開によるものではありません。

Pipeworx の開発元である Mojibake によるものです。

「全点対最短経路」と尋ねても、推測はしません。教科書に載っている答え(Floyd-Warshall、Johnson、両者を使い分ける前提条件、CLRS の正確なページへの引用)を調べ、arXiv と Hugging Face Papers の過去 5 年分を確認して、さらに新しい情報があれば知らせ、まだわからないことも伝えます。リクエスト処理経路ではモデルを実行しません。すべての事実は引用またはライブソースに基づいており、推測ではありません。

実際に返された 3 つの例

以下は、ライブパックに対する実際の呼び出しを短くまとめたものです。以下の内容に創作はありません。

1. 「全点対最短経路を解くのは何ですか?」
algorithm_find({ problem: "all-pairs shortest paths", want: "both" })

両者を正しく分けるのは、実際にどちらを選ぶかを決定する制約です。

{
  "name": "Floyd-Warshall algorithm",
  "preconditions": ["Negative edge weights are allowed, but there must be no negative-weight cycle."],
  "guarantee": "exact",
  "bounds": [
    { "quantity": "time", "bound": "Theta(V^3)", "kind": "worst_case",
      "cite": "CLRS4 ch. 23.2 p. pdf:851" }
  ],
  "when_to_use": "All-pairs shortest paths on dense graphs, or whenever its simple triple-loop implementation (no priority queue needed) is worth the cubic cost.",
  "when_not": "On sparse graphs, Johnson's algorithm has a better asymptotic bound.",
  "alternatives": ["Johnson's algorithm", "Dijkstra's algorithm", "Bellman-Ford algorithm"]
},
{
  "name": "Johnson's algorithm",
  "preconditions": ["No negative-weight cycle (checked by the initial Bellman-Ford run)."],
  "guarantee": "exact",
  "bounds": [
    { "quantity": "time", "bound": "O(V^2 lg V + VE)", "kind": "worst_case",
      "cite": "CLRS4 ch. 23.3 p. pdf:857" }
  ],
  "when_to_use": "All-pairs shortest paths on sparse graphs with some negative edge weights -- asymptotically faster there than Floyd-Warshall's Theta(V^3)."
}

質問する前に、答えを変える未解決の疑問も挙げます。

"open_questions": [
  "Can any edge weight be negative? (Dijkstra requires non-negative weights; Bellman-Ford does not.)",
  "One source, or every pair of vertices?",
  "Are capacities integral? Is there a cost per unit of flow to minimise as well?"
]

……さらに、「新しい」側の最近の論文を、発表日付きで 5 件提示します。その中には Warm-Starting All-Pairs Shortest Paths with Predictions(arXiv、2026 年)と Fast 2-Approximate All-Pairs Shortest Paths(arXiv、2023 年)が含まれます。

2. 「近似最近傍探索で新しい動きはありますか?」
algorithm_find({ problem: "approximate nearest neighbor search", want: "novel" })

これは純粋な研究情報の提示で、教科書の項目は含まれません。論文を列挙するだけでなく、複数の論文に登場する手法名をグループ化します。そのため、自分で見つけなければならない単なるタイトルではなく、繰り返し登場する名前が実質的な答えとして示されます。

"novel_methods": [
  {
    "name": "HNSW",
    "mentions": 8,
    "first_seen": 2022,
    "last_seen": 2026,
    "example_paper": {
      "title": "From HNSW to Information-Theoretic Binarization: Rethinking the Architecture of Scalable Vector Search",
      "date": "2025-12-16T23:24:37.000Z",
      "url": "https://huggingface.co/papers/2601.11557"
    }
  },
  { "name": "NSG", "mentions": 6, "first_seen": 2017, "last_seen": 2025 },
  { "name": "SPANN", "mentions": 2, "first_seen": 2021, "last_seen": 2025 }
]

HNSW は研究情報から単独で浮かび上がります。1 本の論文の見解ではなく、確かな傾向だと判断できる件数と期間も示されます。

3. 「公平なシフトスケジュールを作るには、CP-SAT、MIP、それともフロー定式化ですか?」
algorithm_compare({
  problem: "assign people to shifts with availability and skills, minimum staffing per shift, and distribute undesirable shifts fairly",
  names: ["constraint-programming", "mixed-integer-programming", "min-cost-flow"],
  constraints: { objective: "fairness", exact: true }
})

提示した制約には、各手法について判定が返されます。また、指定しなかった制約についても、暗黙に「問題なし」とせず、仮定として示されます。

{
  "verdict": "conditional",
  "winner": "Constraint programming (CP-SAT)",
  "summary": "Constraint programming (CP-SAT), IF continuous_variables is false.",
  "candidates": [
    { "name": "Constraint programming (CP-SAT)",
      "constraints": { "objective": { "status": "satisfied", "given": "fairness" },
                       "exact":     { "status": "satisfied", "given": true } },
      "assumes": [{ "constraint": "continuous_variables", "requires": [false],
        "why": "CP-SAT requires every decision variable to be declared as an integer; it has no native continuous-variable type the way an LP/MIP solver does." }] },
    { "name": "Mixed-integer programming",
      "constraints": { "objective": { "status": "unknown", "given": "fairness" } },
      "assumes": [{ "constraint": "linear", "requires": [true] }] },
    { "name": "Minimum-cost flow (successive shortest paths)",
      "constraints": { "objective": { "status": "unknown", "given": "fairness" } },
      "assumes": [{ "constraint": "integer_capacities", "requires": [true] }],
      "bounds": [{ "bound": "O(F*m*n)", "kind": "worst_case",
                   "cite": "Minimum-cost flow, Complexity <https://cp-algorithms.com/graph/min_cost_flow.html>" }] }
  ],
  "open_questions": [
    "How should fairness be measured: equal counts of undesirable assignments, minimise the worst-off person, or minimise variance? Each is a different objective.",
    "Do you need a provably optimal schedule, or is a good feasible one enough? (CP-SAT/MIP can prove optimality; heuristics only find feasible answers.)",
    "Are any rules hard (must hold) versus soft (preferences with a penalty)?"
  ]
}

公平性の面でフロー定式化がうまくいかないとは主張しません。わからないと伝え、結論を出すために必要な質問をします。ルールにないキー(たとえば gpu_available)は、満たされているとひそかに扱われるのではなく、対応しているキーの一覧とともに、名前を挙げて拒否されます。

インストール

ホスト版(セットアップ不要)
{
  "mcpServers": {
    "algorithm-finder": {
      "url": "https://gateway.pipeworx.io/algorithm-finder/mcp"
    }
  }
}

このエンドポイントには、共有 Pipeworx メタツール(ask_pipeworx、discover_tools など)も含まれているため、ツールを直接呼び出す代わりに、平易な英語で質問できます。

ask_pipeworx({ question: "what algorithm solves the assignment problem?" })
ローカル版(アカウント不要、当社のネットワークへの依存なし)
{
  "mcpServers": {
    "algorithm-finder": {
      "command": "npx",
      "args": ["-y", "@pipeworx/mcp-algorithm-finder"]
    }
  }
}

公開後に利用できます。同じソース、同じ 4 つのツールを使えるほか、ゲートウェイへの往復も共有メタツールもありません。

信頼できる理由

  • すべての事実は独自の言葉で記述し、出典ページを示しています。 厳選したメソッドの表(data/methods.json)には、各メソッドが解決する問題、前提条件、計算量の上限(最悪・平均・償却のいずれかを示し、ひとつの数値にまとめることはありません)、使用する場面と使用しない場面、そしてその事実を参照した書籍名と章が記載されています。対象書籍は、CLRS 第4版、Erciyes 著 Guide to Graph Algorithms、Christian & Griffiths 著 Algorithms to Live By、Bhargava 著 Grokking Algorithms です。これらの書籍にある文章、図、コードは一切提供せず、そこから確認した事実のみを独自の表現で記述しています。
  • 出典のない計算量の上限は拒否し、取り込みません。 この表を構築するビルドスクリプトは、ページの引用が付いていない定性的でない計算量の上限を拒否します。ページを示せない上限は、数値に見せかけず、qualitative として扱われます。
  • 実装には、その実態に合ったラベルを付けています。 すべてのコードサンプルに grade: "educational" が付いています。これは Rosetta Code の参考実装であり、本番環境でのテスト済みパッケージではありません。現時点では application グレードはなく、固定バージョンの依存関係でテストされたものはありません。
  • ライセンスは、この README だけでなくデータにも付与されています。 NIST の Dictionary of Algorithms and Data Structures は米国政府の著作物であり、パブリックドメインです(17 U.S.C. § 105)。Rosetta Code と cp-algorithms は CC BY-SA 4.0 で提供されています。これらのソースからのすべての応答には、帰属表示と継承条件がインラインで付いているため、ライセンスファイルに埋もれることなく、データを使う時点で条件を確認できます。

貢献

方法を追加するか、テストケースを追加するかの2つの方法があります。方法を追加する場合は data/methods.json に記述し、追加する計算量の上限ごとに、実際の出典(書籍、章、ページ、または論文や公式ライブラリのドキュメント)が必要です。計算量を示す出典のない項目は、ビルド時に拒否されます。テストケースは data/harness.json に記述します。問題と、必要に応じて候補や制約、そして期待される答えを含めます。現在失敗するケースは、次に修正すべき箇所を示すものなので、特に役立ちます。いずれの場合も出典を示してください。出典がなければ、マージできません。

参考資料

ツール

  • algorithm_find(problem, want?, since_year?, limit?) — 問題を言葉で説明し、対応する教科書的手法(それぞれが解決する問題、前提条件、計算量の種類(最悪時/期待値/償却)、使用すべき場合と避けるべき場合、代替手法、引用文献)、手法を選ぶ判断材料となる未解決の問い、Skiena Algorithm Repository の問題ページ、Hugging Face Papers と arXiv の最近の論文を取得します。want は common、novel、both(デフォルト)のいずれかです。省略可能な constraints(algorithm_compare と同じキー)を指定すると、条件に違反する教科書的手法の結果が末尾に移動し、それぞれに条件ごとの fit が追加されます。
  • algorithm_compare(names? | problem?, constraints) — 対象インスタンスについて事実を指定すると({"negative_weights": true, "query": "single_source"}、{"stable": true}、{"exact": false, "dimensions": "high"})、各候補について、精選された表に基づいて条件ごとに 満たす/違反する/不明 が返されます。verdict(recommended、conditional(最適な候補について、表に情報がない条件があり、その条件名も示されます)、none_compatible、no_constraints)、最適な候補、各候補の計算量と使用を避けるべき場合の助言、さらに指定されていないため候補を除外または採用しうる条件を示す decisive_questions が返されます。指定されていない手法の制約(DAG の最短経路では acyclic: true が必要など)は assumes に記載され、判定は conditional になります。必要な前提条件が少ない手法が上位になるため、指定されていない事実を根拠に特殊ケースの手法が最適になることはありません。キーと値は data/constraints.json で固定されています。不明なキーや値は黙って無視されず、constraints_rejected に返されます。
  • algorithm_lookup(name) — 指定した手法を詳しく調べます。精選された情報、NIST DADS の辞書項目(定義、別名、関連項目、計算量に関する注記、実装へのリンク)、cp-algorithms の記事、関連する問題ページ、Rosetta Code に解答がある言語を返します。短縮名や別名(Dijkstra、KMP、union-find)も使用できます。
  • algorithm_implementations(name, language?) — Rosetta Code に解答がある言語を返します。また、language を指定すると、その言語のソースコード(CC BY-SA 4.0、educational と表示)に加え、DADS の項目、cp-algorithms の記事、Algorithm Repository の実装リンクからの参照リンクも返します。

すべての応答に data_as_of(インデックス内で最も新しい DADS 項目の更新日)、主要なソースの license ブロック、項目ごとのソース URL が含まれます。該当項目がない場合は、found: false と reason(no_match、language_not_present)、試す内容を示す hint が返されます。通信または解析に失敗した場合は、空のリストではなくエラーが発生します。

認証

キーは不要です。

データソース
  • https://xlinux.nist.gov/dads/ — NIST の「アルゴリズムとデータ構造の辞典」(Paul E. Black 編)。約 1,120 件の項目があります。米国政府の著作物であり、著作権の対象ではありません(17 U.S.C. § 105)。全項目は生成されたインデックス(src/af-index-data.ts。scripts/bake-algorithm-finder-index.mjs で再構築)に含まれています。
  • data/methods.json — このパック用に作成した厳選テーブルです。各手法について、解決する問題、前提条件、計算量(種類と条件を含む)、使用する場合と使用しない場合、代替手法、日常的な言葉での問題の表現、引用文献、tier(core/common/specialized)、family_rank(制約が満たされる場合に、そのファミリー内で最初に選ぶ手法)、constraints(手法が受け付ける各語彙キーの値とその理由)を記載しています。事実は、Cormen、Leiserson、Rivest、Stein 著『Introduction to Algorithms』第 4 版(CLRS4)、Erciyes 著『Guide to Graph Algorithms』第 2 版(Erciyes2026)、Bhargava 著『Grokking Algorithms』(Grokking2024)、Christian と Griffiths 著『Algorithms to Live By』(ATLB)に基づいて確認しました。これらの書籍で扱われていない手法(HNSW、MinHash、Bloom フィルター、一貫性ハッシュ、A*、CP-SAT など)については、元の論文と公式ライブラリのドキュメントを参照し、各引用には参照した URL を記載しています。すべて独自の言葉で記述しており、書籍や論文の本文は提供していません。焼き込みスクリプトは、ページの引用がない定性的でない計算量を拒否します。
  • https://www.algorist.com/ — Steven Skiena の Stony Brook Algorithm Repository です。インデックスに含まれるのは、問題名、カテゴリ、URL のみです。入力や問題文、実装へのリンクを取得するため、呼び出しごとに問題ページを取得し、出典を明記します。
  • https://cp-algorithms.com/ — 独自の検索インデックスにあるタイトル、掲載場所、タグです。記事の冒頭の段落は呼び出しごとに取得します。CC BY-SA 4.0。応答で出典を明記します。
  • https://rosettacode.org/w/api.php — MediaWiki API です。タスクページは list=search で解決します。言語別の解答はレベル 2 のセクション(action=parse&prop=sections)で、セクションの wikitext から <syntaxhighlight lang="…"> 内のコードを取得します。CC BY-SA 4.0。出典を明記します。注:タスク名に対して list=categorymembers を使うと空のリストが返されます。解答はカテゴリメンバーではなく、タスクページのセクションに含まれています。
  • https://huggingface.co/api/papers/search — Papers with Code の後継である Hugging Face Papers(同 API は現在、ここにリダイレクトされます)。手法名を抽出できるよう、要約を読み込みます。
  • https://export.arxiv.org/api/query — arXiv Atom API。cs.DS/cs.CC/cs.DM/cs.LG/cs.IR/cs.NE/cs.DB に限定し、関連度順に並べます。どちらの研究ソースも直接呼び出すため、このパックは他のパックに依存しません。
  • data/constraints.json — 制約語彙です。data/harness.json — src/compare.test.ts が実行する algorithm_compare の受け入れケースです。このテストではテーブル内の事実も破損させ、ハーネスが失敗することを確認します。
語彙の既知の不足

制約語彙ではまだ表現できない事実が報告されており、該当する手法はそれらについて unknown を返します。グラフの連結性(Hierholzer)、クラスタ数が既知かどうか(DBSCAN と k-means)、障害モデル(Raft/Paxos のクラッシュ障害と Byzantine 障害)、範囲集約の種類(Fenwick 木、セグメント木、スパーステーブル)、座標か距離のみか(kd-tree と vp-tree)、分割可能なアイテム(分数ナップサックと 0-1 ナップサック)、行列問題の適切な設定(LU、最小二乗法)、事前分布のファミリー(ベイズ予測ルール)、割引率(Gittins 指数)、プレイヤー数(ゲーム理論)などです。data/constraints.json にキーを追加し、注釈を付け、ハーネスケースを追加してください。

知っておくべき注意点
  • DADS では、terms.html にあるすべての別名の下に用語が掲載されています(約1,120件の項目に対して1,309個の名称)。別名は「Also known as」だけでなく、そのインデックスに由来します。
  • DADS の計算量はフィールドではなく、自由記述の Note に記載されています。ベイク処理では O(…) / Θ(…) の式を抽出して bounds_mentioned に格納しますが、変種や条件は含まれません。そうした精度を保っているのは、手作業で整備された表です。
  • 手作業で整備された表のメソッドの計算量表記には、変種が示されています(二分ヒープとフィボナッチヒープ、期待値と最悪ケースなど)。これらを一つにまとめないでください。
  • Rosetta の言語セクション名は、ウィキで使われている綴りです(C++、C#、Icon and Unicon)。language 引数は、大文字と小文字を区別せず、名前全体または先頭部分に一致します。

クイックスタート

MCP クライアント(Claude Desktop、Cursor、Windsurf など)に追加します。

{
  "mcpServers": {
    "algorithm-finder": {
      "url": "https://gateway.pipeworx.io/algorithm-finder/mcp"
    }
  }
}
このエンドポイントが実際に提供するもの

https://gateway.pipeworx.io/algorithm-finder/mcp の tools/list は、上記の表にあるツールに加えて、Pipeworx 共通のメタツール(ask_pipeworx、discover_tools、search_within、remember/recall など、ゲートウェイ全体で使えるツール群)も返します。そのため、表示されるツール数はこの表より多くなります。現在、単一パックのエンドポイントには、パック固有のツールとともに約30個の共通ツールが表示されます。接続時の initialize レスポンスに正確な対象範囲が記載されており、その時点での正式な情報となります。

これは意図的な設計であり、偶然に多重化されているわけではありません。メタツールを使えば、このパックでは扱えない質問にも対応できます。ask_pipeworx を通じてカタログ全体を検索できるため、MCP サーバーをもう1つ追加する必要はありません。現在、メタツールなしでパックのエンドポイントを接続する方法はありません。追加のスキーマがルーティングの利便性を上回るコンテキストを消費する場合は、複数のパックエンドポイントではなく、フルゲートウェイに一度だけ接続してください。

このパックのツールだけでなく、各パックのツールをすべて直接一覧表示するには、Pipeworx のフルゲートウェイに接続してください。

{
  "mcpServers": {
    "pipeworx": {
      "url": "https://gateway.pipeworx.io/mcp"
    }
  }
}

どちらの URL も同じゲートウェイと同じ1,872以上のデータソースにアクセスします。違いは、どのパックのツールが直接一覧表示されるかだけです。どちらから接続しても、ask_pipeworx を使ってすべてのツールにアクセスできます。

MCP クライアントがない場合:HTTP 経由で呼び出す

curl -X POST https://gateway.pipeworx.io/v1/tools/algorithm_find \
  -H 'Content-Type: application/json' \
  -d '{"problem":"all-pairs shortest paths","want":"both"}'

最初の呼び出しにアカウントは必要ありません。ツールの詳細を確認するには、GET https://gateway.pipeworx.io/v1/tools/algorithm_find を実行します。ツールを検索するには、{"query":"..."} を指定して POST https://gateway.pipeworx.io/v1/tools/search_packs を実行します。

スタンドアロン(ゲートウェイアカウント不要)

このパッケージは、ローカルの stdio MCP サーバーとしても実行できます。Pipeworx アカウントも、ゲートウェイへの往復通信も必要ありません。

{
  "mcpServers": {
    "algorithm-finder": {
      "command": "npx",
      "args": ["-y", "@pipeworx/mcp-algorithm-finder"]
    }
  }
}

または、直接実行して起動することを確認できます。

npx -y @pipeworx/mcp-algorithm-finder

stdin/stdout 経由で MCP を使用し、initialize/tools/list/tools/call に応答します。対象はこのパックのツールのみで、上記のゲートウェイ接続で追加される共通メタツールはありません。同じソース、同じツールを使えますが、ask_pipeworx によるルーティングはありません。

ask_pipeworx と組み合わせて使う

ツールを直接呼び出す代わりに、自然な英語で質問できます。この方法は、上記のパックエンドポイントとフルゲートウェイのどちらでも使えます。

ask_pipeworx({ question: "your question about Algorithm Finder data" })

ゲートウェイが適切なツールを選び、引数を自動的に設定します。

詳細

ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。