Atlas / MCP servers / u9401066 / asset-aware-mcp

asset-aware-mcpCAUTION

mcp/u9401066/asset-aware-mcp

Agent document collaboration: versioned PDF pages/annotations/forms, raster frames, DOCX/PPTX, spreadsheets and CSV/TSV, with checked edits, source provenance, CSL citations and wikilink evidence libraries

Verdict
CAUTION
Grade
C
Trust score
74 /100
Exposed tools
61 52r · 7w · 2d
Transport
stdio
License
Apache-2.0
Stars
0
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

Citation-ready document infrastructure for AI agents: editable native documents, reusable evidence, and portable Foam/LightRAG wikis.

[](https://opensource.org/licenses/Apache-2.0)

🌐 繁體中文 · Docs Site · GitHub Wiki

v1.4.1 Consolidated native-document release

This release brings together the document and evidence work below. We keep the 1.4.x line and consolidate verified changes instead of releasing each feature. Check GitHub Releases for publication status and the changelog for details.

Discover the installed runtime's complete contract and enabled flags before acting. Since v1.4.0, native-contract-v2 can page schemas: inspect schema_delivery, select for_op, or follow the hash-pinned schema_request. Follow contract_request for paged policies too; abbrev

Read from source at commit a0ad6eb4e1d4OBSERVED · 2026-10-12
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.

claude-code
claude mcp add asset-aware-mcp -- npx -y [email protected]
claude-desktop
{
  "mcpServers": {
    "asset-aware-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ]
    }
  }
}
03

Exposed tools (61)

52 read · 7 write · 2 destructive. Blast radius: 2 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
cancel_jobread
citation_bundleread
consult_knowledge_graphread
convert_documentread
convert_docx_to_docread
convert_docx_to_odtread
convert_docx_to_pdfread
convert_pdf_to_docxread
convert_pdf_to_pptxread
delete_documentdestructive
delete_docxdestructive
detect_etl_profileread
discover_sourcesread
document_assetreadConsolidated document asset and section entrypoint.
docxread
docx_chart_dataread
docx_tableread
docx_table_edit_planwrite
docx_table_from_contextread
docx_table_to_contextread
docx_validate_roundtripread
etl_profileread
export_document_segmentationwrite匯出整合 manifest、blocks、assets、reading order 的 segmentation schema。
export_knowledge_graphread
export_markdownread
fetch_document_assetread
find_evidence_spansread
get_current_etl_profileread
get_docx_contentread
get_etl_profileread
get_job_statusread
get_section_blocksread
get_section_contentread
get_section_detailread
ingest_documentsread
ingest_docxread
inspect_document_manifestread
jobread
knowledgeread
list_documentsread
list_docx_blocksread
list_docx_documentsread
list_etl_profilesread
list_jobsread
list_section_treeread
load_etl_profile_from_jsonread
ocr_pdf_documentwriteCreate a background OCR ingest job instead of blocking the MCP request.
parse_pdf_structurewriteCreate a background job using the configured structured PDF extractor.
plan_tableread
save_docxwrite
search_sectionsread
search_source_locationread
sectionreadConsolidated section navigation entrypoint.
set_etl_profilewrite
table_citeread
table_dataread
table_draftread
table_historyread
table_manageread
verify_citation_refreadVerify a span-level AssetRef against the persisted citation index.
visualize_document_layoutwrite產生 PDF page overlay,直接檢查 block bbox、類型與 reading order。
04

Trust audit

CAUTIONgrade C · trust 74/100 Install with care. The audit found things worth knowing before you trust its output.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (6 observation(s))
Network
declared (8 observation(s))
Shell
declared (1 observation(s))
Dependencies
not all pinned
Secrets in source
none-found

Findings (25)

MEDIUMCode injection · code.dynamic_import · CWE-78, CWE-94, CWE-95
src/presentation/diagnostics.py:45
__import__(module_name, fromlist=["*"])
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
src/infrastructure/csl_resources/citeproc.js:2882
this.sys.print(INDENT + "---> Token: " + token.name + " (" + token.tokentype + ") in " + this.tmp.area + ", " + this.output.current.mystack.length);
MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
delete_document, delete_docx
Why it matters. 2 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWInventory / provenance · inv.hidden_file · CWE-1104
.clineignore
.clineignore
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.pre-commit-config.yaml
.pre-commit-config.yaml
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
docs/.nojekyll
.nojekyll
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
vscode-extension/.vscodeignore
.vscodeignore
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInsecure crypto · crypto.weak_random · CWE-327, CWE-338
tests/unit/test_native_delimited.py:134
randomizer = random.Random(243)  # noqa: S311 -- reproducible non-secret fixture
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tests/unit/test_native_docx_render.py:114
("missing.png" if fault == "missing" else "../../../../outside.png"),
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
vscode-extension/src/test/runTest.ts:11
const extensionDevelopmentPath = path.resolve(__dirname, '../../');
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
vscode-extension/src/test/unit/assistantAssets.test.ts:7
import { installAssistantAssets } from '../../assistantAssets';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
vscode-extension/src/test/unit/clineMcpConfig.test.ts:6
import { installClineMcpServer, isClineInstalled, removeClineMcpServer } from '../../clineMcpConfig';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
vscode-extension/src/test/unit/codexMcpConfig.test.ts:13
} from '../../codexMcpConfig';
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
memory-bank/activeContext.md:5979
http://127.0.0.1:8876/#/native-file-assets and release-testing, desktop 1440x1000 and
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
vscode-extension/src/test/unit/codexMcpConfig.test.ts:301
assert.strictEqual(__test__.isSafeOpenRouterUrl('http://127.0.0.2:8080/v1'), true);
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
src/infrastructure/native_ods_render_source.py:225
binary = base64.b64decode(
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
tests/codex_csl/audit.py:192
raw = base64.b64decode(blocks[0]["data"], validate=True)
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
tests/codex_delimited/audit.py:215
base64.b64decode(images[0]["data"], validate=True),
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
tests/codex_docx_structure/renders.py:116
png = base64.b64decode(blocks[0]["data"], validate=True)
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
tests/codex_etl_csl/audit.py:35
raw = base64.b64decode(blocks[0]["data"], validate=True)
LOWObfuscation / stealth · obf.homoglyph · CWE-506, CWE-94
tests/test_dfm.py:347
assert metadata["char_range"] == [0, len("Alpha βeta")]
LOWObfuscation / stealth · obf.homoglyph · CWE-506, CWE-94
tests/test_dfm.py:348
assert metadata["byte_range"] == [0, len("Alpha βeta".encode())]
LOWObfuscation / stealth · obf.homoglyph · CWE-506, CWE-94
tests/unit/test_codex_native_pdf_audit.py:165
for bad in ([{"Count": "003", "Unit": "μg/mL"}], [{"Count": "3", "Unit": "μg/mL"}]):
LOWObfuscation / stealth · obf.homoglyph · CWE-506, CWE-94
tests/unit/test_codex_pdf_evaluation.py:48
(2, "Unit", "μg/mL"),
LOWObfuscation / stealth · obf.homoglyph · CWE-506, CWE-94
tests/unit/test_real_pdf_corpus.py:61
("μg", "μg"),

Gates applied: no_behavioural_pass.

Audited 2026-10-12 · audit v0.4.1 · source sha a0ad6eb4e1d4full audit observations/trust-audit/mcp-server/u9401066__asset-aware-mcp.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-12a0ad6eb4e1d4CAUTIONC74first audit
06

Questions

What is the asset-aware-mcp MCP server?

Agent document collaboration: versioned PDF pages/annotations/forms, raster frames, DOCX/PPTX, spreadsheets and CSV/TSV, with checked edits, source provenance, CSL citations and wikilink evidence libraries

What tools does asset-aware-mcp expose?

61 in total: 52 read-only, 7 that write, and 2 that can delete or overwrite (delete_document, delete_docx). Every one is listed on this page with its risk.

Is asset-aware-mcp safe to connect to an agent?

With care. The audit graded it C (74/100) and found 25 things worth knowing before you trust this server, listed below with the exact line each was found on. Separately from the audit: 2 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does asset-aware-mcp need?

No credential environment variables were found in its source, so it appears to need none.

How does asset-aware-mcp run?

It speaks stdio, so it runs as a local process your client starts. It is published on npm as asset-aware-mcp at 1.4.1.

How current is this page?

The grade is for one exact copy of the source (a0ad6eb4e1d4), read on 2026-10-12. The repository is watched and re-audited when it changes.

Advertisement