Lacuna Research
ทางการแผนที่งานวิจัย ML แบบอ่านอย่างเดียวสำหรับเอเจนต์เขียนโค้ด: บทความวิจัย แนวทางการวิจัย ผู้เขียน แหล่งเผยแพร่ สถาบัน และสมมติฐาน โดยแต่ละรายการเชื่อมโยงไปยังแหล่งที่มา โฮสต์ไว้และไม่ต้องยืนยันตัวตน อีกทั้งยังมีแพ็กเกจ PyPI
คุณทำอะไรได้บ้างด้วย Lacuna Research MCP?
- เชื่อมโยงโค้ดกับบทความวิจัย — ถามว่า repository บน GitHub ใช้ทำอะไรตามบทความวิจัยฉบับใด แล้วติดตามความสัมพันธ์
official_code_forที่บันทึกไว้ไปยังบทความและแหล่งข้อมูล - ค้นหาวรรณกรรมวิชาการ — ค้นหาบทความด้วย
search_lacunaจากนั้นเปิดผลลัพธ์ด้วยget_paperเพื่อดูบริบทโดยสรุป ทั้งบทสรุป ผู้เขียน และรูปภาพประกอบ - ค้นหาแหล่งข้อมูลที่เชื่อมโยง — ค้นหา codebase, ชุดข้อมูล, โมเดล หรือเดโมด้วย
search_lacunaแล้วตรวจสอบรายการหนึ่งด้วยget_resourceเพื่อดูบทความและแง่มุมที่เชื่อมโยง - สำรวจแนวทางการวิจัย — ดูบทสรุปของแนวทางหนึ่ง แล้วไล่ดูบทความที่แนบมาทีละหน้าโดยใช้
get_direction_papers - สำรวจข้อเสนอที่สร้างขึ้น — ค้นหาข้อเสนอด้วย
search_type="hypothesis"แล้วอ่านรายการที่ได้ด้วยget_hypothesisในฐานะแนวคิดสำหรับการศึกษา ไม่ใช่ข้อค้นพบ - จัดทำประวัตินักวิจัยและแหล่งเผยแพร่ — ดูบริบท บทความ แนวทาง หรือเครือข่ายของผู้เขียน แล้วเปรียบเทียบแหล่งเผยแพร่และสถาบัน
เซิร์ฟเวอร์ MCP แบบโฮสต์
npx add-mcp 'https://lacuna.tiptreesystems.com/api/mcp'ติดตั้งลง Claude Code, Codex, Cursor และอื่นๆ
เอกสาร
Lacuna Research MCP
Lacuna ซึ่งพัฒนาโดย Tiptree Systems เป็นแผนที่งานวิจัยด้านแมชชีนเลิร์นนิงในรูปแบบกราฟความรู้ที่หลากหลาย เชื่อมโยงบทความ ทิศทางการวิจัย ผู้เขียน แหล่งเผยแพร่ สถาบัน และข้อเสนอการวิจัยที่สร้างขึ้น พร้อมเส้นทางแหล่งที่มาจากวัตถุที่ได้มาทุกชิ้นย้อนกลับไปยังบทความและหน้าที่แน่นอนซึ่งเป็นที่มา
Lacuna Research MCP มอบสิ่งต่อไปนี้ให้กับเอเจนต์เขียนโค้ดของนักวิจัย AI:
- ข้อเสนอการวิจัยที่สร้างขึ้น สำรวจแนวคิดการวิจัยที่สร้างด้วย The Alien Space of Science
- ทิศทางการวิจัย สำรวจกลุ่มแนวคิดที่เชื่อมโยงกับบทความ ผู้เขียน และข้อเสนอ
- วรรณกรรมพร้อมใช้สำหรับเอเจนต์ ค้นหาบทความล่าสุดในรูปแบบ markdown พร้อมลิงก์แหล่งที่มา
- ข้อมูลเชิงลึกเกี่ยวกับนักวิจัย ติดตามผู้เขียน ผลงานตีพิมพ์ ทิศทาง ผลกระทบ และนักวิจัยที่เกี่ยวข้อง
- การทำแผนที่ภาพรวม เปรียบเทียบแหล่งเผยแพร่ สถาบัน นักวิจัยชั้นนำ และกิจกรรมการตีพิมพ์
ตัวอย่างเช่น ติดตามการติดตั้งใช้งานไปยังความสัมพันธ์กับบทความที่บันทึกไว้:
ค้นหาบทความเบื้องหลัง Dao-AILab/flash-attention แสดงความเชื่อมโยงที่บันทึกไว้ กับ repository และลิงก์ไปยังบทความต้นฉบับ
ตัวอย่างนี้ติดตาม repository → ความสัมพันธ์กับบทความที่บันทึกไว้ → บทความและแหล่งที่มา
Lacuna ส่งคืนความสัมพันธ์ official_code_for ไปยัง
FlashAttention
พร้อมลิงก์ไปยัง repository และบทความต้นฉบับ ตรวจสอบแหล่งที่มาเหล่านั้นเพื่อยืนยัน
ความเชื่อมโยง เรียกใช้ตัวอย่าง หรือ
ทำตาม notebook
ติดตั้ง · ทักษะการวิจัย · เริ่มต้นใช้งานครั้งแรก · เครื่องมือ · เอกสารอ้างอิง API · การกำหนดค่า
ติดตั้ง
Agent plugin สำหรับ Cursor
repository นี้ยังบรรจุการเชื่อมต่อ MCP แบบโฮสต์และ ทักษะการวิจัย ทั้งสองรายการไว้เป็น Agent Plugin ด้วย Cursor รองรับรูปแบบนี้
หากต้องการทดสอบในเครื่อง ให้คัดลอก repository นี้ไปที่
~/.cursor/plugins/local/lacuna-research-mcp แล้วโหลด Cursor ใหม่ จากนั้นเปิด
Customize เพื่อตรวจสอบทักษะทั้งสองรายการและการเชื่อมต่อ MCP plugin จะเชื่อมต่อ
กับ https://lacuna.tiptreesystems.com/api/mcp โดยไม่ต้องติดตั้ง Python ในเครื่องหรือมี
บัญชี Lacuna เปิดใช้การเชื่อมต่อนี้หรือเซิร์ฟเวอร์ Lacuna ที่กำหนดค่าด้วยตนเองอย่างใดอย่างหนึ่ง
เพื่อหลีกเลี่ยงเครื่องมือซ้ำกัน
Cursor และ VS Code
ใช้เซิร์ฟเวอร์แบบโฮสต์โดยไม่ต้องติดตั้ง Python ในเครื่องหรือมีบัญชี Lacuna:
ปุ่มเหล่านี้จะเปิดขั้นตอนการติดตั้ง MCP ของ editor ตรวจสอบ URL ของเซิร์ฟเวอร์และ
ยืนยันการติดตั้ง หลังจากเชื่อมต่อแล้ว ให้ถามคำถามเกี่ยวกับ FlashAttention ด้านบน
เอเจนต์ของคุณควรใช้ search_lacuna, get_resource และ get_paper
การกำหนดค่าด้วยตนเองหากลิงก์ติดตั้งไม่เปิด
ใน Cursor ให้ผสานรายการนี้เข้ากับ mcpServers ใน .cursor/mcp.json:
{
"mcpServers": {
"lacuna-research": {"url": "https://lacuna.tiptreesystems.com/api/mcp"}
}
}
ใน VS Code ให้ผสานรายการนี้เข้ากับ servers ใน .vscode/mcp.json:
{
"servers": {
"lacuna-research": {"type": "http", "url": "https://lacuna.tiptreesystems.com/api/mcp"}
}
}
เก็บรายการเซิร์ฟเวอร์ที่มีอยู่ไว้ เปิดการตั้งค่า MCP ของ editor เพื่อตรวจสอบ การเชื่อมต่อและเปิดใช้เครื่องมือของ Lacuna สำหรับการสนทนา
เซิร์ฟเวอร์ MCP แบบโฮสต์ (Claude connector)
ใช้เซิร์ฟเวอร์ MCP แบบโฮสต์ของ Lacuna กับไคลเอ็นต์ใดก็ได้ที่รองรับ Streamable HTTP ไม่จำเป็นต้องติดตั้งในเครื่อง
https://lacuna.tiptreesystems.com/api/mcp
ใน Claude ให้เปิด Customize → Connectors → + Add → Add custom connector ตั้งชื่อว่า Lacuna Research วาง URL ด้านบน แล้วเลือก No sign in หากระบบถามเกี่ยวกับการยืนยันตัวตน เพิ่ม connector ให้เสร็จ จากนั้นเปิดใช้จาก + → Connectors ในการสนทนา
สำหรับ workspace แบบ Team และ Enterprise ต้องเพิ่ม connector ใน Organization settings → Connectors ก่อน ดูรายละเอียดได้ที่ การตั้งค่า custom connector ของ Claude
ติดตั้งในเครื่อง
วิธีติดตั้ง Lacuna Research MCP ที่ง่ายที่สุดคือขอให้เอเจนต์เขียนโค้ดของคุณ เช่น Codex หรือ Claude Code ดำเนินการ:
ติดตั้งและกำหนดค่าแพ็กเกจ
lacuna-research-mcpจาก PyPI สำหรับไคลเอ็นต์นี้
หากต้องการตั้งค่าด้วยตนเอง คำแนะนำด้านล่างใช้ uvx เพื่อเรียกใช้รุ่นล่าสุดที่ติดแท็กจาก PyPI ติดตั้ง uv ก่อน Lacuna Research MCP ต้องใช้ Python 3.11 ขึ้นไป
Codex
เพิ่มเซิร์ฟเวอร์ด้วย Codex CLI:
codex mcp add lacuna-research -- uvx lacuna-research-mcp
หรือเพิ่มรายการต่อไปนี้ใน ~/.codex/config.toml (หรือใน .codex/config.toml ภายในโปรเจกต์ที่เชื่อถือได้ หากต้องการตั้งค่าเฉพาะโปรเจกต์):
[mcp_servers.lacuna-research]
command = "uvx"
args = ["lacuna-research-mcp"]
เรียกใช้ codex mcp list เพื่อตรวจสอบว่ากำหนดค่าเซิร์ฟเวอร์แล้ว แอป Codex, CLI และส่วนขยาย IDE ใช้การกำหนดค่านี้ร่วมกันบนเครื่องเดียวกัน
Claude Code
เพิ่มเซิร์ฟเวอร์สำหรับทุกโปรเจกต์ด้วย Claude Code CLI:
claude mcp add --scope user lacuna-research -- uvx lacuna-research-mcp
ละ --scope user ไว้เพื่อเพิ่มเซิร์ฟเวอร์เฉพาะโปรเจกต์ปัจจุบัน หรือเพิ่มรายการต่อไปนี้ภายใต้วัตถุระดับบนสุด mcpServers ใน ~/.claude.json:
{
"mcpServers": {
"lacuna-research": {
"type": "stdio",
"command": "uvx",
"args": ["lacuna-research-mcp"]
}
}
}
เรียกใช้ claude mcp get lacuna-research เพื่อตรวจสอบว่ากำหนดค่าเซิร์ฟเวอร์แล้ว
Claude Desktop
เปิด Settings → Developer → Edit Config แล้วเพิ่มเซิร์ฟเวอร์ภายใต้ mcpServers ใน claude_desktop_config.json:
{
"mcpServers": {
"lacuna-research": {
"command": "uvx",
"args": ["lacuna-research-mcp"]
}
}
}
รีสตาร์ต Claude Desktop หลังบันทึกไฟล์
ไคลเอ็นต์ MCP อื่น ๆ
สำหรับไคลเอ็นต์ใดก็ตามที่รองรับเซิร์ฟเวอร์ MCP แบบ stdio ในเครื่อง ให้ใช้การกำหนดค่ามาตรฐานนี้:
{
"mcpServers": {
"lacuna-research": {
"command": "uvx",
"args": ["lacuna-research-mcp"]
}
}
}
คำสั่งแบบสแตนด์อโลน
ติดตั้งเซิร์ฟเวอร์ MCP เป็นคำสั่งถาวร:
uv tool install lacuna-research-mcp
lacuna-research-mcp
เรียกใช้โดยไม่ติดตั้งคำสั่งถาวร:
uvx lacuna-research-mcp
หากคำสั่งนี้จบลงด้วยข้อผิดพลาดเกี่ยวกับรุ่นก่อนเผยแพร่ (เช่น "Python 3.14.0rc2 is a prerelease...") แสดงว่า uv ของคุณกำลังใช้ Python 3.14 รุ่นก่อนเผยแพร่ ซึ่ง MCP SDK ไม่รองรับ อัปเดต uv (uv self update) ติดตั้ง Python รุ่นที่เผยแพร่แล้ว (uv python install 3.14) หรือเรียกใช้ uvx --python 3.13 lacuna-research-mcp
เซิร์ฟเวอร์ HTTP ที่โฮสต์เอง
หากต้องการให้บริการไคลเอ็นต์ MCP ระยะไกลผ่าน Streamable HTTP แทน stdio:
uvx lacuna-research-mcp --transport streamable-http --host 0.0.0.0 --port 8000
endpoint คือ /mcp เซิร์ฟเวอร์ไม่มีสถานะและตอบกลับเป็น JSON จึงทำงานหลัง load balancer ได้โดยไม่ต้องยึดติดกับเซสชัน เมื่อใช้ค่าเริ่มต้น --host 127.0.0.1 เซิร์ฟเวอร์จะยอมรับเฉพาะส่วนหัว Host จาก localhost ดังนั้นให้ bind กับที่อยู่ที่ไม่ใช่ loopback เมื่อ reverse proxy ส่งต่อ hostname สาธารณะ
เวอร์ชันพัฒนาล่าสุด
PyPI มีรุ่นที่ติดแท็ก หากต้องการลองโค้ดล่าสุดจาก branch main แทน:
uvx --from git+https://github.com/tiptreesystems/lacuna-research-mcp.git lacuna-research-mcp
การพัฒนาในเครื่อง
ใช้ uv:
git clone https://github.com/tiptreesystems/lacuna-research-mcp.git
cd lacuna-research-mcp
uv sync --extra dev
uv run lacuna-research-mcp
ใช้ pip:
cd <path-to-lacuna-research-mcp>
python3 -m venv .venv
. .venv/bin/activate
python -m pip install -U pip
python -m pip install -e .
ทักษะการวิจัย
เซิร์ฟเวอร์ MCP มีเครื่องมือให้ใช้งาน ทักษะเสริมเหล่านี้สอนเอเจนต์ของคุณให้ใช้ เครื่องมือเหล่านั้นสำหรับงานวิจัยสองประเภท:
| ทักษะ | ตัวอย่างคำขอ |
|---|---|
| ตรวจสอบงานก่อนหน้า | ก่อนที่ฉันจะติดตั้ง token merging สำหรับ vision transformer ช่วยหางานที่ใกล้เคียงที่สุดและ baseline ที่ควรนำมาเปรียบเทียบ |
| ติดตามโค้ดไปยังบทความ | Dao-AILab/flash-attention ใช้บทความใดเป็นพื้นฐาน แสดงความสัมพันธ์ที่บันทึกไว้และแหล่งที่มา |
เชื่อมต่อเซิร์ฟเวอร์ MCP ก่อน จากนั้นเมื่อติดตั้ง Node.js 22.20+ แล้ว ให้เรียกใช้ skills CLI จากโปรเจกต์ของคุณ:
npx skills add tiptreesystems/lacuna-research-mcp
เลือกทักษะและเอเจนต์ที่ต้องการใช้ หากต้องการติดตั้งเฉพาะเวิร์กโฟลว์จากโค้ดไปยังบทความ:
npx skills add tiptreesystems/lacuna-research-mcp --skill lacuna-code-to-paper
โดยค่าเริ่มต้น ทักษะจะติดตั้งในโปรเจกต์ปัจจุบัน ไม่ได้ติดตั้งหรือกำหนดค่า เซิร์ฟเวอร์ MCP หากไคลเอ็นต์ของคุณต้องค้นหาทักษะใหม่ ให้เริ่มเซสชันเอเจนต์ใหม่หลังติดตั้ง
เริ่มต้นใช้งานครั้งแรก
ถามคำถามข้อใดข้อหนึ่งด้านบนในเอเจนต์ที่เชื่อมต่อแล้ว หรือลองถามเกี่ยวกับรายการอ่าน:
รายการของฉันมี FlashAttention และ FlashAttention-2 ฉันควรอ่าน baseline หรือข้อจำกัดใดบ้าง เกี่ยวกับ attention แบบ long-context?
หากต้องการตัวอย่างที่ทำซ้ำได้โดยไม่ต้องใช้ model API key ให้ clone repository นี้แล้วเรียกใช้:
uv run examples/code_to_paper.py
notebook อธิบายแต่ละขั้นตอนและเปรียบเทียบเส้นทางแหล่งที่มากับการค้นหาบทความเพียงครั้งเดียว หากต้องการเรียกใช้เครื่องมือโดยตรง ให้ใช้ขั้นตอนเดียวกันดังนี้:
search_lacuna(query="FlashAttention", search_type="resource", resource_kind="codebase", limit=5)- ตรวจสอบตัวตนของ repository แล้วส่ง ID ที่ได้กลับไปยัง
get_resource(resource_id_or_url=...) - ติดตาม
publications[].paper_idที่ส่งกลับมาด้วยget_paper(artifact_id_or_url=..., view="context", figure_limit=0)
สำหรับการค้นหาวรรณกรรม ให้ใช้ search_lacuna(query="methods for detecting prompt injection attacks", search_type="paper", limit=5)
สำหรับข้อเสนอที่สร้างขึ้น ให้ใช้ search_lacuna(query="LLM jailbreak defense", search_type="hypothesis", limit=5)
แล้วติดตาม ID ที่ส่งกลับมาด้วย get_hypothesis ข้อเสนอที่สร้างขึ้นเป็นแนวคิดสำหรับการศึกษาเพิ่มเติม ไม่ใช่หลักฐานของผลการวิจัยที่ตีพิมพ์แล้ว
เกี่ยวกับ Lacuna
ไปป์ไลน์ของ Lacuna ปรับข้อมูลบรรณานุกรมจาก OpenAlex, OpenReview, DBLP และ arXiv ให้สอดคล้องกัน ดึงองค์ประกอบแนวคิดจากเนื้อหาบทความและจัดกลุ่มเป็นทิศทางการวิจัย (บทความ Lacuna) และสุ่มสร้างข้อเสนอการวิจัยใหม่จากทิศทางเหล่านั้นด้วย The Alien Space of Science แผนที่นี้ครอบคลุม บทความมากกว่า 2.29 ล้านฉบับ, โปรไฟล์ผู้เขียนมากกว่า 215,000 ราย, ทิศทางการวิจัยมากกว่า 28,000 รายการ, ข้อเสนอการวิจัยมากกว่า 25,000 รายการ และ แหล่งเผยแพร่มากกว่า 5,300 แห่ง — และขยายตัวอย่างต่อเนื่องเมื่อมีการนำเข้าบทความใหม่จาก arXiv และแหล่งอื่น ๆ ด้าน AI
ขอบเขต
คลังข้อมูลครอบคลุมงานวิจัยด้านแมชชีนเลิร์นนิงและ AI ได้แก่ บทความ ทิศทางการวิจัย ผลงานวิจัยของผู้เขียน แหล่งเผยแพร่ สถาบัน สมมติฐานการวิจัยที่สร้างขึ้น และทรัพยากรงานวิจัย (repository บน GitHub ชุดข้อมูลและโมเดลบน Hugging Face และระเบียน Zenodo) ที่เชื่อมโยงกับบทความ ไม่มีประวัติบุคคล ข่าว หรือเนื้อหาเว็บที่ไม่ใช่งานวิจัย เอเจนต์ควรตอบคำถามนอกขอบเขตนี้โดยใช้แหล่งข้อมูลอื่น
สิ่งที่เปิดให้ใช้งาน
search_lacunaใช้ endpoint สาธารณะของ Lacuna ที่/api/v1/searchสำหรับทิศทางการวิจัย บทความ ผู้เขียน แหล่งเผยแพร่ สถาบัน สมมติฐาน และทรัพยากร การค้นหาบทความโดยตรง (search_type="paper") จะใช้ตัวจัดอันดับ lexical+semantic สำหรับระบบ production ของเซิร์ฟเวอร์ เมื่ออาร์กิวเมนต์การจัดอันดับอื่นยังคงเป็นค่าเริ่มต้น ส่งsearch_type="hypothesis"เพื่อค้นหาสมมติฐาน ส่งsearch_type="resource"เพื่อค้นหาคลังโค้ด ชุดข้อมูล โมเดล และเดโมที่เชื่อมโยงกับบทความ โดยเลือกกรองได้ด้วยresource_kind(codebase,dataset,model,demo) และprovider(github,huggingface,zenodo); ตัวอย่างเช่นresource_kind="dataset"ใช้ค้นหาชุดข้อมูลสำหรับการทดสอบประสิทธิภาพ การค้นหาทรัพยากรจะปฏิเสธdate_from/date_to,venue, การเรียงลำดับตามปี และการจัดอันดับเชิงความหมาย (ทรัพยากรไม่มีวันที่ แหล่งเผยแพร่ หรือ embedding)get_hypothesis(hypothesis_id_or_url, view="context")สมมติฐาน/ข้อเสนอview="context"(ค่าเริ่มต้น) คือบริบทข้อเสนอแบบกระชับที่ดึงข้อมูลครั้งเดียว (สรุป บทคัดย่อ ทิศทางที่เชื่อมโยง);view="full"ส่งคืนระเบียนเวอร์ชันของเซิร์ฟเวอร์ พร้อมประวัติเวอร์ชันและจำนวนสัญญาณ เนื้อหาข้อเสนออยู่ในversions[].markdownget_direction(cluster_id_or_url, view="context")ทิศทาง/กลุ่มงานวิจัยview="context"(ค่าเริ่มต้น) ขอข้อมูลสรุปแบบกระชับที่มุ่งเน้นสำหรับเอเจนต์;view="full"ส่งคืนระเบียนกลุ่มดิบget_direction_papers(cluster_id_or_url, page, limit, view="compact")บทความที่แบ่งหน้าและเชื่อมโยงกับทิศทางview="compact"(ค่าเริ่มต้น) ส่งคืนแถวที่พร้อมใช้อ้างอิง (id, url, title, year, venue, ผู้เขียนบางส่วน, ข้อความบางส่วนจากบทคัดย่อ);view="full"ส่งคืนระเบียนบทความดิบจาก upstreamget_paper(artifact_id_or_url, view="context", figure_limit=None, include_resources=True)ค้นหาบทความพร้อมเวอร์ชันที่มีให้ใช้งาน ใช้ ID ของอาร์ติแฟกต์จากเวอร์ชันเพื่ออ่านข้อมูล โดยค่าเริ่มต้น บริบทและมุมมองแบบเต็มจะรวมทรัพยากรที่เชื่อมโยง (คลังโค้ด ชุดข้อมูล โมเดล และเดโม); ส่งinclude_resources=Falseเพื่อไม่รวมทรัพยากรเหล่านั้น มุมมองอื่นจะไม่สนใจตัวเลือกนี้view="context"(ค่าเริ่มต้น) ขอบริบทแบบกระชับที่มุ่งเน้นสำหรับเอเจนต์; มุมมองอื่นได้แก่"full","preview","blog","figures","concepts"หรือ"neighbors"ในมุมมองบริบทfigure_limitจำกัดจำนวนภาพตัวอย่าง (ค่าเริ่มต้นของเซิร์ฟเวอร์คือ 3; ส่ง 0 เพื่อปิดภาพตัวอย่างโดยยังคงสัญญาณfigures_truncatedไว้)get_resource(resource_id_or_url)ค้นหาทรัพยากรด้วย id (จากการค้นหาทรัพยากรหรือรายการresourcesของget_paper) หรือ URL ของ Lacuna/resource/...: URL ภายนอก สรุป แง่มุมต่าง ๆ (งาน รูปแบบ ขนาด ใบอนุญาต) เมตริกของผู้ให้บริการ ข้อความบางส่วนจาก README/การ์ด บทความที่เชื่อมโยงภายใต้publications(พร้อมpaper_idและความสัมพันธ์ เช่นdataset_for) ทิศทางที่เกี่ยวข้อง และทรัพยากรที่มีการกล่าวถึง- เครื่องมือผู้เขียน:
get_author_context(…, view="context"),get_author_papers,get_author_directionsและget_author_neighborsเริ่มด้วยget_author_contextซึ่งค่าเริ่มต้นจะแสดงมุมมองแบบกระชับที่มุ่งเน้นสำหรับเอเจนต์ (บทความจำนวนจำกัด พร้อมรายการimpact_directionsที่อ่านง่าย แทนข้อมูล telemetry ดิบของimpact_clusters) ใช้เครื่องมือบทความ ทิศทาง และเพื่อนบ้านโดยเฉพาะเพื่อไล่ดูรายการเหล่านั้นเป็นหน้า โดยไม่ต้องดึงบริบทผู้เขียนซ้ำview="full"ส่งคืนบริบทแบบเต็มตามโครงสร้างที่เซิร์ฟเวอร์จำกัดขอบเขตไว้ (คอลเลกชันจำกัดไว้ที่ 100 รายการ) ส่งinclude_neighbors=trueเพื่อรวมผู้เขียนที่คล้ายกันอย่างชัดเจน ซึ่งอาจเพิ่มเวลาแฝงของเซิร์ฟเวอร์อย่างมาก - เครื่องมือแหล่งเผยแพร่และสถาบัน:
get_venue_context(…, view="context"),get_institution_context(…, view="context"),get_institution_authorsเครื่องมือบริบทจะใช้รูปแบบกระชับเป็นค่าเริ่มต้น (รายการมีจำนวนจำกัด ตัดบล็อกที่ซ้ำกันออก; แหล่งเผยแพร่จะเก็บช่วงกิจกรรมล่าสุดไว้ ซึ่งรวมyearที่ร้องขอเสมอ) ใช้get_institution_authorsเพื่อไล่ดูรายชื่อผู้เขียนทั้งหมดของสถาบันเป็นหน้า
API ที่มีตัวห่อหุ้ม
| เครื่องมือ MCP | endpoint ของ Lacuna API |
|---|---|
search_lacuna(query, search_type, limit, offset, author_id_or_url, date_from, date_to, venue, sort, ranking_profile, fields, resource_kind, provider) | GET /api/v1/search (ส่ง resource_kind และ provider เป็นพารามิเตอร์ query kind และ provider ที่ส่งซ้ำ และต้องใช้ search_type="resource" หรือ "all" author_id_or_url จำกัด search_type="paper" ให้เหลือผู้เขียนหนึ่งคน โดยรับ author ID แบบดิบหรือ URL หน้า author ของ Lacuna fields จำกัด/ถ่วงน้ำหนักฟิลด์ข้อความที่ใช้จัดอันดับ lexical เช่น title^4,abstract และเลือกตัวจัดอันดับ lexical แบบทดลอง สำหรับการค้นหาบทความที่เรียงตามความเกี่ยวข้องเป็นค่าเริ่มต้น ตัวเลือกนี้จะข้ามตัวจัดอันดับ lexical+semantic สำหรับระบบ production ฟิลด์ที่อนุญาต ได้แก่ title, abstract, summary, concepts, name, top_names, venue, description, topics, provider_key, paper_titles โดยแต่ละฟิลด์ใช้ได้เฉพาะกับประเภทที่มีฟิลด์นั้น — title: บทความ/คลัสเตอร์/แหล่งเผยแพร่/สมมติฐาน/ทรัพยากร; description/topics/provider_key/paper_titles: ทรัพยากร; abstract/summary/concepts: บทความ; name: ผู้เขียน/สถาบัน/แหล่งเผยแพร่; top_names: คลัสเตอร์/สมมติฐาน; venue: บทความ/แหล่งเผยแพร่ (search_type="all" ครอบคลุมทั้งหมด) น้ำหนักต้องเป็นไปตาม 0 < weight <= 100 ระบบจะปฏิเสธฟิลด์ที่ไม่รู้จัก น้ำหนักที่อยู่นอกช่วง ฟิลด์ที่ใช้ร่วมกับประเภทนั้นไม่ได้ และ fields ที่ใช้ร่วมกับ ranking_profile="semantic" เนื่องจากมิฉะนั้นเซิร์ฟเวอร์จะละทิ้ง จำกัด หรือเพิกเฉยต่อค่าเหล่านั้นโดยไม่แจ้งให้ทราบ) |
get_hypothesis(hypothesis_id_or_url, view="context") | view="context" → GET /api/v1/context/hypothesis/{hypothesis_id}?view=compact; view="full" → GET /api/v1/hypotheses/{hypothesis_id} |
get_direction(cluster_id_or_url, view="context") | view="context" → GET /api/v1/context/direction/{cluster_id}?view=compact; view="full" → GET /api/v1/clusters/{cluster_id} |
get_direction_papers(cluster_id_or_url, page, limit, view="compact") | GET /api/v1/clusters/{cluster_id}/papers?view=compact (ค่าเริ่มต้น) หรือ ?view=complete |
get_paper(artifact_id_or_url, view="context", figure_limit=None, include_resources=True) | view="context" → GET /api/v1/context/paper/{artifact_id}?view=compact (ใช้ &figure_limit=N เมื่อตั้งค่า); view="full" → GET /api/v1/papers/{artifact_id}; view="preview" → …/preview; view="blog" → …/blog; view="figures" → …/figures; view="concepts" → …/concepts; view="neighbors" → …/neighbors; บริบทและแบบเต็มจะส่ง include_resources URL หน้า Work (/work/<name>, /work/<slug>/wrk_…) หรือ id แบบดิบของ wrk_… จะถูกอ่านผ่าน GET /api/v1/context/work/{work_id_or_name} ก่อน |
get_resource(resource_id_or_url) | GET /api/v1/resources/{resource_id} |
get_author_papers(author_id_or_url, limit=50, offset=0) | GET /api/v1/authors/{author_id}/papers |
get_author_directions(author_id_or_url, limit=50, offset=0) | GET /api/v1/authors/{author_id}/directions |
get_author_context(author_id_or_url, view="context", include_neighbors=false) | view="context" → GET /api/v1/context/author/{author_id}?view=compact; view="full" → GET /api/v1/context/author/{author_id} (include_neighbors=true ใช้ร้องขอผู้เขียนที่คล้ายกันอย่างชัดเจน) |
get_author_neighbors(author_id_or_url, limit=8, offset=0) | GET /api/v1/authors/{author_id}/neighbors |
get_venue_context(venue_key_or_url, year, view="context") | view="context" → GET /api/v1/context/venue/{vkey}[/{year}]?view=compact; view="full" → เส้นทางเดียวกันโดยไม่มี view |
get_institution_context(institution_key_or_url, view="context") | view="context" → GET /api/v1/context/institution/{ikey}?view=compact; view="full" → เส้นทางเดียวกันโดยไม่มี view |
get_institution_authors(institution_key_or_url, limit=50, offset=0) | GET /api/v1/institutions/{ikey}/authors |
สำหรับอาร์กิวเมนต์ id-or-URL ให้ส่ง id ดิบที่ได้จาก search_lacuna หรือ URL หน้า Lacuna ที่เกี่ยวข้อง MCP จะแปลงฟิลด์ url และ *_url ที่สัมพันธ์กับ Lacuna ให้เป็น URL แบบ absolute และยังแปลงลิงก์ Lacuna ให้เป็น absolute ด้วย (รวมถึงหน้า /resource/...) ภายในฟิลด์ที่ชื่อ summary_markdown, article_markdown, markdown, content หรือ description
get_author_context ถูกจำกัดขอบเขตฝั่งเซิร์ฟเวอร์ในทั้งสองมุมมอง มุมมองกระชับเริ่มต้นจะแสดงข้อมูลสรุปที่คัดสรรแล้ว; view="full" จะแสดงโครงสร้างแบบเต็มที่มีขนาดใหญ่กว่า โดยจำกัดคอลเลกชันที่ฝังอยู่ไว้ที่ 100 รายการ ใช้ get_author_papers และ get_author_directions แทนการพยายามแบ่งหน้าคอลเลกชันบริบทที่ฝังอยู่
คำขอค้นหาจำกัดผลลัพธ์ไว้ที่ 50 รายการต่อครั้ง และคำขอหน้าบทความตามทิศทางจำกัดผลลัพธ์ไว้ที่ 100 รายการต่อครั้ง
ใน search_lacuna date_from และ date_to คือขอบเขตวันที่เผยแพร่แบบรวมวันต้นทางและวันปลายทาง
รูปแบบที่ยอมรับ ได้แก่ YYYY, YYYY-MM และ YYYY-MM-DD; ตัวอย่างเช่น
date_from="2020", date_to="2022-03" จะรวมบทความตั้งแต่วันที่ 1 มกราคม 2020
ถึงวันที่ 31 มีนาคม 2022
search_lacuna เปิดให้ใช้โปรไฟล์การจัดอันดับต่อไปนี้:
default/lexicalโปรไฟล์เริ่มต้นสำหรับการค้นหาทั้งหมด เมื่อไม่ได้ตั้งค่าsearch_type="paper",sort="relevance"และfieldsจะใช้ตัวจัดอันดับ lexical+semantic สำหรับระบบ production ของเซิร์ฟเวอร์ พร้อมการสำรองเมื่อเกิดปัญหาอย่างเหมาะสม ค่าเริ่มต้นของsearch_type="all"ใน MCP จะใช้การจัดอันดับ lexical เริ่มต้นของเซิร์ฟเวอร์แทนsemanticใช้สำหรับดึงบทความโดยอาศัย embedding คำค้นหาเชิงความหมายจะไม่ใช้ส่วนการจัดอันดับ lexical ตามปกติ แต่เซิร์ฟเวอร์ยังสามารถเพิ่มผลการจับคู่ชื่อเรื่องแบบตรงกันด้วย lexical ได้ รองรับเฉพาะการค้นหาpaperและallเท่านั้น (มีเพียงบทความที่มี semantic embedding) และใช้ร่วมกับตัวกรองresource_kind/providerไม่ได้bm25_title_abstract/bm25ใช้สำหรับจับคู่ lexical โดยจำกัดเฉพาะชื่อเรื่องและบทคัดย่อ ระบบจะปฏิเสธการค้นหาauthorและinstitution(ระเบียนเหล่านั้นไม่มีฟิลด์ชื่อเรื่องหรือบทคัดย่อ)
การค้นหาทั้งหมดใช้ค่าเริ่มต้นของเซิร์ฟเวอร์ เว้นแต่จะระบุ ranking_profile MCP จะปฏิเสธชุดค่าผสมของโปรไฟล์/ประเภทที่ไม่รองรับ เนื่องจากมิฉะนั้นเซิร์ฟเวอร์จะเปลี่ยนไปใช้การค้นหาสตริงย่อยและเพิกเฉยต่อโปรไฟล์การจัดอันดับที่ร้องขอโดยไม่แจ้งให้ทราบ
sort รับค่า relevance (ค่าเริ่มต้น), year_desc และ year_asc การเรียงลำดับตามปีใช้ร่วมกับ ranking_profile="semantic" ไม่ได้ — เซิร์ฟเวอร์จะเพิกเฉยต่อการเรียงลำดับโดยไม่แจ้งให้ทราบ — ดังนั้น MCP จึงปฏิเสธชุดค่าผสมดังกล่าว สำหรับคำค้นหาที่ต้องการผลลัพธ์ใหม่และเกี่ยวข้อง ให้คงการจัดอันดับเชิงความหมายไว้ แล้วจำกัดความใหม่ด้วย date_from/date_to แทน
ตัวแปรสภาพแวดล้อม
LACUNA_SITE_URLค่าเริ่มต้นคือhttps://lacuna.tiptreesystems.comLACUNA_MCP_TIMEOUTค่าเริ่มต้นคือ30LACUNA_MCP_MAX_RETRIESค่าเริ่มต้นคือ2; ใช้กับ timeout ข้อผิดพลาดด้าน transport และการตอบกลับ HTTP429,502,503และ504LACUNA_MCP_USER_AGENTค่าเริ่มต้นคือlacuna-research-mcp/{package_version}LACUNA_MCP_BEARER_TOKENbearer token ที่ไม่บังคับ ส่งเป็นAuthorization: Bearer ...สำหรับการติดตั้งใช้งาน Lacuna แบบส่วนตัวLACUNA_MCP_CLIENT_TOKENtoken ที่ไม่บังคับ ส่งเป็นX-Lacuna-Client-Tokenเพื่อระบุเซิร์ฟเวอร์ MCP ที่โฮสต์ให้ Lacuna ทราบ สำหรับการจำกัดอัตราการค้นหาของ Lacuna เองLACUNA_MCP_LOG_LEVELค่าเริ่มต้นคือWARNING(หนึ่งในDEBUG,INFO,WARNING,ERROR,CRITICAL) ค่าเริ่มต้นช่วยให้การทำงานปกติเงียบไว้ ลดระดับนี้เฉพาะเมื่อต้องการดีบัก เนื่องจากINFO/DEBUGทำให้ HTTP client บันทึก URL คำขอทั้งหมด — รวมถึง query string ของคำค้นหา — ลงใน stderr ซึ่ง MCP host บางแห่งเก็บรักษาไว้
ตัวแปรสภาพแวดล้อมจะถูกอ่านครั้งเดียวเมื่อสร้างเซิร์ฟเวอร์ MCP หรือเมื่อเรียกใช้เครื่องมือ/API โดยตรงครั้งแรก หากนำเข้าโมดูลโดยไม่เรียก create_mcp()
โครงสร้างการติดตั้งใช้งาน
เซิร์ฟเวอร์เป็น MCP adapter แบบบางที่ทำงานครอบ HTTP API ของ Lacuna การติดตั้งใช้งานแบ่งตามหน้าที่ดังนี้:
lacuna_research_mcp/server.pyการสร้างแอป MCPServer การลงทะเบียนเครื่องมือ การล้างข้อมูลเมื่อสิ้นสุดอายุการใช้งาน และจุดเข้าใช้งาน CLI ของlacuna-research-mcplacuna_research_mcp/tools.pyฟังก์ชันเครื่องมือ MCP เครื่องมือแต่ละรายการจะปรับรูปแบบอินพุต เรียก endpoint ของ Lacuna API ที่ตรงกันผ่านตัวช่วย client ที่ใช้ร่วมกัน และส่งคืนข้อมูลที่เข้ากันได้กับ JSONlacuna_research_mcp/client.pyการเข้าถึง HTTP ของ Lacuna ขณะทำงาน:httpx.AsyncClientที่ผูกกับ event loop การจัดการการลองใหม่ การห่อหุ้มข้อผิดพลาด การแยกวิเคราะห์ JSON การปรับ URL ในการตอบกลับให้เป็นมาตรฐาน และapi_get/api_object/api_payloadlacuna_research_mcp/config.pyค่าคงที่ขณะทำงานRuntimeConfigการสร้าง user-agent ของแพ็กเกจ และการแยกวิเคราะห์สภาพแวดล้อมlacuna_research_mcp/ids.pyตัวช่วยที่รับได้ทั้ง id ดิบหรือ URL หน้า Lacuna และดึงส่วนเส้นทาง API ที่ปลอดภัยlacuna_research_mcp/normalize.pyการประมวลผลคำตอบภายหลังสำหรับ URL สัมพัทธ์ของ Lacuna และลิงก์ Markdownlacuna_research_mcp/errors.pyประเภทข้อยกเว้นที่แสดงต่อผู้ใช้สำหรับความล้มเหลวในการเข้าถึง Lacuna API
หมายเหตุ
get_paperและget_directionมีค่าเริ่มต้นเป็นview="context"มุมมองบริบทเหล่านี้จะขอเพย์โหลดขนาดกะทัดรัดที่ออกแบบมาสำหรับเอเจนต์ของ Lacuna เป็นค่าเริ่มต้น เพื่อให้การตอบกลับจาก MCP มีขนาดเล็ก บริบทของบทความประกอบด้วยsummary_markdownเมื่อมีข้อมูล (มิฉะนั้นจะใช้abstract) ผู้เขียน และรูปภาพประกอบ ส่วนบริบทของทิศทางการวิจัยประกอบด้วยsummary_markdownบทความ/ผู้เขียน/ทิศทางที่เกี่ยวข้องโดยจำกัดจำนวน และเครื่องหมายระบุการตัดทอน ใช้view="full"เมื่อต้องการข้อมูลเมตาดิบ และใช้มุมมองบทความอื่นๆ (preview,blog,figures,concepts,neighbors) เมื่อต้องการทรัพยากรย่อยแยกเป็นรายการ- การค้นหาบทความที่จัดเรียงตามความเกี่ยวข้องอย่างชัดเจนโดยไม่มี
fieldsที่กำหนดเอง จะใช้ตัวจัดอันดับเชิงคำศัพท์และเชิงความหมายสำหรับระบบใช้งานจริงของเซิร์ฟเวอร์เป็นค่าเริ่มต้น กำหนดranking_profile="semantic"เพื่อดึงข้อมูลโดยอิงจาก embedding (ซึ่งอาจมีการจัดลำดับทับด้วยชื่อเรื่องที่ตรงกันทุกประการ) หรือกำหนด"bm25_title_abstract"เพื่อจับคู่เชิงคำศัพท์จากชื่อเรื่องและบทคัดย่อ - เครื่องมือดูรายละเอียดส่วนใหญ่ยอมรับทั้ง ID ที่ได้จากการค้นหาและ URL ของ Lacuna ที่เกี่ยวข้อง
- URL ของ Lacuna แบบสัมพัทธ์ในฟิลด์การตอบกลับ
url/*_urlและฟิลด์ที่ชื่อsummary_markdown,article_markdown,markdown,contentหรือdescriptionจะถูกแปลงเป็น URL แบบสัมบูรณ์ - คีย์ของสถานที่จัดงานและสถาบันเป็นแฮชที่ไม่มีความหมายในตัวเอง (เช่น
d7bf22905bd6) ไม่ใช่ชื่อที่มนุษย์อ่านเข้าใจได้อย่างicmlค้นหาคีย์ด้วยsearch_lacuna(search_type="venue")ก่อน หรือส่ง URL ของหน้า/venue/...
การอ้างอิง
หากเห็นว่างานของเรามีประโยชน์ สามารถอ้างอิงบทความที่อยู่เบื้องหลังการสร้างข้อเสนอการวิจัยและแผนที่การวิจัยของ Lacuna ได้
การสร้างข้อเสนอการวิจัย — The Alien Space of Science
@inproceedings{artiles2026alien,
title = {The Alien Space of Science: Sampling Coherent but Cognitively Unavailable Research Directions},
author = {Artiles, Alejandro H. and Weiss, Martin and Brinkmann, Levin and Rahwan, Iyad and Sch{\"o}lkopf, Bernhard and Pal, Christopher and Larochelle, Hugo and Goyal, Anirudh and Rahaman, Nasim},
booktitle = {Advances in Neural Information Processing Systems},
year = {2026},
eprint = {2603.01092},
archivePrefix = {arXiv},
url = {https://arxiv.org/abs/2603.01092}
}
แผนที่การวิจัย — Lacuna
@misc{weiss2026lacunaresearchmapmachine,
title = {Lacuna: A Research Map for Machine Learning},
author = {Martin Weiss and Miles Q. Li and Alejandro H. Artiles and Yacine Mkhinini and Chris Pal and Hugo Larochelle and Nasim Rahaman},
year = {2026},
eprint = {2606.26246},
archivePrefix = {arXiv},
primaryClass = {cs.DL},
url = {https://arxiv.org/abs/2606.26246}
}
ใบอนุญาต
MIT ดู LICENSE.