GitHub
server ทางการของ GitHub ให้ AI อ่านและจัดการโค้ด issue และ pull request ในบัญชีของคุณได้ ใช้ผ่านคลาวด์ของ GitHub หรือรันในเครื่องด้วย Docker ก็ได้
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Optimization middleware for AI agents: JSON problem in, verified and ranked solutions out.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
ANNEALBRIDGE_ALLOW_REMOTEต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"annealbridge": {
"command": "uvx",
"args": [
"annealbridge",
"mcp"
],
"env": {
"ANNEALBRIDGE_ALLOW_REMOTE": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add annealbridge --env ANNEALBRIDGE_ALLOW_REMOTE='ใส่ค่าของคุณ' -- uvx annealbridge mcpเติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"annealbridge": {
"command": "uvx",
"args": [
"annealbridge",
"mcp"
],
"env": {
"ANNEALBRIDGE_ALLOW_REMOTE": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"annealbridge": {
"type": "stdio",
"command": "uvx",
"args": [
"annealbridge",
"mcp"
],
"env": {
"ANNEALBRIDGE_ALLOW_REMOTE": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
ANNEALBRIDGE_ALLOW_REMOTE envค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 9 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub TheTsungYing ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.4.0) เข้า registry 41 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Python (uv) ในเครื่องด้วย
ในหมวดเดียวกันมี GitHub, Desktop Commander, Cloudflare MCP
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:↓ ดาวน์โหลดต่อสัปดาห์i★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
server ทางการของ GitHub ให้ AI อ่านและจัดการโค้ด issue และ pull request ในบัญชีของคุณได้ ใช้ผ่านคลาวด์ของ GitHub หรือรันในเครื่องด้วย Docker ก็ได้
MCP server for terminal commands, file operations, and process management
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
English | 繁體中文
Combinatorial optimization middleware for AI agents. An agent describes *what* to optimize as structured JSON; AnnealBridge decides *how* to encode and solve it, checks every answer against the original problem, and returns ranked, verified solutions over MCP, a CLI, or plain Python.
flowchart LR
U[Natural language] --> A[AI agent] A -->|OptimizationProblem JSON variables · objective · constraints| B subgraph B[AnnealBridge] direction LR V[validate] --> C[compile BQM / CQM] --> S[solve local or remote] --> R[re-validate against the original problem] --> K[rank] end B -->|SolveResult ranked, verified solutions| A A --> N[Natural-language answer]
pip install annealbridge
A 0/1 knapsack: four items, capacity 10, maximize value. No file needed.
from annealbridge.models import OptimizationProblem
from annealbridge.orchestration import OptimizationService
problem = OptimizationProblem.model_validate({ "version": "1.0", "name": "knapsack", "variables": [{"name": n, "type": "binary"} for n in ["a", "b", "c", "d"]], "objective": {"direction": "maximize", "linear_terms": [ {"variable": "a", "coefficient": 10}, {"variable": "b", "coefficient": 8}, {"variable": "c", "coefficient": 7}, {"variable": "d", "coefficient": 6}]}, "constraints": [{"id": "capacity", "type": "hard", "operator": "<=", "rhs": 10, "terms": [ {"variable": "a", "coefficient": 6}, {"variable": "b", "coefficient": 5}, {"variable": "c", "coefficient": 4}, {"variable": "d", "coefficient": 3}]}], })
result = OptimizationService().solve(problem) print(result.status) # success print(result.solutions[0].variables) # {'a': 1, 'b': 0, 'c': 1, 'd': 0} print(result.solutions[0].objective_value) # 17.0
Domain failures come back as results, never as exceptions: result.status is one of success, infeasible, invalid_problem, resource_limit_exceeded, backend_unavailable, configuration_error or solver_error. See docs/output-format.md.
Optional extras:
pip install "annealbridge[mcp]" # + MCP server (annealbridge-mcp)
pip install "annealbridge[dwave]" # + D-Wave cloud backends pip install "annealbridge[all]" # everything pip install "annealbridge[gpu]" # + PyTorch, for simulated_bifurcation on CUDA
[gpu] is deliberately not part of [all]: PyTorch is a large download, and on Windows the wheel PyPI serves is the CPU-only build, so a CUDA run needs torch installed from PyTorch's own index first — see docs/backends.md.
With uv installed, add the server to claude_desktop_config.json (or your host's equivalent) and restart the host; where Claude Desktop, Claude Code and Codex keep that configuration is listed in docs/mcp.md. The first run fetches the package into uvx's own cached environment; that download — numpy, dimod, dwave-samplers and the rest — can take tens of seconds, long enough for a host's start-up timeout to show the server as disconnected. Warm the cache once in a terminal first:
uvx --from "annealbridge[mcp]" annealbridge-mcp --version
It resolves the environment and prints the version; from then on the host starts from that cache.
{
"mcpServers": { "annealbridge": { "command": "uvx", "args": ["--from", "annealbridge[mcp]", "annealbridge-mcp"] } } }
Claude Code registers it in one line:
claude mcp add annealbridge -- uvx --from "annealbridge[mcp]" annealbridge-mcp
Optimizing is then an ordinary chat:
You: I can carry 10 kg. Item A is worth 10 and weighs 6, B is worth 8
and weighs 5, C is worth 7 and weighs 4, D is worth 6 and weighs 3. Which
ones should I take?
Behind the reply, the agent writes the request as problem JSON and calls solve_optimization. Every solution comes back re-validated against the original constraints, with optimality_proven: true on the exhaustive exact backend; a document the server rejects comes back as invalid_problem with every error and a fix for each, which the agent applies before sending it again. Before solving on a remote backend, or on a large problem, it calls validate_optimization_problem first, so a mistake costs nothing; it calls get_optimization_capabilities when it needs the backend list or the full schema.
Agent: Take A and C: value 17 at exactly 10 kg. The runners-up are A
and D (16, at 9 kg) and B and C (15, at 9 kg). This is the proven optimum.
The wording is the agent's; the numbers are the tool result. Another tool, recommend_backend, ranks the backends for a problem and is advisory only; when you did not name a backend and more than one local backend fits, the server instructions tell the agent to show the top entries and ask which to run rather than to decide for you.
If your host lists prompts in its input menu, three of them — pick_subset, assign and schedule_shifts — walk the agent from your own sentence to a problem document of that everyday shape, which it then solves. The server also serves resources: the seven example documents under annealbridge://examples/ and the full problem schema at annealbridge://schema, so an agent can read a complete example or the schema itself instead of guessing.
What it is not for. AnnealBridge does not handle continuous (real-valued) variables, non-linear objectives or non-linear constraints. Only exact proves that an answer is optimal or that no feasible one exists, and by default it takes at most 24 compiled variables (slack bits included); the other local backends (simulated_annealing, tabu, simulated_bifurcation) are heuristics whose best answer may not be the optimum. See the Backends table below and docs/limitations.md.
Any stdio-capable MCP host works the same way, a streamable-http transport exists, and pipx or a pip-installed server behind an absolute path work in place of uvx. uvx reuses the environment it resolved on its first run, so a new release reaches an existing install only after uv cache clean annealbridge and a host restart; see docs/mcp.md.
Save the problem JSON below as knapsack.json, then:
annealbridge solve knapsack.json
Problem: knapsack
Backend: exact Status: success Attempts: 1 Elapsed: 2.7 ms
Best solution (rank 1) objective (maximize): 17 soft violation score: 0 item_a = 1 item_b = 0 item_c = 1 item_d = 0
Hard constraints: 1 / 1 satisfied Soft constraints: 0 violations Optimality proven: yes
Elapsed is the service's own wall clock and varies from run to run. Add --json for the full SolveResult, --backend simulated_annealing to override the backend, or try validate, recommend, capabilities, example and export-schema. See docs/cli.md.
The document behind the MCP and CLI examples above, the reduced form of examples/knapsack.json:
{
"version": "1.0", "name": "knapsack", "variables": [ {"name": "item_a", "type": "binary"}, {"name": "item_b", "type": "binary"}, {"name": "item_c", "type": "binary"}, {"name": "item_d", "type": "binary"} ], "objective": { "direction": "maximize", "linear_terms": [ {"variable": "item_a", "coefficient": 10}, {"variable": "item_b", "coefficient": 8}, {"variable": "item_c", "coefficient": 7}, {"variable": "item_d", "coefficient": 6} ] }, "constraints": [ { "id": "capacity", "type": "hard", "terms": [ {"variable": "item_a", "coefficient": 6}, {"variable": "item_b", "coefficient": 5}, {"variable": "item_c", "coefficient": 4}, {"variable": "item_d", "coefficient": 3} ], "operator": "<=", "rhs": 10 } ], "solver": {"backend": "exact"} }
Integer variables ("type": "integer" with bounds, "version": "1.1"), cardinality constraints — exactly, at most or at least *k* of a set of binary variables, a hard at-most-one compiling without slack variables ("cardinality_constraints", "version": "1.2") — templates that write a large, regular model once over index sets and let the server expand it ("index_sets", "parameters", "variable_families" and the *_templates lists, "version": "1.3"), quadratic objective terms, soft constraints with weights and per-backend solver preferences are described in docs/problem-format.md. annealbridge export-schema prints the JSON Schema an agent can use for structured output.
Seven ready-to-run examples live in the repository — knapsack, assignment, TSP, integer knapsack, shift scheduling, exam timetabling (cardinality constraints) and TSP with templates (the TSP written once over index sets; annealbridge expand prints what it expands to). The installed package carries the same files: annealbridge example lists them and annealbridge example knapsack > knapsack.json saves one (or pipe it straight in with annealbridge example knapsack | annealbridge solve -); the MCP server serves the same seven documents as the resources under annealbridge://examples/.
The agent produces an OptimizationProblem: binary or bounded-integer variables, a linear or quadratic objective, and hard or soft linear and cardinality constraints. Nothing else. AnnealBridge then, deterministically:
An opt-in `solver.postp
ตัดมาแค่ช่วงต้น อ่านต่อใน repo