Give postulo-mcp the Model Context Protocol logo — but it has no plugin tile to put it on #2

Open
opened 2026-09-12 09:58:26 +00:00 by tiagoagueda · 0 comments
Owner

What was asked

postulo-mcp should carry the Model Context Protocol's logo, the way every plugin carries one
on Postulo's plugins page.

Three things are in the way, and the first is the one that decides the rest

1. postulo-mcp is not loaded by Postulo, so it has no tile

Postulo finds plugins through entry points — postulo-paperless declares

[project.entry-points."postulo.stores"]
paperless = "postulo_paperless.store:PaperlessStore"

postulo-mcp declares none. It is not installed into an instance, it is installed beside
the agent (uv tool install), and Postulo never imports it. There is no manifest, no row on
the plugins page, and therefore nowhere a plugin logo could be shown. plugins/logos.py
reads the image out of the installed plugin's package; there is no package to read.

This is the same boundary as postulo/postulo#1's first section: postulo-mcp is official and
maintained, and it is deliberately not a plugin in the sense the plugins page means. The
logo request is reasonable; the place it was aimed at does not exist for this repository.

2. Where it can go instead

  • The Forgejo repository avatar. This is the closest thing to "the icon for this
    project", and it is what somebody sees when they find the repository.
  • The README, at the top, which is what somebody sees when they are deciding to install.
  • Whatever Postulo eventually says about postulo-mcp. docs/PLAN.md already names it;
    if the plugins page or a settings page ever mentions companion tools it does not host,
    that is a core change with its own question about showing marks it does not control.
  • Not a plugin tile, unless the decision in postulo/postulo#1 is reversed and this becomes
    something installed into an instance.

3. The mark belongs to somebody, and it is not us

MODEL CONTEXT PROTOCOL is a registered trademark, №8025467, owned by LF PROJECTS, LLC —
registered 11 November 2025. The protocol sits under the Linux Foundation, and LF projects
publish trademark policies that generally permit nominative use — saying truthfully that
something works with the protocol — while restricting use of a logo as the identity of a
product that is not the project.

That distinction is exactly the line this request sits on:

  • "postulo-mcp speaks the Model Context Protocol", with the mark used to say so — ordinary
    nominative use, and almost certainly fine.
  • The MCP logo as postulo-mcp's own icon, standing in a list beside Paperless's and
    Apprise's logos as though it were this project's mark — the reading a trademark policy
    exists to prevent, because it suggests the protocol endorses or publishes this tool.

Read LF's actual policy for the project before shipping the mark, rather than inferring
from the fact that the logo is downloadable. If it does not permit this use, an original icon
that alludes to the protocol without reproducing the mark does the job and belongs to us.

Whatever is chosen gets a NOTICE recording where the file came from and under what terms —
the same way assets/support/NOTICE.txt does in core for the support button.

If a logo is shipped, the format is already decided

plugins/logos.py in core, from #106, and worth following even outside a plugin tile so the
same file works if this ever becomes one:

  • Raster only. SVG is refused on purpose: "SVG is the format logos usually arrive in"
    and it can carry scripts, and a direct visit is not the <img> context where a browser
    refuses to run them. The MCP logo is published as SVG, so it has to be rasterised.
  • 2 MB ceiling, decoded and written out again as PNG, square, at the size the other
    tiles use.
  • It lives inside the package, named by logo on the manifest — not a static file
    (plugins install after collectstatic) and not a URL (img-src 'self').

Worth knowing: no official plugin ships a logo yet

Not paperless, imap, apprise, dav or helloworld. The field and the machinery exist — the
manifest's own docstring says the field is there "so that shipping one is a matter of
pointing at an image rather than of inventing somewhere to put it"
— and nobody has pointed
at one. So "every plugin bears its own icon" is the design, not yet the state. That gap is
real and belongs to those four repositories, not to this one.

## What was asked postulo-mcp should carry the Model Context Protocol's logo, the way every plugin carries one on Postulo's plugins page. ## Three things are in the way, and the first is the one that decides the rest ### 1. postulo-mcp is not loaded by Postulo, so it has no tile Postulo finds plugins through entry points — `postulo-paperless` declares [project.entry-points."postulo.stores"] paperless = "postulo_paperless.store:PaperlessStore" **postulo-mcp declares none.** It is not installed into an instance, it is installed beside the agent (`uv tool install`), and Postulo never imports it. There is no manifest, no row on the plugins page, and therefore nowhere a plugin logo could be shown. `plugins/logos.py` reads the image *out of the installed plugin's package*; there is no package to read. This is the same boundary as postulo/postulo#1's first section: postulo-mcp is official and maintained, and it is deliberately not a plugin in the sense the plugins page means. The logo request is reasonable; the *place* it was aimed at does not exist for this repository. ### 2. Where it can go instead - **The Forgejo repository avatar.** This is the closest thing to "the icon for this project", and it is what somebody sees when they find the repository. - **The README**, at the top, which is what somebody sees when they are deciding to install. - **Whatever Postulo eventually says about postulo-mcp.** `docs/PLAN.md` already names it; if the plugins page or a settings page ever *mentions* companion tools it does not host, that is a core change with its own question about showing marks it does not control. - Not a plugin tile, unless the decision in postulo/postulo#1 is reversed and this becomes something installed into an instance. ### 3. The mark belongs to somebody, and it is not us **MODEL CONTEXT PROTOCOL is a registered trademark, №8025467, owned by LF PROJECTS, LLC** — registered 11 November 2025. The protocol sits under the Linux Foundation, and LF projects publish trademark policies that generally permit *nominative* use — saying truthfully that something works with the protocol — while restricting use of a logo as the identity of a product that is not the project. That distinction is exactly the line this request sits on: - *"postulo-mcp speaks the Model Context Protocol"*, with the mark used to say so — ordinary nominative use, and almost certainly fine. - *The MCP logo as postulo-mcp's own icon*, standing in a list beside Paperless's and Apprise's logos as though it were this project's mark — the reading a trademark policy exists to prevent, because it suggests the protocol endorses or publishes this tool. **Read LF's actual policy for the project before shipping the mark**, rather than inferring from the fact that the logo is downloadable. If it does not permit this use, an original icon that alludes to the protocol without reproducing the mark does the job and belongs to us. Whatever is chosen gets a `NOTICE` recording where the file came from and under what terms — the same way `assets/support/NOTICE.txt` does in core for the support button. ## If a logo is shipped, the format is already decided `plugins/logos.py` in core, from #106, and worth following even outside a plugin tile so the same file works if this ever becomes one: - **Raster only.** SVG is refused on purpose: *"SVG is the format logos usually arrive in"* and it can carry scripts, and a direct visit is not the `<img>` context where a browser refuses to run them. The MCP logo is published as SVG, so it has to be rasterised. - **2 MB ceiling**, decoded and written out again as PNG, square, at the size the other tiles use. - It lives **inside the package**, named by `logo` on the manifest — not a static file (plugins install after `collectstatic`) and not a URL (`img-src 'self'`). ## Worth knowing: no official plugin ships a logo yet Not paperless, imap, apprise, dav or helloworld. The field and the machinery exist — the manifest's own docstring says the field is there *"so that shipping one is a matter of pointing at an image rather than of inventing somewhere to put it"* — and nobody has pointed at one. So "every plugin bears its own icon" is the design, not yet the state. That gap is real and belongs to those four repositories, not to this one.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Postulo/postulo-mcp#2
No description provided.