Skip to content

[REMOTE] repo_file get_content returns a base64 blob with a schemeless URI; local server v2.9.0 returns plain text #1540

Description

@mskwierczynski982

This template is for Azure DevOps Remote MCP Server feedback only.

Important
Internal Microsoft users: Do NOT file issues here. Please use the internal Teams channel to share your feedback.

Issue Type

Select the option that best describes your issue.

  • Feedback on Remote MCP Server
  • Bug in Remote MCP Server
  • Tool or feature request for Remote MCP Server

Tool(s)

repo_file (action: get_content)

Description

repo_file with action: get_content on the remote server returns an EmbeddedResource
whose uri is a repo-relative path with no URI scheme (e.g. /package.json). Clients built
on the MCP Python SDK v1 reject the entire response with a pydantic ValidationError, so
file content cannot be read at all through a Python MCP client or gateway.

The local server v2.9.0 returns plain TextContent for the same file and does not have
this problem. The two implementations have diverged.

Actual response (remote)

{"type": "resource",
 "resource": {"uri": "/package.json", "mimeType": "text/plain", "blob": "e30K"}}

uri is a bare repo-relative path. Per RFC 3986 a URI requires a scheme, so this is not a
URI — which is what strict clients reject.

This was captured by talking to https://mcp.dev.azure.com/{org} directly over
Streamable HTTP with no proxy or gateway in the path
— a plain initialize
notifications/initializedtools/call handshake with an Entra bearer token. The
payload is byte-identical to what is observed through a gateway, so nothing downstream is
reshaping it.

The local server does not have this problem

Local Azure DevOps MCP Server v2.9.0, same org, repo, path and file, driven over stdio:

{"result":{"content":[{"type":"text","text":"{}\n"}]},"jsonrpc":"2.0","id":2}

Plain TextContent — no resource block, no base64, no URI. This validates under every MCP
SDK, Python included.

Side by side:

Local v2.9.0 Remote
Content type text resource
Encoding UTF-8 base64
uri none /package.json (schemeless)
Python SDK v1 client works ValidationError

The payloads carry identical content — remote's e30K base64-decodes to {}\n, byte-for-byte
what local returns. Only the envelope differs.

Metadata

Metadata

Labels

Remote 🛩️remote MCP Server question, issue, or supportRepos 📁issue in the repos area

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions