Skip to main content
Glama
Feirobot

openfilm-mcp

by Feirobot
README.md
# openfilm-mcp

An MCP server for the **[Openfilm](https://openfilm.cc/) film stock and classic camera datasets** —
68 current and classic film stocks and 60 classic cameras, published as open data under CC BY 4.0.

The data is bundled, so the six search tools work offline. Only the paid `audit_url` tool talks
to the network.

## Tools

| tool | what it does |
| --- | --- |
| `search_film_stocks` | Filter 68 stocks by text, ISO, type, grain, latitude, format, use case or price tier. |
| `get_film_stock` | One stock by id or name (`kodak-portra-400` / "Portra 400"). |
| `recommend_film` | Ranked picks for a scene (portrait, landscape, street, night, travel, studio, beginner). |
| `search_cameras` | Filter 60 bodies by text, type, mount, format or price tier. |
| `get_camera` | One camera by id or name (`nikon-fm2`). |
| `compare_films` | Two stocks side by side. |
| `audit_url` | Instant technical SEO audit of one public URL. 1 USDC. |

## Install

```bash
npx -y github:Feirobot/openfilm-mcp
```

Or clone it and run `node server.mjs`.

### Claude Desktop / Cursor / any MCP client

```json
{
  "mcpServers": {
    "openfilm": {
      "command": "npx",
      "args": ["-y", "github:Feirobot/openfilm-mcp"]
    }
  }
}
```

## Remote server

The same tools are hosted at **`https://openfilm.cc/mcp`** (Streamable HTTP, no auth, no install):

```bash
curl -s https://openfilm.cc/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  --data '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
```

## Official MCP Registry

The remote server is published in the official MCP Registry as
**`cc.openfilm/film-photography`** — search for it at
<https://registry.modelcontextprotocol.io/v0.1/servers?search=openfilm> or find it
through any client that reads the registry. The published metadata lives in
[`server.json`](./server.json).

It was published with the registry's **HTTP domain authentication** (an Ed25519 key),
which is why the name is under the `cc.openfilm` namespace rather than `io.github.*`.
The public half of the key is served at
<https://openfilm.cc/.well-known/mcp-registry-auth>.

## The data

`data.js` is a snapshot of the published datasets
([`film-stock-database.json`](https://openfilm.cc/film-stock-database.json),
[`camera-database.json`](https://openfilm.cc/camera-database.json)), version **1.0.1**.
The citable mirror with a Frictionless descriptor is
[Feirobot/film-photography-datasets](https://github.com/Feirobot/film-photography-datasets).
Schemas, provenance and citation notes: <https://openfilm.cc/en/open-data/>.

## Licence

The **code** in this repository is MIT. The **data** in `data.js` is
[CC BY 4.0](https://creativecommons.org/licenses/by/4.0/) — reuse it freely, including
commercially, with attribution to [openfilm.cc](https://openfilm.cc/).

TDQS

B3.3/5.0

Scored across 7 tools

Disambiguation4/5

The film/camera tools have clear boundaries (search vs get vs recommend vs compare), and recommend_film is distinguishable from search_film_stocks. However, audit_url is completely unrelated to the film domain and feels bolted on, which slightly muddies the set's purpose.

Naming Consistency5/5

All names follow a clean verb_noun snake_case pattern (search_film_stocks, get_film_stock, recommend_film, search_cameras, get_camera, compare_films, audit_url). Minor noun plurality differences (film_stocks vs cameras) are trivial.

Tool Count4/5

Seven tools is a well-scoped count for a reference database covering films and cameras. The lone deviation is audit_url, which does not belong to the apparent scope and inflates the set with an off-domain tool.

Completeness4/5

For a read-only film/camera reference domain, the surface covers search, lookup, recommendation, and comparison well. A minor gap is the absence of a camera comparison or similar cross-body tool, but core workflows are covered.

Maintenance

ActivityMaintained
ResponsivenessNo issues