Connect
8 clients · secrets stay placeholdersQuality 87 / 100good
protocol75 · weight 25
- warn
protocol.modernnewest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a
protocol.statelessonly applies to 2026-07-28 servers
- pass
protocol.transportstreamable HTTP
- n/a
protocol.list_ttlonly applies to 2026-07-28 servers
authorizationn/a · weight 15
- n/a
auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
- n/a
auth.secret_in_urlno templated URL
tool hygiene100 · weight 30
- pass
tools.descriptionsevery tool has a description
- pass
tools.description_lengthdescriptions are concise
- pass
tools.schemasevery tool has an object input schema
- pass
tools.annotations11 of 11 tools declare readOnlyHint or destructiveHint
- pass
tools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass
tools.token_costabout 4,235 tokens to load every tool
- pass
tools.api_dumptools are not a one-to-one API dump
dependencies67 · weight 15
- pass
deps.known_vulnsno known advisory in 119 resolved packages
- fail
deps.mcp_sdk_version@modelcontextprotocol/sdk 1.30.1 has 1 known advisory (GHSA-6qxp-vccf-f47h); update @modelcontextprotocol/sdk to 1.31.0 or later
- pass
11 tools, about 4,235 tokens to load them all · tool set a56c253cb518 · checked 2026-10-20 12:45 UTC
Tool changes
No tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
Trust 90 / 100
+repository +namespace-matches-repo +website +reachable +uptime-100% ~updated-117d-ago
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
Dependencies
[email protected] npm118 dependencies, resolved · MCP SDK @modelcontextprotocol/sdk 1.30.1 · advisories checked 2026-10-19
Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0. The graph is what a clean install of this version resolves today; nothing was installed or run. How it is checked.
Official server.json
{
"name": "io.github.GPTNowLLC/portlandmaps-mcp",
"icons": [
{
"src": "https://portlandmaps-mcp.vercel.app/favicon.png",
"sizes": [
"512x512"
],
"mimeType": "image/png"
},
{
"src": "https://portlandmaps-mcp.vercel.app/favicon.svg",
"sizes": [
"any"
],
"mimeType": "image/svg+xml"
},
{
"src": "https://portlandmaps-mcp.vercel.app/apple-touch-icon.png",
"sizes": [
"180x180"
],
"mimeType": "image/png"
},
{
"src": "https://portlandmaps-mcp.vercel.app/favicon-32x32.png",
"sizes": [
"32x32"
],
"mimeType": "image/png"
},
{
"src": "https://portlandmaps-mcp.vercel.app/favicon-16x16.png",
"sizes": [
"16x16"
],
"mimeType": "image/png"
}
],
"title": "PortlandMaps (Unofficial)",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"remotes": [
{
"url": "https://portlandmaps-mcp.vercel.app/mcp/v2",
"type": "streamable-http"
}
],
"version": "0.2.5",
"packages": [
{
"version": "0.2.5",
"transport": {
"type": "stdio"
},
"identifier": "portlandmaps-mcp",
"registryType": "npm",
"environmentVariables": [
{
"name": "PORTLANDMAPS_API_KEY",
"isSecret": true,
"isRequired": true,
"description": "PortlandMaps API key. Required for the /api/* tools; without it those endpoints return error payloads."
},
{
"name": "PORTLANDMAPS_API_KEY_PARAM",
"description": "Query-parameter name to send the API key as. Defaults to 'api_key'."
},
{
"name": "PORTLANDMAPS_CACHE_TTL_MS",
"description": "In-memory response cache TTL in milliseconds. Defaults to 3600000 (one hour)."
}
]
}
],
"repository": {
"url": "https://github.com/GPTNowLLC/portlandmaps-mcp",
"source": "github"
},
"websiteUrl": "https://github.com/GPTNowLLC/portlandmaps-mcp#readme",
"description": "Unofficial MCP server for the public PortlandMaps property/permit/zoning API. Not city-affiliated."
}