Repository navigation
Conversation
|
@codex review |
There was a problem hiding this comment.
🟢 Approval recommended
No blocking issues were identified in access checks, download safeguards, MCP integration, or regression coverage.
No open issues 🎉
What changed in this PR
Adds event-comment image reading to TimeTree MCP, allowing clients to receive images directly without shared filesystem access.
Changes:
- Adds comment image metadata and the read-only
get_event_comment_imagetool. - Restricts downloads to TimeTree’s attachment host with size limits, timeouts, and no authentication material.
- Updates tests, extension registration, and multilingual documentation.
| File | Description |
|---|---|
| tests/tools.test.mjs | Checks new tool registration. |
| tests/tool-metadata.test.mjs | Adds image-tool output validation. |
| tests/comment-images.test.mjs | Covers retrieval, safeguards, and MCP results. |
| src/utils/comment-image.ts | Implements bounded image downloads and format detection. |
| src/types/timetree.ts | Defines comment image metadata. |
| src/tools/index.ts | Registers the tool and supports mixed content. |
| src/tools/comment-tools.ts | Exposes image metadata and retrieval. |
| src/config/config.ts | Defines the attachment host. |
| src/client/api.ts | Resolves images through current event comments. |
| README.md | Documents image support in English. |
| README.ko.md | Documents image support in Korean. |
| README.ja.md | Documents image support in Japanese. |
| mcpb/manifest.json | Registers the extension’s image tool. |
| docs/FEATURE_CANDIDATES.md | Distinguishes supported reading from future uploads. |
| COMMANDS.md | Documents parameters, results, and limits. |
| CHANGELOG.md | Records the new image capabilities. |
Review effort: Balanced
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Codex Review: Didn't find any major issues. Delightful! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Pull Request
Description
Images attached to event comments are currently unavailable to MCP clients, and image-only comments appear empty.
This adds image metadata to comment results and a read-only tool to retrieve individual images as standard MCP image content over stdio. Images posted by free accounts are supported, without requiring shared filesystem access between the server and client.
Type of Change
Related Issue
None.
Changes Made
get_event_comment_imageto return one selected image with structured metadata and an MCP image content block.Testing
npm run verifypassesnpm run build:mcpbpassesAll 120 automated tests pass on Node.js 22.23.3 and 24.13.0. The 14 new image tests cover image selection, access failures, MCP output shape, format detection, size limits, download timeouts, and safe error responses.
Both the normal build and the extension bundle were checked over stdio on both Node versions using mocked HTTP responses: initialization, tool listing, image transfer, and invalid input handling. Automated tests do not call TimeTree.
Live verification retrieved all 33 images described below through MCP and confirmed their case IDs and expected Japanese date/time and item text in Codex. Decoded byte counts, image formats, dimensions, and SHA-256 hashes were also checked.
Test Environment
Screenshots (if applicable)
Not applicable. Downloaded images and local validation artifacts are not included in this PR.
Documentation
[Unreleased]Checklist
Breaking Changes
None. Existing comment results gain an
imagesarray. No client configuration changes are required.Additional Notes
Live observations from iOS uploads
Synthetic images were posted to three test events through the TimeTree iOS app, then retrieved through MCP.
.jpgand.jpeg), PNG, GIF, WebP, HEIC, HEIF, AVIF, BMP, and TIFF, including transparent PNG and animated GIF.null, so the original filenames and extensions were not available through the comment metadata.The MCP server does not convert or resize images. These transformations occurred before MCP retrieval. The tests did not isolate whether conversion happened in the iOS photo library, the app, or TimeTree's backend.
Scope and limits