Ultimate Fighting Calendar
UFCalendar Fight API

MMA MCP Server

One fight MCP endpoint covers five promotions: UFC, PFL, OKTAGON, BKFC and RIZIN. UFCalendar’s hosted MMA MCP server gives Claude, ChatGPT, Cursor or Codex a single tool set and a single credential for events, full cards, results, per-round statistics, fighter careers, rankings and official judges’ scorecards — no per-promotion integration, no second schema.

Free 1-day trial · 100 requests · no credit card. Paid plans from $19/mo for 30,000 requests, cancel anytime.

MCP endpoint https://api.ufcalendar.com/mcpListed in the official MCP Registry as com.ufcalendar/fight-api

Last updated September 2026

What is an MMA MCP server?

An MMA MCP server is a Model Context Protocol endpoint that hands an AI assistant tools for mixed martial arts data, so it reads a real card or result instead of recalling one. UFCalendar’s is hosted, covers five promotions through one schema, and authenticates with OAuth 2.1 or an API key.

5
Promotions, one auth and one tool set
11,673
Bouts across every promotion we cover
107,430
Scored rounds from official scorecards

Why one server beats five integrations

Every promotion publishes its own site, its own spelling of a fighter’s name and its own idea of a weight class. Reconciling that is the work; the MCP server is where the work is already done.

One schema across five promotions

A bout is the same object whether it happened at UFC 1 or at last week’s OKTAGON card. Your agent writes one query shape and gets UFC, PFL, OKTAGON, BKFC and RIZIN back in it.

One fighter, one identity

The same athlete appears under different spellings on different sites. We resolve them to one record with one career, so an agent asking about a fighter gets his whole history, not the third of it one promotion knows.

Changes, not just snapshots

Cards move. Bouts get cancelled. Every change is logged with a timestamp and readable through the same tools, so an agent can answer what changed since it last looked.

Depth other feeds stop short of

Official judges’ scorecards round by round, rankings boards point-in-time since 2013, per-round striking and grappling lines, and broadcast rights by country.

Connect in 60 seconds

The server speaks Streamable HTTP, so every current MCP client can reach it without a local process, a Docker image or a proxy. Pick the door your client uses and paste one block.

  1. 1. Add it as a custom connector

    In Claude.ai or ChatGPT, add a custom connector and paste the MCP endpoint. Sign in with your UFCalendar account when prompted; the free 1-day trial starts itself on first sign-in.

    MCP endpoint
    https://api.ufcalendar.com/mcp
  2. 2. Or take an API key instead

    For a coding agent, a bearer token is simpler than a browser round-trip. Start the trial on the account page and copy the key — it is the same credential the REST API uses.

    API key
    # 1. Sign in, start the free 1-day trial, copy the key
    open https://www.ufcalendar.com/account/api?trial=1
    
    # 2. Hand it to any MCP client as a bearer token
    export UFCALENDAR_API_KEY="ufcalendar_..."
  3. 3. Register it in your client

    Claude Code, Cursor and Codex each take one line or one small config block. Restart the client afterwards so it lists the tools.

    Claude Code
    claude mcp add --transport http ufcalendar https://api.ufcalendar.com/mcp \
      --header "Authorization: Bearer $UFCALENDAR_API_KEY"
    Cursor — ~/.cursor/mcp.json
    {
      "mcpServers": {
        "ufcalendar": {
          "url": "https://api.ufcalendar.com/mcp",
          "headers": { "Authorization": "Bearer ${UFCALENDAR_API_KEY}" }
        }
      }
    }
    Codex — ~/.codex/config.toml
    [mcp_servers.ufcalendar]
    url = "https://api.ufcalendar.com/mcp"
    http_headers = { Authorization = "Bearer ${UFCALENDAR_API_KEY}" }
  4. 4. Ask across promotions

    Ask a question that spans more than one organisation. If the tools are wired you get one answer with real ids and slugs, not five partial ones.

Tools the MCP server exposes

23 tools over the same REST endpoints, with the same plan limits. One tool call counts as one request. Three discovery tools answer with no sign-in at all.

ToolWhat it doesAccess
get_plansList the UFCalendar Fight API plans, their monthly request quotas and per-minute limits, and the terms of the no-card trial. Answers "what does this cost" without a credential.ReadNo sign-in
list_orgsList the promotions the UFCalendar Fight API covers, with per-org capability flags (stats, rounds, rankings, broadcasts, predictions, scorecards).ReadNo sign-in
how_to_connectExplain how to authenticate against the UFCalendar Fight API from this MCP server: an API key bearer token, or signing in with a UFCalendar account. Returns the URLs to do it.ReadNo sign-in
list_eventsList fight cards by promotion, status and date range. A bare call returns the upcoming schedule, soonest first; pass order=desc for the archive, newest first. Cursor paginated.Read
get_event_cardFetch one event by slug or id with its complete bout order, both corners, venue, broadcast listings and results when the card has been fought.Read
get_event_changesThe audit trail for one card: bouts added or cancelled, opponents swapped, start times moved, fighter profiles merged — newest first.Read
get_fightFetch one bout by id. Pass include=stats for per-fight totals, include=rounds for round-by-round statistics, include=scorecards for the official judges’ cards.Read
searchTypeahead search across fighters and events in one call. Use it to turn a name a user typed into a slug you can pass to the other tools.Read
search_fightersSearch the fighter roster by name, nationality or promotion. Cursor paginated. Returns identity fields; use get_fighter for the full record.Read
get_fighterFetch one fighter by slug or id: bio, record, career statistics and freely licensed portraits. Pass include=history for the full multi-promotion career timeline, include=stats, include=rankings or include=power_index.Read
get_rankingsThe official rankings board for one promotion, point-in-time: pass a date to read the board as it stood that day. Rank 0 is the champion. Pass a division to narrow it.Read
get_championsEvery current champion across the promotions the API covers, with the division and the snapshot date the board was published.Read
get_power_indexThe UFCalendar Power Index board for one promotion — our own rating engine, refreshed hourly, with peak rating and fights rated.Read
get_predictions_upcomingUFCalendar model win probabilities for upcoming UFC bouts, corner-stamped so a probability is never shown against the wrong pair. Informational model output, not betting advice.Read
get_broadcast_rightsWho airs one promotion in each country: provider, kind and link. Pass a country code to narrow it to that market plus the worldwide row.Read
list_judgesThe judge directory with career aggregates: cards turned in, rounds scored, 10-8s, split cards and lone dissents. Filter by name, promotion or a minimum number of fights.Read
get_judge_scorecardsEvery official card one judge has turned in, newest first: per-round points, card totals, decision type and point deductions. Commission records only.Read
get_usageHow many requests the calling account has used this month, the plan limit, the per-minute limit and when the counter resets.Read
get_venueFetch one venue by id: name, city, region, country, capacity, coordinates and IANA time zone.Read
list_webhook_endpointsList the signed webhook endpoints registered on the calling account, with the event kinds each one subscribes to.Read
create_webhook_endpointRegister an https endpoint to receive signed webhooks (event announced, fight result, card changed, event completed). The signing secret is returned ONCE — store it before the reply is discarded. At most 3 active endpoints per account.Write
rotate_webhook_secretReplace the signing secret of one webhook endpoint. The old secret stops verifying immediately, so update the receiver first. The new secret is returned once.Write
delete_webhook_endpointPermanently remove one webhook endpoint from the calling account. Deliveries to it stop and its delivery history is dropped.Write

Names and descriptions appear exactly as the server advertises them to a client, in English — that is the text your agent reads when it picks a tool.

Ask your agent

Once the server is wired, these are answered from the live database rather than from the model’s memory — which is what stops an agent inventing a card that was never booked.

  • What MMA cards are scheduled this weekend across UFC, PFL, OKTAGON, BKFC and RIZIN?
  • Build me a table of every fighter who has fought in more than one of the promotions you cover, with their record in each.
  • Which RIZIN bouts this year went to a decision, and how did the judges score them?
  • Who airs the next BKFC card in the United Kingdom, and when does it start locally?

MMA MCP server options

Every cell outside our own column is what that vendor’s public page stated in September 2026. A dash means their page says nothing about it — not that the feature is missing.

UFCalendarSportradar MMA MCPApify MMA actorssportsdata-mcp
HostingHosted by usHosted by the vendorHosted on the actor platformSelf-hosted
AuthenticationOAuth 2.1 or API keyVendor API keyPlatform OAuth or tokenNone (runs locally)
How you evaluate it1-day, 100-request trial, no card30-day marketplace trialPay per runFree, open source
Entry priceFrom $19/moContact salesFrom $3.50 per 1,000 rowsFree
Where the data comes fromOur reconciled databaseLicensed official feedScraped public pagesScraped public pages
Round-by-round statistics✓ Yes✓ Yes
Rankings historyPoint-in-time since 2013Current board onlyCurrent board only
Judges’ scorecards✓ Yes✗ No
SupportDirect email supportVendor account teamCommunity issue trackerCommunity issue tracker
Betting odds✗ No✓ Yes

All of these are real options and some are the right answer for a different job: a licensed enterprise feed if you need contractual guarantees, a scraper actor for a one-off extract, a self-hosted open-source server if you want to run everything yourself.

Sources

  1. Sportradar — MCP Server
  2. Sportradar — MMA API overview
  3. Apify — UFC Scraper MCP server
  4. sportsdata-mcp (open source)

Questions

Is there an official MMA MCP server?
No promotion publishes one. UFCalendar’s is an official, first-party MCP server for the UFCalendar Fight API — run by us, listed in the official MCP Registry as com.ufcalendar/fight-api — and independent of every promotion it covers.
Is the MMA MCP server free?
There is no free tier. A free 1-day, 100-request trial needs no card and starts itself when you first sign in, and three discovery tools answer with no credential at all. After that, plans start at $19 a month for 30,000 requests across all five promotions.
Which clients can connect to it?
Anything that speaks Streamable HTTP MCP: Claude.ai and ChatGPT as a custom connector, and Claude Code, Cursor, Codex, Windsurf and VS Code as a registered server. No local process, Docker image or proxy is needed.
OAuth or an API key?
Both. Browser clients use OAuth 2.1 with the standard discovery documents, so you sign in with your UFCalendar account and never paste a secret. Coding agents send Authorization: Bearer with an API key. The two reach the same tools.
How do rate limits work through MCP?
One tool call counts as one request against the same monthly quota and per-minute limit as the REST API: 30,000 requests at 60 per minute on Hobby, 200,000 at 300 on Pro, 1,000,000 at 600 on Business. The get_usage tool reports what is left.
Does it return betting odds?
No, and it never will — a deliberate product decision. If your agent needs odds, another provider is the right tool. What we do serve is the official commission record: judges, per-round points, card totals and deductions.

More Fight API pages

One page per job — schedules, results, per-round statistics and rankings history — each with its own endpoints, sample responses and code.

UFCalendar is an independent publication, not affiliated with UFC/Zuffa/TKO, PFL, OKTAGON MMA, BKFC, RIZIN FF or any promotion. Organization names are used to describe the data. Terms of service · Refund Policy