list_archivesLABSCO SUMMARY
Answers from the docs you built, not from training data.
For a Swift package that changed last week, that distinction is the whole point — the archive on disk is current and a model's memory is not. Pointing it at your own package's generated documentation is the case where it earns the most, because there is no public source for an assistant to have learned from. Note the search caps: on a very large archive a broad query is sampling rather than exhausting it, so narrow by archive and symbol kind when precision matters.
What it is
An MCP server over DocC, the documentation format Xcode and Swift-DocC produce. It reads archives already on your machine, so an assistant answers from the documentation for the exact version you have built rather than from whatever was in its training data.
What you get
- The archives it can see, with their metadata, so you know what is actually indexed —
list_archives - Search across all of them by query, narrowable to one archive and filtered by symbol kind — class, struct, enum, protocol and the rest —
search_docc - One symbol's full record by its documentation id, including declaration with syntax highlighting, abstract, references and platform availability —
get_symbol - Articles and tutorials as their own lookup, since DocC archives carry prose alongside symbols —
get_article - Structural browsing: walk an archive's hierarchy by path instead of guessing at symbol ids —
browse_archive - Caching of archives and symbols for repeated access, with archives loaded on demand rather than all at once
Requirements
No account and no key — everything is local. Node.js: clone, npm install, npm run build. At least one --archive-path argument must be given or the server exits with an error; the flag can be repeated to cover several directories, so Xcode's derived data and a couple of Swift package documentation folders can all be indexed at once. Archives come from swift package generate-documentation or Xcode's Build Documentation. The package is docc-mcp (1.0.0 in package.json). Two performance limits worth knowing: results are capped at 50 per query, and search reads at most 100 files per archive.
Setup effort
Build from source — git clone https://github.com/angelodipaolo/docc-mcp.git
USE CASES
Working with a framework whose API you half remember
Search by concept rather than exact name, filter to the symbol kind you expect, and open the one that matches.
Getting help on your own package
Generate documentation for the target, point the server at the archive, and let an assistant answer from it — no public docs required.
Checking whether an API is available on your deployment target
Open the symbol and read the platform availability alongside the declaration, instead of guessing from the name.
Exploring an unfamiliar module
Walk the archive structure by path to see how the module is organised before drilling into individual types.
5 tools
Listed in project docs. Your client may show a different list.
search_doccget_symbolget_articlebrowse_archiveBEFORE YOU INSTALL
What to know first
Tools you get
5 tools named in the project's documentation.
INSTALLATION
Connect your client
You clone and build this one yourself.
Server setup
From source
git clone https://github.com/angelodipaolo/docc-mcp.git
cd docc-mcp
npm install
npm run buildConfiguration file
{
"mcpServers": {
"docc": {
"command": "node",
"args": [
"<YOUR_PATH_TO_DOCC_MCP>/dist/index.js",
"--archive-path",
"<YOUR_PATH_TO_DOCC_ARCHIVES>",
"--archive-path",
"~/Documents/Xcode/DerivedData"
]
}
}
}