# Methodology

MCP Morning ranks MCP servers once a day from public data only. We never run or test servers, and rankings are never for sale.

## Sources

- **Official MCP Registry** (registry.modelcontextprotocol.io): the catalog, packages, remote endpoints and first publish date.
- **GitHub**: stars, forks, creation date, last push, archived flag, license and topics.
- **npm** (api.npmjs.org) and **PyPI** (pypistats.org): downloads over the last 7 days and the 7 days before.

Registry entries pointing at the same GitHub repository are merged into one server.

## Most used

Each signal is log-scaled and turned into a percentile across all servers:

`usage = 0.55 x downloads_7d + 0.35 x stars + 0.10 x forks`

Servers without a package on npm or PyPI use `0.80 x stars + 0.20 x forks`. A server is ranked only if it is not archived,
was pushed to within the last year, and has at least 10 stars or 200 weekly downloads.

## Rising

`rising = 0.5 x star gain over 7 days + 0.5 x week-over-week download growth` (percentiles). Until we have a week of daily
snapshots, only download growth is used. A server needs at least 20 stars or 200 weekly downloads to qualify.

## New

Servers whose GitHub repository was created in the last 30 days (or, without a repository, first published to the registry in
the last 14 days), ranked by `0.6 x stars + 0.4 x downloads` percentiles.

## Health labels

- **active**: pushed in the last 90 days
- **at-risk**: last push 90 to 365 days ago
- **stale**: no push for over a year
- **archived**: the repository is archived

## Limitations

Stars can be gamed and downloads include CI traffic. A high score means popular, not safe or correct. Always review a
server's code and permissions before connecting it to your agent.
