DocuSky MCP
DocuSky MCP lets Claude query and analyze Taiwan's DocuSky digital humanities platform — public or your own private databases — through natural-language conversation.
Browse databases —
list_databaseslists public (OPEN) or your own (USER) databases, optionally including friend-shared ones;list_corporashows the corpora and document counts inside one database.Full-text search —
search_documentssearches a database (supports+termrequire,-termexclude,.all), returning metadata plus short excerpts; full text is intentionally excluded.Read full documents —
get_documentfetches a hit's complete text by its result rank, with offset/max_chars for paging through long works, optional raw DocuXML.Distribution analysis —
post_classificationbreaks a query's hits down by DocuSky facets (corpus, period, place, category…), showing how a term spreads across a database.Tag analysis —
tag_analysissummarizes inline DocuXML markup (people, places, dates, custom tags) in a query's hits.Two-dimension crosstab (experimental) —
twodim_analysiscrosses two classification facets at once, though the DocuSky endpoint currently rejects most/all combinations.Word clouds —
word_cloudrenders term→weight pairs you already have into DocuSky's WordCloudLite (with bubble, top-10 bar and table views).Maps —
docugis_mapturns places with WGS84 coordinates into TSV for DocuGIS2's import box (time filtering, routes, clustering, heatmaps).Login status —
check_loginverifies whether configured DocuSky credentials work for private databases.Inline visualization — on MCP Apps-capable hosts, search/classification/tag/word-cloud results embed the actual DocuSky web page (with paging, fullscreen, open-in-browser), and the map tool shows the TSV alongside DocuGIS2.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@DocuSky MCP 在 DaoBudMed6D 裡查「針灸」,看它在佛、道、醫三類文獻的分布"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
DocuSky MCP
讓 Claude 直接查詢 DocuSky 數位人文學術研究平台 的資料庫。
打包成 .mcpb 之後,使用者雙擊就能安裝,不需要碰終端機。裝好就可以用日常語言問問題:
「DocuSky 上有哪些公開資料庫?」
「在 DaoBudMed6D 裡查『針灸』,看它在佛、道、醫三類文獻的分布」
「把《真誥》那一筆的全文調出來」
給使用者
需要準備什麼
Claude Desktop(macOS 或 Windows 桌面應用程式)
不需要 DocuSky 帳號,也不需要會寫程式
網頁版(claude.ai)和手機 App 不支援擴充功能,必須用桌面版。 沒裝的話可以到 claude.ai/download 下載。
步驟一:下載
這個連結永遠指向最新版。想看歷史版本或更新說明,到 Releases 頁面。
檔案大約 82 KB,副檔名是 .mcpb。瀏覽器可能會提示「不常下載的檔案類型」,選擇保留即可。
步驟二:安裝
三種方式擇一:
雙擊下載好的
docusky.mcpb把檔案拖進 Claude Desktop 視窗
Claude Desktop 選單:設定 → 擴充功能 → 進階設定 → 安裝擴充功能…
會跳出安裝畫面,上面列出這個擴充功能的名稱、說明,以及它提供的九個工具。確認後點安裝。
接著會看到兩個欄位:DocuSky 帳號、DocuSky 密碼。
你的情況 | 怎麼填 |
只想查公開資料庫(大多數人) | 兩個都留空,直接完成安裝 |
想查自己在 DocuSky 建的資料庫 | 填入你的 DocuSky 帳號與密碼 |
帳密之後隨時可以補填或修改,不必重裝。
步驟三:確認可以用了
到 設定 → 擴充功能,應該會看到 DocuSky 且開關是開啟狀態。
然後開一個新對話,試著問:
DocuSky 上有哪些公開資料庫?
第一次使用時,Claude 會詢問你是否允許它使用這個擴充功能的工具,選擇允許即可。
如果它列出了宋會要輯稿、大明一統志、淡新檔案那些資料庫,就代表一切正常。
實際用起來是什麼樣子
你不需要記任何指令,直接用日常語言描述你想找什麼。
你問:
在 DaoBudMed6D 裡查「針灸」,看它在佛、道、醫三類文獻的分布
Claude 會去 DocuSky 查完,然後回給你:
文獻集 | 文件數 |
Medical 醫書 | 14 |
Buddhist 佛典 | 10 |
Daoist 道藏 | 8 |
共 32 筆。值得注意的是佛道兩家加起來(18)比醫書(14)還多——針灸的討論並不侷限在醫學文本裡。前幾筆命中的是《太上洞淵神咒經》《真誥》《抱朴子》,年代集中在 363–420 年間。
接著你可以繼續問:
把《真誥》那一筆的全文調出來
它就會把整篇文獻讀出來給你。文章很長的話會分段,你說「繼續」就好。
其他可以這樣問的例子:
宋會要輯稿裡關於「市舶司」的記載有哪些?
淡新檔案有沒有提到樟腦的案件?
幫我比較「疫」和「癘」在道藏裡的分布差異
日後管理
你想做什麼 | 怎麼做 |
填入或修改 DocuSky 帳密 | 設定 → 擴充功能 → DocuSky → 設定 |
暫時停用 | 設定 → 擴充功能 → 把開關關掉 |
更新到新版 | 下載新的 |
移除 | 設定 → 擴充功能 → 解除安裝 |
它能做什麼
全文檢索 —— 38 個公開資料庫(本草經集注、大明一統志、宋會要輯稿、朝鮮王朝實錄、淡新檔案、馬偕日記……)
分布統計 —— 一個詞在不同文獻集、時代、地點的出現分布
取全文 —— 單篇文獻完整讀出,長文自動分段
標記分析 —— 統計文本裡的人名、地名、時間等標記
文字雲 —— 把詞頻畫成 DocuSky 官方 WordCloudLite 的文字雲(同一份數字也能切換成泡泡圖、Top-10 長條圖、表格)
地圖 —— 把地點(地名+WGS84 經緯度,可加時間、說明)整理成 DocuSky 官方 DocuGIS2 的匯入 TSV,貼進去就能看時空分布、時間軸、路線、熱區
雙維度交叉統計(實驗性)—— 同時交叉兩個分類維度,DocuSky 伺服器端功能尚未完整,目前測試過的組合都會被拒絕
私人資料庫 —— 填入帳密後也能查自己在 DocuSky 建的資料庫
內嵌顯示 DocuSky 網頁
在支援 MCP Apps 的 Claude 版本裡,查公開資料庫時(全文檢索、分布統計、標記分析)以及畫文字雲時,Claude 的回覆旁邊會直接內嵌顯示 DocuSky 官方網頁本身的畫面,不只是文字結果。畫面上方有一排這個擴充自己加的工具列:
上一頁/下一頁/跳頁 —— 直接翻 DocuSky 的檢索結果。請用這排按鈕翻頁,不要用 DocuSky 頁面自己那排頁碼:它靠整頁跳轉(
window.location.href)換頁,而那在對話內嵌的沙箱 iframe 裡會翻出空白頁。全螢幕 —— 把內嵌畫面放大成整頁再看,關掉就回到對話裡。
瀏覽器開啟 —— 在真正的瀏覽器打開同一頁,DocuSky 的全部功能(篩選、標記統計、匯出、另開單篇)都在那裡。
查詢類的內嵌只在公開資料庫(不需帳密)上生效——私人資料庫的登入狀態是伺服器端的,內嵌畫面沒辦法一起帶過去,所以私人查詢仍然只會拿到文字結果。文字雲不受這個限制:它畫的是已經拿到手的數字,資料從哪個資料庫來都可以。如果你用的 Claude 版本不支援 MCP Apps,這一切照常運作,只是不會出現內嵌畫面。
地圖(docugis_map)的內嵌長得不一樣:DocuGIS2 沒有辦法用網址帶資料進去,所以內嵌畫面上半是整理好的 TSV 加一顆「複製 TSV」,下半是 DocuGIS2 本體,最後一步要你自己貼上——按複製、在下方地圖左上角的 ⇥ 打開選單、點「1.2 匯入資料 Import Data」、在右邊的框貼上、按[匯入 Import]。貼完之後時間軸、路線、群聚、熱區、匯出都是 DocuGIS2 原生的功能。
少數 client 會用最嚴格的沙箱(沒有 allow-same-origin)來跑內嵌畫面,那種環境下 DocuSky 只有第一頁能正常顯示。擴充會自己偵測到並改成提示你按「瀏覽器開啟」,不會給你一排按了只會變空白的翻頁鈕。DocuGIS2 在那種沙箱裡更直接:整頁卡在轉圈載不起來,所以擴充在偵測到時乾脆不嵌它,只給你 TSV 和「瀏覽器開啟 DocuGIS2」。
檢索語法
平常用日常語言就好,需要精確控制時可以這樣講:
寫法 | 意思 |
| 全文檢索這個詞 |
| 必須同時包含「醫」和「方」 |
| 包含「醫」但排除「註」 |
| 整個文獻集全部 |
⚠️ 不要把密碼貼在對話裡
對話內容會被保存。密碼請一律填在擴充功能的設定欄位,那是專門為此設計的,會經過安全儲存且不進入對話紀錄。
如果不小心貼了,建議去 DocuSky 改密碼。
遇到問題
設定裡找不到「擴充功能」
確認你用的是桌面版 Claude,不是瀏覽器開的 claude.ai。
裝好了但 Claude 說查不到 DocuSky
先重新啟動 Claude Desktop。再到設定 → 擴充功能確認 DocuSky 是開啟狀態。
擴充功能顯示啟動失敗
這個擴充功能以 Python 執行,需要系統上有 uv。 多數情況下 Claude Desktop 會自行處理,若確實失敗,可在終端機安裝後重啟 Claude:
curl -LsSf https://astral.sh/uv/install.sh | sh查不到東西
古籍常有異體字。試試換字(「醫」vs「毉」)、拆成單字,或換一個資料庫。也可以直接請 Claude 幫你想替代詞。
查詢很慢
DocuSky 的全文檢索本來就需要時間,跨大型資料庫時等十幾秒是正常的。
Related MCP server: wiznote-mcp
給開發者:怎麼打包
npm install -g @anthropic-ai/mcpb
mcpb pack . docusky.mcpb產出約 82 KB。驗證 manifest:
mcpb validate manifest.json自動建置
.github/workflows/build-mcpb.yml 會在 push 到 main 或手動觸發時:
驗證
manifest.json打包
docusky.mcpb解開並實際啟動一次,確認九個工具都在(不會連到 DocuSky)
上傳為 workflow artifact
發布 GitHub Release,tag 取自
manifest.json的version
Release 讓沒有 GitHub 帳號的人也能直接下載。版本號沒變而重跑時,會覆蓋既有的附件而不是失敗。
要發新版本就改 manifest.json 裡的 version,push 之後會自動建立對應的 Release。
專案結構
manifest.json MCPB manifest(宣告工具、user_config、啟動方式)
server.py 進入點 shim
docusky_mcp/client.py DocuSky Web API client
docusky_mcp/server.py MCP 工具層
docusky_mcp/ui.py MCP Apps:ui:// 檢視器資源與 webUrl 產生邏輯
docusky_mcp/credentials.py 憑證讀取(環境變數優先)
pyproject.toml 相依套件定義
uv.lock 鎖定版本,啟動時用 --frozen 安裝
.mcpbignore 打包時排除的檔案server.py 存在的理由:uv 型別的 host 會直接執行進入點檔案,而 docusky_mcp/server.py
用的是相對匯入,直接跑會 ImportError。這個 shim 透過已安裝的套件轉一手。
執行環境
manifest.json 宣告 server.type: "uv",啟動指令是:
uv run --frozen --directory ${__dirname} server.py依 MCPB 規格,uv 型別由 host 管理 Python 與相依套件。manifest_version 必須是
0.4 —— 0.3 的 schema 只接受 python | node | binary。
憑證
user_config 的兩個欄位會被注入成環境變數:
欄位 | 環境變數 |
DocuSky 帳號 |
|
DocuSky 密碼( |
|
留空時兩者皆為空字串,credentials.py 會判定為未登入並退回公開模式。
其他可用的環境變數:
變數 | 預設值 | 用途 |
|
| 憑證檔位置(給非 Claude Desktop 的 MCP 客戶端用的後備) |
|
| API 根路徑 |
|
| 單次請求逾時(秒) |
提供的工具
工具 | 用途 |
| 列出可用資料庫 |
| 某資料庫下的文獻集與篇數 |
| 全文檢索,回傳書目與摘錄 |
| 取單篇全文 |
| 分布統計 |
| 標記統計 |
| 雙維度交叉統計(實驗性,見下方說明) |
| 把詞頻畫成 DocuSky WordCloudLite 文字雲 |
| 把地點整理成 DocuGIS2 地圖的匯入 TSV |
| 檢查登入狀態 |
search_documents 刻意不回全文——DocuSky 單篇動輒六千字以上,一次二十筆會塞爆
context。要讀全文請用 get_document,帶入該筆的 n,並沿用同一組
db / query / corpus / page_size。
twodim_analysis 包的是 DocuSky 2026-01-28 才加上的
getQueryTwodimAnalysisJson.php。實際測試(2026-09-11)發現不管 dim1/dim2
帶什麼組合(包括直接沿用 post_classification 回傳的 facet 代碼,如
COMP/TP1)都會被回覆 {"code": 1, "message": "Currently not support ..."}
拒絕,DocuSky 自己的前端 JS 也還沒接上這個功能的 UI。先留著這個工具,等 DocuSky
補完後不用再改 client 端。
word_cloud 不自己統計也不自己查詢,它只負責把已經有的數字畫出來:
tag_analysis 的標記次數、post_classification 的分布(value / docCount)、
或 Claude 從 get_document 全文自行數出來的詞頻,傳成
{"針灸": 120, "湯液": 48} 這種 term → 次數的對照表即可。
這個工具包的是 DocuSky 的
WordCloudLite。
讀過它的原始碼(2026-09-12)後確定,它只吃兩個 URL 參數:url=<某個.csv> 和
data=<詞,值;詞,值;...>。其餘設定(標題、背景色、隱藏控制列……)只能透過
postMessage 傳,而它的 handler 會擋掉所有非 docusky.org.tw 的 origin,內嵌用的
沙箱 iframe 過不了這關;url= 又需要一個公開可讀的 CSV,stdio MCP server 沒地方放。
所以走 data=。實作上有兩個坑,都已實測確認:
data=傳進去的值在頁面裡仍然是字串(它的 parser 只做v.split(',')), 但畫圖那段用的是d3.max(data, d => d.value),而 d3 v5 對字串是字典序比較。 像 100 / 90 / 9 這組,最大值會變成"9",所有字級跟著爆掉,畫面全白。 解法是把每個值補零到同樣位數("090" < "100"),字典序就跟數值序一致, 後面的d.value / maxValue對補零字串也算得出正確比例。DocuSky 的 Apache 對 ~15 KB 的網址回 200、~24 KB 回 414,所以產生的網址會從 最小的詞開始砍,砍到長度安全為止。
另外 WordCloudLite 在詞數多的時候會刻意隨機取樣一部分來畫(見它的
plotWordCloud),所以想讓每個詞都出現,大約傳 20–40 個詞最穩。
docugis_map 同樣不查詢、不做地理編碼:座標要由呼叫端給(使用者提供、
search_documents 的 placeInfo、地名資料庫,或 Claude 自己確定知道的地點),
不確定的地點就不要編——寧可留空或問使用者。它把 rows 整理成 DocuGIS2 匯入用的
TSV(id name x y date text 加上任何額外欄位,x 是 WGS84 經度、y 是緯度),
回傳 tsv 與 webUrl。
DocuGIS2 的匯入器比想像中挑(2026-09-12 逐項實測,細節寫在 docusky_mcp/ui.py
的註解裡):date 欄只要有一格是空的或只寫年份(1887),那一列就會被整列丟掉,
但整個 date 欄不存在時每一列都進得去。所以 build_docugis_tsv 會把純年份補成
YYYY-01,而且在只有部分資料有日期時預設不輸出 date 欄(地圖完整、沒有時間
軸),要時間軸就傳 include_dates=true,代價是沒日期的那幾列不會出現。1887-01、
1887/1/1、18870101、-0200-01-01(西元前)都吃得下。
DocuGIS2 也是這個專案裡唯一不能用網址餵資料的 DocuSky 工具:它 56 支
script 沒有一支讀 location.search,也沒有註冊 message 監聽器,所以
WordCloudLite 那套 ?data= 在這裡完全不成立(它認得的 index.html?f=<id> 要先把
資料寫進一個共用的公開帳號、資料就此公開,所以刻意不用)。剩下能走的就是它的貼上
框,這也是為什麼地圖的 ui:// 資源是另一份 HTML(DOCUGIS_HTML)。
search_documents、post_classification、tag_analysis 這三個工具,在
target="OPEN" 時回傳的 JSON 裡多了一個 webUrl 欄位,指向
docusky.org.tw 上對應的查詢頁(webApi/webpage-open-3in1.php,用
spType 切換成一般搜尋 / 分布統計 / 標記分析檢視)。支援 MCP Apps
(docusky_mcp/ui.py)的 client 會把這個 URL 用一個沒有外部依賴、手刻
postMessage 協定的小型 ui:// 資源嵌成 iframe 顯示;不支援的 client
就只是多一個可以忽略或當連結用的欄位,行為與加這個功能前完全一樣。word_cloud
回傳的 webUrl 走的是同一個 ui:// 資源與同一條 CSP(frameDomains
已經涵蓋 docusky.org.tw)。
手刻那份 postMessage 有三個地方是照著 ext-apps 的 schema 與實測結果來的
(都寫在 docusky_mcp/ui.py 的模組 docstring 裡):
ui/initialize的 params 三個欄位都是必填:appInfo、appCapabilities、protocolVersion。0.3.0 只送了appCapabilities,會驗證 params 的 host 會直接擋掉交握,結果就是什麼都不顯示——0.3.1 修好了這點。DocuSky 內建的頁碼是整頁跳轉,在沙箱 iframe 裡會翻成空白,所以翻頁改成由 工具列把
&page=N直接設進 iframe 的src(這條路實測可行)。內嵌畫面預設高度太矮,所以會用
ui/notifications/size-changed要 720px, 並用ui/request-display-mode提供全螢幕切換。
驗證方式是照 ext-apps 的 examples/basic-host(外層 proxy iframe + 內層
sandbox iframe 的雙層架構)架一個假 host,對真正的 docusky.org.tw 跑過
allow-scripts allow-same-origin allow-forms 與只有 allow-scripts 兩種沙箱。
target="USER" 時 webUrl 會是 null——DocuSky 用伺服器端的 session
cookie 認證私人資料庫,內嵌用的瀏覽器分頁沒有那個 cookie,硬塞連結只會顯示
「未登入」,所以私人查詢乾脆不給這個欄位。
注意事項
本專案使用 DocuSky 的 Web API(
docusky.org.tw/DocuSky/webApi/)。該 API 沒有公開文件也沒有版本號,DocuSky 改版時可能需要跟著更新。部分端點會在 JSON 前面夾帶 PHP 警告訊息,client 有做容錯。
命中數是文件數,不是詞頻。
少數資料庫的「分類」欄位在 DocuSky 端本身就是亂碼,不要據以推論。
部分資料庫仍在建構中,查不到內容是正常的。
請遵守 DocuSky 服務與使用規範,並節制查詢頻率。
Available Tools
10 toolscheck_loginA
Report whether DocuSky credentials are configured and whether they work.
Public databases need no login; run this only when private ("USER") databases are unreachable.
Inputs: no named parameters. Returns: result
docugis_mapA
Put places on a map in DocuSky's own DocuGIS2 tool.
Takes coordinates you already have — from the user, from a placeInfo in
search_documents, from a gazetteer, or from your own knowledge of where a
place is — and returns the TSV that DocuGIS2's import box accepts. This
tool does no geocoding and no searching: never invent coordinates for a
place you are unsure of; leave that row out, or ask the user.
DocuGIS2 cannot be fed data through a URL, so the last step belongs to the
user: MCP Apps-capable hosts show the TSV with a copy button next to the
embedded tool, and the user pastes it into DocuGIS2's box and presses 匯入
(the rendered map then does time filtering, routes, clustering, heatmaps
and export). Other hosts get the same TSV as text plus webUrl, to paste
into DocuGIS2 in a browser. Tell the user that paste step is theirs.
Args:
rows: One entry per place. name plus x (WGS84 longitude) and y
(latitude) are required; date, text and any other keys are
optional and become extra columns in DocuGIS2's popups. Common
aliases are understood (lng/lon/經度 -> x, lat/緯度 -> y,
地名 -> name). Example: [{"name": "鹿港", "x": 120.434,
"y": 24.057, "date": "1784-01-01", "text": "鹿港開港"}].
title: A name for this map, shown above the tool.
include_dates: Leave unset to decide automatically. DocuGIS2 drops any
row whose date cell is empty or a bare year, so a half-dated set
ships without the date column (every place on the map, no time
axis). Pass true to keep the timeline and lose the undated rows,
false to drop dates entirely.
max_rows: Keep at most this many places (default 2000).
Inputs: rows (required), title, max_rows, include_dates. Returns: result
get_documentA
Fetch the full text of one search hit, identified by its position in the result set.
result_number is the global 1-based rank of the document for this query —
the n field of a search_documents hit. Pass the same db, query, corpus and
page_size that produced it, or the ranking will not line up.
Long documents are returned in slices: raise offset by max_chars to page
through the body.
Args: db: Database title. result_number: 1-based rank of the document within the query's results. query: The same query string used in search_documents. corpus: The same corpus used in search_documents. target: "OPEN" or "USER". page_size: The same page_size used in search_documents. offset: Character offset into the document body. max_chars: Maximum characters of body text to return. include_raw_xml: Also return the untouched DocuXML content. owner_username: Owner of a friend-shared database, when applicable.
Inputs: db (required), result_number (required), query, corpus, +6 more. Returns: result
list_corporaA
List the corpora inside one database, with document counts.
Args: db: Database title, exactly as returned by list_databases. target: "OPEN" or "USER". include_friend_db: Include databases shared by friends (USER only).
Inputs: db (required), target, include_friend_db. Returns: result
list_databasesA
List DocuSky databases available to this server.
Args: target: "OPEN" for public databases, "USER" for the logged-in account's own. include_friend_db: Also list databases shared by DocuSky "friends" (USER only).
Inputs: target, include_friend_db. Returns: result
post_classificationA
Break a query's hits down by DocuSky's post-classification facets.
Returns, per facet (corpus, period, place, category…), a distribution of [value, document count, hit count] — the quickest way to see how a term is spread across a database. Facet codes returned here (e.g. "COMP", "TP1") are also what twodim_analysis's dim1/dim2 arguments expect.
For a public ("OPEN") database, the result also carries a webUrl to the
same breakdown on docusky.org.tw — MCP Apps-capable hosts render it inline.
Args: db: Database title. query: Search terms, or ".all" for the whole database. corpus: Corpus title, or "[ALL]". target: "OPEN" or "USER". owner_username: Owner of a friend-shared database, when applicable.
Inputs: db (required), query, corpus, target, +1 more. Returns: result
search_documentsA
Full-text search one DocuSky database; returns metadata plus a short excerpt per hit.
Full document text is deliberately omitted — call get_document with a hit's
n (and the same db/corpus/query/page_size) to read one in full.
For a public ("OPEN") database, the result also carries a webUrl to the
same search on docusky.org.tw — MCP Apps-capable hosts render it inline.
Args:
db: Database title.
query: Search terms. +term requires, -term excludes, .all matches everything.
corpus: Corpus title, or "[ALL]" for every corpus in the database.
page: 1-based page number.
page_size: Hits per page (1-100).
target: "OPEN" or "USER".
excerpt_chars: Characters of body text to preview per hit; 0 disables excerpts.
owner_username: Owner of a friend-shared database, when applicable.
Inputs: db (required), page, query, corpus, +4 more. Returns: result
tag_analysisA
Summarize the DocuXML tags (people, places, dates, custom markup) in a query's hits.
Only meaningful for databases whose documents carry inline tagging; returns an empty result otherwise.
For a public ("OPEN") database, the result also carries a webUrl to the
same summary on docusky.org.tw — MCP Apps-capable hosts render it inline.
Args: db: Database title. query: Search terms, or ".all" for the whole database. corpus: Corpus title, or "[ALL]". target: "OPEN" or "USER". owner_username: Owner of a friend-shared database, when applicable.
Inputs: db (required), query, corpus, target, +1 more. Returns: result
twodim_analysisA
Cross-tabulate a query's hits by two DocuSky classification facets at once.
EXPERIMENTAL: DocuSky added this endpoint on 2026-01-28, but live testing
on 2026-09-11 found it rejects every dim1/dim2 pair tried so far —
including facet codes taken straight from post_classification's own
output, such as "COMP"/"TP1" — with {"code": 1, "message": "Currently not support ..."}. DocuSky's own front-end has not wired up a UI for it
yet either. Call post_classification first to see which facet codes
exist for a database, try them here, and expect DocuSky may still refuse
the combination while this feature is unfinished on their end.
Args: db: Database title. dim1: First classification facet code (a key from post_classification's "facets", e.g. "COMP" or "TP1"). dim2: Second classification facet code to cross with the first. query: Search terms, or ".all" for the whole database. corpus: Corpus title, or "[ALL]". target: "OPEN" or "USER". owner_username: Owner of a friend-shared database, when applicable.
Inputs: db (required), dim1 (required), dim2 (required), query, +3 more. Returns: result
word_cloudA
Draw a word cloud of term frequencies in DocuSky's own WordCloudLite tool.
Takes numbers you already have and turns them into a DocuSky visualization:
tag counts from tag_analysis, a facet distribution from post_classification
(its value / docCount pairs), or terms you counted yourself in text from
get_document. This tool does no counting and no searching of its own.
Returns a webUrl to the rendered cloud — MCP Apps-capable hosts show it
inline, other hosts can offer it as a link. The rendered page also has
buttons for bubble, top-10 bar and table views of the same data, plus Save.
WordCloudLite draws a random subset of a large term list, so pass roughly 20-40 terms when every word should appear.
Args: terms: Term -> weight, e.g. {"針灸": 120, "湯液": 48}. Weights must be positive; non-integers are rescaled proportionally. Commas and semicolons in a term are replaced with spaces (the tool's URL format uses them as separators). max_terms: Keep at most this many of the heaviest terms (default 150). A very long list is also trimmed further to fit DocuSky's URL limit.
Inputs: terms (required), max_terms. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 10 tools
Tools target distinct actions (search, get, list, analyze, map, login) with clear boundaries. Minor potential confusion between post_classification and twodim_analysis, but descriptions clarify their different purposes (facet breakdown vs. cross-tabulation).
All names follow a consistent verb_noun pattern (e.g., search_documents, get_document, list_databases, post_classification, twodim_analysis). No deviations in casing or style.
10 tools is a well-scoped set for a document search and analysis server, covering search, retrieval, metadata listing, analysis, visualization, mapping, and login without redundancy.
Core lifecycle is covered: list databases/corpora, search, retrieve full text, analyze facets/tags, visualize, map, and check login. Missing direct document export or bulk operations, but agents can work around these gaps.
Maintenance
Related MCP Connectors
Search, read and cite documents. Add, replace and delete files with write access. OAuth required.
Agentic search over your Dewey document collections from any MCP-compatible client.
Docsy gives AI assistants current, version-specific documentation for libraries, frameworks and SDKs. Resolve library IDs and versions, then search and fetch focused official documentation with original source links using five read-only MCP tools. Hosted Streamable HTTP with OAuth 2.1 sign-in.
Search, read, and automate TextMine documents, records, workflows, integrations, and agent tasks.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables searching and retrieving detailed document content from the Yuque platform through its API. It allows AI models to search for documentation and knowledge bases by keywords and access specific document details.2675 npm2MIT
- AlicenseBqualityCmaintenanceEnables Claude to interact with a private WizNote server for document management, including creating, reading, searching, and updating notes.65MIT
- AlicenseNot gradedqualityDmaintenanceConnects Claude to a self-hosted Paperless-ngx document archive, enabling natural language search, retrieval, and taxonomy browsing of documents.MIT
- AlicenseNot gradedqualityBmaintenanceEnables Claude to query a locally imported collection of PDF, TXT, and MD files via SQLite FTS5 full-text search (including Chinese), and to browse notebooks, source files, and individual passages. Every search result carries traceable citations such as filename, page number, line number, or timestamp.MIT