MCP Connector Lint
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
MCP Connector Lint
A remote Model Context Protocol server with three read-only tools that check an MCP connector against the requirements of the Anthropic Claude Connectors Directory, before it is submitted.
Live endpoint: https://mcp-lint.superintelligencesystems.ca/mcp (Streamable HTTP, no authentication)
No account, no OAuth, no storage. Every call is a JSON argument in, a JSON report out.
Deterministic. 58 rules, sorted and de-duplicated findings, byte-identical output for identical input.
First-party. The tools and the REST API are two surfaces over the same rule engine in this repository; no third-party service is called.
Static by design. The checker never connects to the server being reviewed, never calls its tools and never fetches the docs, privacy or icon URLs. It checks text and structure, and says so.
Tools
Tool | Title | Annotations | What it returns |
| Validate MCP connector manifest |
| A report on the connector manifest: remote HTTPS transport, accepted auth mode, declared first-party service domain, and every tool's annotations. |
| Check MCP tool annotations |
| A report on a |
| Lint connector listing text |
| A report on a listing draft: the published 100/200/2,000-character limits, 1-5 categories, HTTPS docs/privacy/icon URLs, support contact, reviewer note, copy rules. |
All three return the same envelope:
{
"ok": false,
"verdict": "fail",
"ruleset": "2026-11-03.1",
"summary": { "errors": 1, "warnings": 2, "infos": 0 },
"findings": [
{
"rule": "MNF-008",
"severity": "error",
"path": "manifest.url",
"message": "host \"localhost\" is a loopback or private address",
"fix": "Publish the server on a public HTTPS hostname."
}
],
"guidance": "Fix the 1 blocking error before submitting. …"
}ok is false only when there is a blocking error. Warnings are advisory. A validation failure is a result, not an error: the call succeeds and returns the report. The only protocol errors are malformed calls (for example a manifest that is not an object), and their message names the argument.
Related MCP server: context-canvas-check
Quick start
npm install
npm test # 81 deterministic tests, no network
npm run typecheck
npm run dev # wrangler dev on http://localhost:8787Exercise it locally:
curl -s http://localhost:8787/api/v1/validate-manifest \
-H 'content-type: application/json' \
-d '{"manifest":{"name":"Example","url":"https://api.example.com/mcp","transport":"streamable-http","authentication":"none","service_domain":"example.com","tools":[{"name":"get_weather","title":"Get weather","description":"Returns the current weather for one city.","readOnlyHint":true,"inputSchema":{"type":"object","properties":{}}}]}}'Run the live smoke test (transport, all three tools, one successful and one failing call each):
node scripts/smoke.mjs https://mcp-lint.superintelligencesystems.caConnect it
Any Streamable HTTP MCP client can use the endpoint. In Claude, add a custom connector with URL https://mcp-lint.superintelligencesystems.ca/mcp and no authentication; three tools appear.
The MCP endpoint is stateless: each POST is a complete JSON-RPC exchange and there is no session to expire. JSON responses are enabled (application/json), GET streaming is not supported (405 with the reason).
REST API
The MCP tools are thin adapters over the same engine; the REST API is the second surface, useful for CI:
Method | Path | Body |
POST |
|
|
POST |
|
|
POST |
|
|
GET |
| service identity, ruleset, tool list, limits |
GET |
| the machine-readable rule catalogue |
GET |
| full documentation and rule rationale |
GET |
| privacy statement |
A REST failure report is still HTTP 200, because the check succeeded and the answer is "this fails". Malformed requests are 400 with {"error":{"code":"…","message":"…"}}.
Rule catalogue
58 rules across the three checks, each with a stable id, a severity and a rationale tied to a published requirement. The full table with rationale is at /docs and the machine-readable copy at /rules; src/lib/catalog.ts is the source of truth and a test fails if any tool emits an id that is not documented there.
MNF-001…MNF-014— manifest: transport, HTTPS, loopback hosts, auth mode, first-party domain, tool presence, embedded listing.ANN-001…ANN-018— annotations: title, hints, names, uniqueness, schemas, description hygiene, read/write contradictions.LST-001…LST-026— listing text: limits, categories, URLs, support contact, reviewer note, superlatives, contact details, instructions.
Two rules worth calling out because they catch the mistakes that most often bounce a submission:
MNF-009— a static bearer token blocks listing. Directory auth is OAuth 2.0 for account-scoped tools, or none for public data.ANN-009— every tool must setreadOnlyHintordestructiveHint; the portal flags tools that set neither.
Architecture
src/
index.ts Worker routes: /mcp, /api/v1/*, /health, /rules, /docs, /privacy, /icon.svg
mcp.ts three MCP tools (registerTool with title + annotations)
api.ts REST handlers over the same engine
lib/ report envelope, rule catalogue, URL/pattern helpers
rules/ manifest.ts, annotations.ts, listing.ts — pure functions
pages/ server-rendered HTML (no client JavaScript, no external assets)
test/ 81 tests: every rule, report determinism, REST, MCP transport and tools
scripts/ smoke.mjs (live endpoint), make-icon.mjs (PNG asset, no dependencies)The rule engines are pure functions over untrusted JSON. They are the only place findings are produced, which is why the MCP surface, the REST API and the tests cannot disagree. Findings are sorted by path then rule id and de-duplicated, so determinism is a property of the code, not of the test harness.
The Worker uses the official @modelcontextprotocol/sdk web-standard Streamable HTTP transport in stateless mode. No Durable Objects, no KV, no D1, no secrets.
Limits
Request body: 256 KB (413 above that).
Tools per call: 200 (rejected at the schema).
No rate-limit state is stored; Cloudflare's edge protects the Worker.
Deploy
The live service is a Cloudflare Worker:
export CLOUDFLARE_API_TOKEN=... # Workers Scripts: Edit for the account
export CLOUDFLARE_ACCOUNT_ID=...
npx wrangler deploywrangler.jsonc binds the custom domain mcp-lint.superintelligencesystems.ca. Change the routes entry to deploy under a different hostname.
Privacy
No accounts, cookies, analytics or stored payloads. The JSON you send is parsed in memory, checked and discarded with the response; the application does not log request bodies or call third-party APIs. Hosting metadata (IP, URL, status) is processed by Cloudflare as the hosting provider. Full statement at /privacy.
License
MIT. Copyright 2026 Moid Chowdhury (Super Intelligence Systems).
This server cannot be deployed
Maintenance
Related MCP Connectors
Statically audits MCP tool surfaces for token cost, schema quality, and design issues.
Free MCP tools: the only MCP linter, health checks, cost estimation, and trust evaluation.
Grade MCP tool definitions for agent-readiness: score, A-F grade, fixes, est. token cost.
MCP Spec Compliance MCP — audits any MCP server.json against the official Model Context Protocol
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables coding agents to preflight MCP server submissions against store rejection causes, publish where automation is allowed, prepare form-based store submissions, and detect listing drift.278 npm3MIT
- AlicenseNot gradedqualityCmaintenanceEnables any MCP client to detect Claude Code configuration that is silently ignored, such as agent files that fail to load, unknown frontmatter fields, parent-folder settings, conflicting MCP server entries and drift since a baseline. Exposes read-only tools that return findings with exact edits, the fix prompt, and explanations of each check, without modifying any files.Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables users to validate a remote MCP server against Claude connector directory rules — sign-in discovery, tool metadata, and listing requirements — and walk through publishing it to npm, the official MCP Registry, a Claude Code plugin repo, and the Claude connector directory one step at a time.52 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables an agent or MCP client to scan MCP server configs and AI-agent tool manifests on demand, exposing tools that list detection rules and report hidden prompt injections, data-exfiltration attempts, embedded secrets, deceptive Unicode, unpinned packages and shell-launching tools. Each finding comes with a severity and location so risky tool descriptions can be caught before an attacker exploits them.64 PyPIApache 2.0