A free, remote Model Context Protocol server for vibe search over 3,002 historic annual-report covers (1945–2023). Paste a URL — or click Add to Cursor.
Search designed and built by @rachpradhan.
The Add to Cursor button opens a deeplink. If nothing happens, copy the JSON into ~/.cursor/mcp.json.
Streamable HTTP. Public — no API key on the client. Search is embedded on our side.
https://annualreport.gallery/api/mcp
The Model Context Protocol is an open standard that lets AI apps connect to tools and data. Think of it as a USB-C port for agents — Cursor, Claude, and others speak the same protocol.
This server is remote and unauthenticated. Point a client at the URL above and it can search covers, fetch a record, or find nearest neighbors in the image+caption embedding space.
Resource cover://{id} · prompt copy_for_ai.
The field name for the server URL depends on the client. Devin Desktop uses serverUrl; Cursor and most others use url. The wrong key is silently ignored.
{
"mcpServers": {
"annual-report-archive": {
"url": "https://annualreport.gallery/api/mcp"
}
}
}
Drop that in ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (this repo). Or use Add to Cursor.
claude mcp add -s user -t http annual-report-archive https://annualreport.gallery/api/mcp
Then ask Claude to search covers by vibe, company, or what’s pictured.
{
"mcpServers": {
"annual-report-archive": {
"url": "https://annualreport.gallery/api/mcp"
}
}
}
Same url field as Cursor. Some clients want "type": "http" next to the URL — add it if the server does not appear.
{
"mcpServers": {
"annual-report-archive": {
"serverUrl": "https://annualreport.gallery/api/mcp"
}
}
}
Devin uses serverUrl, not url.
Streamable HTTP at /api/mcp. That is the current MCP transport and what Cursor, Claude, and Cloudflare expect.
No SSE fallback is published. Clients should POST JSON-RPC with Accept: application/json, text/event-stream.