Skip to main content

CEORater MCP Server

CEO performance data for AI agents, over the Model Context Protocol.

How the stock did over each CEO's tenure, what the S&P 500 did over that same window, how long they have been in the job, and what they were paid — for 500+ US public companies.

Free. No account, no API key, no signup.


Connect from the web

The server runs at one public URL. Paste it wherever your client asks for a remote MCP server — no login, nothing to install:

https://mcp.ceorater.com/mcp
Client Where
Claude.ai Settings → Connectors → Add custom connector
ChatGPT Settings → Connectors → Create (developer mode)
Claude Code claude mcp add --transport http ceorater https://mcp.ceorater.com/mcp
Cursor "ceorater": { "url": "https://mcp.ceorater.com/mcp" } in mcp.json

Streamable HTTP, stateless. GET /health answers 200 when it is up.


Install locally instead

Needs Python 3.10 or newer.

Windows

pip install ceorater-mcp

macOS

brew install pipx
pipx install ceorater-mcp

Homebrew's Python refuses pip install into the system environment, so plain pip install fails there with externally-managed-environment.

Linux

sudo apt install pipx      # Debian, Ubuntu
sudo dnf install pipx      # Fedora, RHEL
pipx install ceorater-mcp

Connect it to a client

MCP is an open standard — Claude, ChatGPT, Cursor, VS Code and other clients all speak it. Claude Desktop, Cursor and VS Code take a server config file in this form; other clients add servers their own way.

Add this to your claude_desktop_config.json:

{
  "mcpServers": {
    "ceorater": {
      "command": "ceorater-mcp"
    }
  }
}

That file lives at:

macOS ~/Library/Application Support/Claude/claude_desktop_config.json
Windows %APPDATA%\Claude\claude_desktop_config.json

Restart Claude Desktop. No env block and no key — that is the whole config.


Tools

Tool What it does
ceo_lookup One company by ticker. Always returns an array.
ceo_list Every CEO, or filter by sector, industry, founder
ceo_search Loose substring match across company, ticker, CEO, sector, industry
ceo_sectors The 11 GICS sectors and their company counts
ceo_industries GICS sub-industries, optionally within one sector
ceo_meta Row count, field list, data freshness

Ask things like "Which founder-led tech CEOs beat the S&P 500 over their tenure?" — the agent can call ceo_list with sector="Information Technology" and founder=true and do the comparison itself.


The fields

Exactly the ten www.ceorater.com displays.

Field Meaning
ticker Exchange ticker
company Registrant name as filed
ceo Chief executive
founder Whether this CEO founded the company
sector GICS sector
industry GICS sub-industry
tenure_years Years in the role
total_return_pct Total stock return across the tenure, as a percentage
spy_return_pct The S&P 500 over that same period
compensation_musd Reported compensation, in millions of USD

Returns are already percentages: 545800 means +545,800%. Nothing to convert.

Sectors and industries are S&P's own GICS values, matched company by company on SEC CIK rather than ticker, because tickers get reassigned and CIKs do not. Eleven sectors, 128 sub-industries.

Co-CEOs get a record each. Oracle, KKR, Globe Life, Lululemon and Netflix each return two people with their own start dates and returns, which is why ceo_lookup always returns a list.


Upgrading from 1.0.x

1.0.1 and 1.0.2 fail at import on every mcp 1.x install (unexpected keyword argument 'version'). 1.1.0 runs on 1.27.1 and later, and on 2.x.

Upgrading from 0.x

Version 0.x required a CEORATER_API_KEY and called a paid API that no longer exists — every tool in it fails. Version 1.0 needs no key and is not configurable; remove any CEORATER_API_KEY from your MCP config.

The scores are gone. CEORaterScore, AlphaScore, CompScore and RevenueCAGRScore have been retired from the product, along with Avg Annual TSR, which was computed as total return divided by tenure rather than compounded and overstated every multi-year record. What remains is reported figures only.


Running your own remote server

MCP_TRANSPORT=http PORT=8080 ceorater-mcp

Serves streamable HTTP, stateless, so it sits behind Cloud Run or similar without session affinity. No per-user credentials to manage. The Dockerfile and .github/workflows/deploy.yml here are what build and deploy mcp.ceorater.com.

The API rate-limits by IP, and a shared server makes every user's calls from one address. mcp.ceorater.com carries a key the API recognises; a server you run yourself shares the ordinary per-IP limit across everyone using it.


The underlying API

The server is a thin client over a public HTTP API you can call directly:

curl -s https://api.ceorater.com/api/v1/ceo/NVDA

Documented at https://www.ceorater.com/api-docs.html Rate limit 100 requests per 15 minutes per IP.

CEORater publishes reported figures and makes no investment recommendations.


Licence

MIT. The server is yours to use, fork and embed.

The CEO data it retrieves is free to use, including commercially; attribution to CEORater is appreciated. See https://www.ceorater.com/terms.html

Metadata

Release files for ceorater-mcp 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ceorater-mcp 1.1.0
File Size Uploaded
ceorater_mcp-1.1.0.tar.gz 9.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ceorater-mcp 1.1.0
File Interpreter ABI Platform
ceorater_mcp-1.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 19.0 kB

Release files / ceorater_mcp-1.1.0.tar.gz

Download URL ceorater_mcp-1.1.0.tar.gz
Size 9.2 kB
Tags Source
SHA-256 checksum
How to use checksums
d270976137e179a422e8bb27fc9899a5e44358fece1fda106f30d3cad7be92f4
BLAKE2b-256 checksum
How to use checksums
45ac5031bd915a5660f5678d0aa3e3c5f5db578f8722ea53789f6b495a13ee59
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.10

Release files / ceorater_mcp-1.1.0-py3-none-any.whl

Download URL ceorater_mcp-1.1.0-py3-none-any.whl
Size 9.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c6c560d19827ff017d48e0c92da688ae052374de7c5e6132f02430f73b595102
BLAKE2b-256 checksum
How to use checksums
14db2bfa9602a086632221e3e20091db4bb7dc49b9b229d4663a9a2115b150f8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.10

Release history Release notifications | RSS feed

This release

1.1.0 This release

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page