Setup
Register with Claude Code:
claude mcp add icf -- npx -y icfmcp /path/to/knowledge
Or in Claude Desktop's claude_desktop_config.json:
{
"mcpServers": {
"icf": {
"command": "npx",
"args": ["-y", "icfmcp", "/path/to/knowledge"]
}
}
}
Arguments are one or more .icf files and/or directories (scanned recursively for *.icf).
What data is exposed — and to whom
- Local only. The server runs on your machine and speaks MCP over stdin/stdout to the client that launched it. It makes no network calls; your data never leaves the machine unless your AI client sends retrieved content to a model — the same trust decision as any MCP server.
- Only what you point it at. It reads exactly the files and directories given on the command line — nothing else.
- ICX is optional. When a sibling
.icxindex exists it is used directly; otherwise an index (tags, summaries, byte ranges) is generated in memory with icf.js. Plain.icffiles work out of the box.
Tools
| Tool | What it does |
|---|---|
list_documents | Registry overview — name, record count, schema ids, tag count, whether the index came from a .icx or was generated. |
list_tags | All tags with record counts, most frequent first. |
search_by_tag | Records carrying a tag (exact or substring match) with summary and byte range. |
get_summaries | recordId → one-line summary, optionally filtered by tag — cheap triage before reading records. |
search_text | Case-insensitive full-text search over record blocks, with line numbers. |
get_record | One record in full: resolved JSON, attributes, index row and raw ICF text; master references resolved. |
validate_document | Errors and warnings from the ICF validator, for a served document or inline ICF text. |
Why ICF + ICX works well for AI harnesses
The ICX 1.2 index carries Tags and one-line Summary fields per record, so a harness can triage an entire archive from the index alone — then fetch only the matching records by byte range instead of reading whole files into context. icfmcp packages that flow as MCP tools.
Any MCP-capable client can use the server — Claude Code and Claude Desktop are the tested configurations.