Skip to content

License the server, and give Glama something it can build - #6

Merged
las7 merged 1 commit into
mainfrom
glama-score
Aug 22, 2026
Merged

License the server, and give Glama something it can build#6
las7 merged 1 commit into
mainfrom
glama-score

Conversation

@las7

@las7 las7 commented Aug 22, 2026

Copy link
Copy Markdown
Contributor

Works the Glama scorecard. Two of its findings are ours to fix; the rest need the Glama web UI and are listed at the bottom.

1. LICENSE — the hard blocker

MCP servers without a LICENSE cannot be installed.

package.json said UNLICENSED and no LICENSE file existed. MIT: it's what almost every MCP server carries, and it costs nothing here — this package is a thin client for a hosted service, not the product. All four public repos in the org are currently unlicensed, so this sets the precedent; say so if you'd rather it were Apache-2.0 and I'll swap it before merge.

This breaks CI unless the tarball assertion moves with it. npm always packs LICENSE regardless of the files list, so the tarball contains exactly what it should gains a ninth entry. Verified against a real npm pack, not from the docs:

LICENSE  README.md  package.json
src/client.js  src/errors.js  src/http.js
src/server.d.ts  src/server.js  src/tools.js
→ PASS: tarball is 18629 bytes, 9 files

2. Dockerfile — unlocks the release, which unlocks two scores

A Glama release needs a build spec, and server coherence scoring and tool definition quality scoring both stay switched off until a release exists. So this is the highest-leverage item on the card.

The image is deliberately boring: zero dependencies means no install step and no lockfile to honour. node:22-slim rather than Alpine — no difference today, but glibc is the base that behaves if a native dependency ever appears. Runs as node, not root: the process talks to a control plane with the caller's own credential and needs no privilege of its own.

3. glama.json

Names both org admins (las7, LopezAdan) so the listing stays claimable from either account.

Verified

  • 38 tests pass, 1 skipped (the live test, as designed)
  • tarball assertion passes with the new expected list
  • docker build succeeds
  • the container answers a real MCP initialize over stdio:
    {"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2025-06-18",
     "capabilities":{"tools":{"listChanged":false}},
     "serverInfo":{"name":"reachpad","version":"0.1.0"}}}
    

Still needs the Glama web UI (not in this PR)

  • Dockerfile admin page → configure build spec → DeployMake Release
  • "Try in Browser" to seed the usage metric (no tool usage in 30 days)
  • Add related servers for discoverability

Noticed while here, deliberately not fixed

serverInfo.version reports 0.1.0 (hardcoded in src), package.json says 0.2.0, and npm's latest is 0.1.5 — three different answers to "what version is this". Worth one follow-up that picks one.

🤖 Generated with Claude Code

https://claude.ai/code/session_011jhbZoyzaAjr1MGrSNMWZK

Glama's scorecard blocks on two things that are ours to fix.

The first is hard: "MCP servers without a LICENSE cannot be installed."
package.json said UNLICENSED and no LICENSE file existed, so the server was
unusable to anyone reading the licence before installing. MIT, which is what
almost every MCP server carries and costs nothing here -- this package is a
thin client for a hosted service, not the product.

Adding it breaks CI unless the tarball assertion moves with it: npm always
packs LICENSE regardless of the files list, so the expected-contents check
gains a ninth entry. Verified with a real npm pack, not by reading the docs.

The second is the Dockerfile. A Glama release needs a build spec, and two of
its scoring dimensions -- server coherence and tool-definition quality -- stay
switched off until a release exists. The image is deliberately boring: this
package has zero dependencies, so there is no install step and no lockfile to
honour. It runs as node rather than root, because the process talks to a
control plane with the caller's own credential and needs no privilege.

glama.json names both org admins as maintainers so the listing stays claimable
from either account.

Verified: 38 tests pass, the tarball assertion passes with the new list, the
image builds, and the container answers an MCP initialize over stdio.

Greentree-Change-Id: b670b079a930be8ef6e399264f75b20e
@las7
las7 merged commit 3baf347 into main Aug 22, 2026
1 check passed
@las7
las7 deleted the glama-score branch August 22, 2026 02:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant