Skip to content

Add tool annotations to server-fetch (1 tool, 0 annotated) #3572

Description

@olaservo

Request: Add tool annotations — @modelcontextprotocol/server-fetch

Context

The fetch server currently provides zero annotations on its 1 tool. For reference, @modelcontextprotocol/server-filesystem annotates all 14 of its tools with readOnlyHint, destructiveHint, and idempotentHint. We're requesting the same treatment here.

Current state — 0/1 tools annotated

# Tool readOnlyHint destructiveHint idempotentHint openWorldHint
1 fetch — — — —

Suggested annotations

# Tool readOnlyHint destructiveHint idempotentHint openWorldHint
1 fetch true false true true

Rationale

fetch → readOnlyHint: true, idempotentHint: true, openWorldHint: true
This tool fetches a URL via HTTP GET and returns the content as markdown. It does not modify any data on the target server or locally. It is idempotent — fetching the same URL twice returns the same result (modulo server-side changes). It is open-world because it makes outbound HTTP requests to arbitrary URLs on the internet.

openWorldHint: true is particularly important here. The fetch tool can reach any URL, making it a key vector in multi-server setups where an agent could chain a read from a local tool (e.g. read_graph from the memory server) into an outbound fetch to exfiltrate data. Accurate annotations help clients enforce "allow reads, gate sends" policies.

Impact

This is a ~5 line metadata addition to the single tool registration. No behavior changes. The server-filesystem already sets the precedent for annotation coverage across reference servers.

Activity

  1. piyushbag commented on Jun 28, 2026

    @piyushbag

    I opened a PR for this on current main.

    Scope is fetch-only (no time/everything changes): ToolAnnotations on the fetch tool per the table in this issue, plus a short README annotation table matching the filesystem server docs.

    Local gate:

    cd src/fetch && uv run pytest -q
    cd src/fetch && uv run ruff check src tests
    
  2. added
    enhancementNew feature or request
    server-fetchReference implementation for the Fetch MCP server - src/fetch
    on Oct 10, 2026
  3. self-assigned this
    on Oct 10, 2026
  4. added this to the v1.0.0 milestone on Oct 10, 2026
  5. cliffhall commented on Oct 10, 2026

    @cliffhall
    Member

    Picked up for v1.0.0 (#5080): Copilot flagged the missing annotations on the release PR #5090, and AGENTS.md requires them on every tool that changes (fetch changed in this milestone, #1624, #4838). The values are the ones proposed here (readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true), fixed on v2/main and on the release branch. Thanks to @olaservo for the request, and to @nielskaspers (#3580), @Chelebii (#3876) and @piyushbag (#4428) for the PRs that proposed the same change; under this repository's contribution policy those PRs will be closed with a pointer here once the fix merges.

  6. linked a pull request that will close this issuefix(fetch): annotate the fetch tool #5112on Oct 10, 2026
  7. cliffhall commented on Oct 11, 2026

    @cliffhall
    Member

    Fixed on v2/main by #5112 and on the release branch v2/release/1.0.0 by #5113: the fetch tool now declares readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true. Ships in v1.0.0. Thanks again, @olaservo.

  8. added a commit that references this issue on Oct 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requestserver-fetchReference implementation for the Fetch MCP server - src/fetchv2

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions