vlad.build

Project: Getting Claude to work with Street View (MCP)

The project

I built an MCP connector that allows Claude to look up and see Street View images.

Through this connector Claude can:

To try it yourself, check the instructions in the README.

I wanted to explore building an MCP connector that would give Claude image retrieval and viewing capabilities. Since I couldn't find an existing Street View connector, I created one.

Claude shows emergent abilities

Modern language models demonstrate remarkable capabilities when connected to external tools. Their general world knowledge combined with their ability to iterate on tool usage make them a form of proto-AGI (I know this is controversial).

For this project, I simply connected Claude to the Street View static image API via MCP. Claude immediately began using it effectively, leveraging the metadata endpoint to locate panoramas and adjusting views until finding optimal angles.

Here's an example where Claude searches for a specific Berlin restaurant. It iteratively adjusted the panorama until the restaurant was in sight:

ruyam_prompt

The sequence of images shows Claude's process:

ruyam_sequence

Notice how it rotated the view until capturing the full restaurant facade.

Technical notes

Building this MCP image server taught me several lessons. I created a lightweight wrapper for the Street View static API, then exposed it as an MCP using FastMCP, similar to my previous project.

FastMCP allows direct image byte transmission to the MCP client:

from fastmcp import FastMCP, Image
return Image(data=img_bytes, format="jpeg")

In the Claude desktop client, the returned image is visible to the user inside the tool call collapsible, but only after Claude has completed its response. The image is also visible to Claude.

This is good enough, but how can we enable Claude to open this image on our computer, move it around or embed it in a webpage?

I tried asking Claude to copy the image directly to a file, but this doesn't work. It sees the image but can't manipulate it directly.

Here's how I solved it:

This gives us both capabilities: Claude will be able to both see an image and manipulate it locally as a file.

Repository

https://github.com/vlad-ds/street-view-mcp