UFCalendar Fight API — MMA MCP server

com.ufcalendarPublished by ufcalendar.comOfficial publisherv1.7.0Updated Oct 31, 2026

MMA MCP: UFC, PFL, BKFC, RIZIN, OKTAGON results, stats, rankings, scorecards. Free plan, no card.

VerifiedStreamable HTTPWeb executableLocation & LifestyleFinanceData & Analytics

Overview

AI-generated overview

Remote MCP server for MMA and bare-knuckle data: fight cards, results, stats, rankings, scorecards, odds and broadcast rights across UFC, PFL, BKFC, RIZIN and…

What you can do
  • Search fighters and events, then pull fighter profiles, careers, head-to-head comparisons and rankings history
  • Browse events: schedules, next card, full bout order, results, change feeds and storylines
  • Read fight data: per-fight and per-round stats, official judges' scorecards, referee and judge records
  • Look up odds lines, community pick'em splits, model win probabilities and matchmaker suggestions
  • Query record books, leaderboards, year summaries, coverage and per-country broadcast rights
  • Check plans and quotas, and get authentication guidance
When to use it
Useful when an assistant needs to answer questions about MMA or bare-knuckle fights: who won, what is next, how two fighters compare, how a card is ranked or aired, or what the record book says. It suits sports content, fan-facing chat and research rather than general web search.
Requirements
A remote streamable HTTP endpoint; nothing to install locally. An API key sent as an Authorization bearer token, or OAuth sign-in with a UFCalendar account. The free plan gives 1,000 requests a month with no card; paid plans start at $19/month. Some tools, such as odds history, need a Pro plan or higher.
Before you install
The Authorization header carries a secret API key, so keep it out of logs and shared configs. Each tool call counts as one request against the monthly quota, and paid tiers cost money. Odds are a consensus line for information only, not betting advice. Fighter images are Creative Commons and must be shown with credit. The service is not affiliated with UFC, Zuffa, TKO or any promotion.

Installation

In SourceWeft

  1. Open UFCalendar Fight API — MMA MCP server in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/com.ufcalendar%2Ffight-api/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "ufcalendar-fight-api-mma": {
      "type": "http",
      "url": "https://api.ufcalendar.com/mcp"
    }
  }
}

README

UFCalendar Fight API — agent skill

An installable skill that teaches a coding agent how to reach the UFCalendar Fight API — the MMA Fight Data API behind our MCP server for UFC data and MMA MCP server: UFC, PFL, OKTAGON, BKFC and RIZIN events, full fight cards, results, per-round stats, fighter careers, judges' scorecards, UFC rankings history since 2013 and per-country broadcast rights — over REST, the two SDKs, or the MCP server at https://api.ufcalendar.com/mcp.

Install

bash
npx skills add UFCalendar/fight-api-skill

Or copy it in by hand:

AgentWhere
Claude Code.claude/skills/ufcalendar-fight-api/ (project) or ~/.claude/skills/ufcalendar-fight-api/ (global)
Cursorpaste SKILL.md into a rule under .cursor/rules/, keep references/ beside it
Codexreference SKILL.md from AGENTS.md, keep references/ beside it

The skill is plain Markdown — SKILL.md plus four reference files. Nothing executes.

Contents

  • SKILL.md — access in 60 seconds, base URL and envelope, the endpoints that answer the common questions, the don'ts, and when to use MCP vs REST vs SDK.
  • references/endpoints.md — every endpoint and parameter. Generated from the OpenAPI document; do not edit by hand.
  • references/conventions.md — envelope, pagination, errors, rate headers, tier gates, webhook signature verification.
  • references/mcp-clients.md — copy-paste config for Claude Code, Cursor, Codex, Claude.ai and ChatGPT.
  • references/sdk.md — Python and TypeScript quickstarts.

Access

Every account gets the free plan (1,000 requests a month, no card, never expires); the key self-serves at https://www.ufcalendar.com/account/api?trial=1. Paid plans start at $19/month. GET https://api.ufcalendar.com/v1/plans answers with no credential at all, so an agent can evaluate the API before anyone signs in.

Odds are the UFCalendar consensus line only (no book identities; information only, not betting advice). Fighter images are Creative Commons and must be shown with their credit. Not affiliated with UFC, Zuffa, TKO or any promotion.

MIT licensed.

Source: README.md at commit 91c7ab0

Tools

52

get_plans

Plans and quotas

List the UFCalendar Fight API plans, their monthly request quotas and per-minute limits, including the free plan (1,000 requests a month, no card). Answers "what does this cost" without a credential.

Takes no parameters.

list_orgs

List promotions

List the promotions the UFCalendar Fight API covers, with per-org capability flags (stats, rounds, rankings, broadcasts, predictions, scorecards, odds). Odds are the UFCalendar consensus line: information only, not betting advice.

Takes no parameters.

how_to_connect

How to connect

Explain 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.

Takes no parameters.

get_org

Get a promotion

Fetch one promotion by slug (ufc, pfl, oktagon, bkfc or rizin): name, short name, country, website and its capability flags (stats, rounds, rankings, broadcasts, predictions, scorecards, odds; odds are information only, not betting advice). list_orgs returns the same rows for every promotion without a credential.

Parametersorgrequired

get_division

Get a division

One weight class in one promotion: the current rankings board when the promotion publishes one, upcoming bouts booked at that weight, the most recent results and the active roster by recency. The division-page answer in one call.

Parametersorgrequireddivisionrequired

list_events

List events

List 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. Filter to title cards or PPVs with is_title_card / is_ppv, and pass include=headline for each card's main event (and its result once fought) in the same call. Cursor paginated.

Parameterstoorgfromlimitordercursoris_ppvstatusincludeis_title_card

get_next_event

Get the next event

The single next upcoming card for one promotion, or across all of them: the soonest event that has not finished. For UFC, developmental sub-series cards (Dana White's Contender Series, Road to UFC) are skipped while a numbered card or Fight Night is booked; pass skip_series=false to include them. Pass include_card=true to get the full bout list in the same metered call.

Parametersorgskip_seriesinclude_card

get_event_card

Get an event and its full card

Fetch one event by slug or id with its complete bout order, both corners, venue, broadcast listings and results when the card has been fought. Pass include=eta for per-bout estimated start times and include=odds for each bout's current UFCalendar consensus odds line (information only, not betting advice).

Parameterseventrequiredinclude

get_event_changes

Get an event’s change log

The audit trail for one card: bouts added or cancelled, opponents swapped, start times moved, fighter profiles merged — newest first.

Parameterseventrequired

list_changes

List recent card changes

The cross-event change feed, newest first: bouts added, cancelled or reinstated, opponents swapped, start times or venues moved, fighter profiles merged — across every covered promotion or one of them, since a date (default the last 90 days). The same audit trail webhooks deliver, for agents that poll instead.

Parametersorgkindlimitsincecursor

how_to_watch

How to watch an event

Who airs one event, country by country: the promotion's rights deals merged with the event's own confirmed broadcast listings, with provider, kind (tv, stream, ppv…), link and a worldwide row. Pass a two-letter country code to get that market plus worldwide. Series-aware, so a Contender Series card shows its own deal, not the numbered-card one.

Parameterseventrequiredcountry

get_event_storylines

Get event storylines

The talking points of one card, computed from the record: title fights and title eliminators, the closest bout by UFCalendar's model, rematches and trilogy deciders, who is on a streak, who is debuting or returning from a long layoff, the ranked fighters and champions on the card, nations represented, the tallest and longest-reach fighters and the fastest career finish on the bill.

Parameterseventrequired

get_pickem_splits

Get pick'em splits

How the UFCalendar community is picking each bout on one card: picks for each corner, the total and the percentage, in card order. Crowd sentiment from our own pick'em game, not a market and not a forecast.

Parameterseventrequired

get_event_odds

Get consensus odds for a card

The UFCalendar consensus odds line for every bout on one card, in card order: the current line, the opening line, the closing line once a bout is settled, and how far the market moved since opening, each with how many sportsbooks backed it, plus every bout's prop markets (method of victory, total rounds, goes the distance). Unpriced bouts are listed with nulls. Book identities are never exposed. Information only, not betting advice.

Parameterseventrequired

get_fight_odds

Get consensus odds for a bout

The UFCalendar consensus odds line for one bout: the current line, the opening line, the closing line once the bout is settled, and the movement since opening in implied-probability points, each point with its American and decimal price, implied and margin-removed probability and how many sportsbooks backed it. Also the prop markets: method of victory per corner (KO/TKO, submission, decision), total rounds over/under per line and whether it goes the distance. Book identities are never exposed. Information only, not betting advice.

Parametersfight_idrequired

get_odds_history

Get the odds line movement

Every UFCalendar consensus odds point recorded for one bout, oldest first: the line-movement series, with how many sportsbooks backed each point. A point is stored only when the line moves. Narrow with from/to dates; cursor paginated. Pro plans and up. Information only, not betting advice.

Parameterstofromlimitcursorfight_idrequired

get_fight

Get a bout

Fetch 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, include=odds for the current UFCalendar consensus odds line (the closing line once the bout is settled) (information only, not betting advice).

Parametersincludefight_idrequired

get_fight_stats

Get a bout's stats and fantasy points

Per-fight totals for both corners of one bout (strikes by target and position, takedowns, knockdowns, control and position time), each with UFCalendar fantasy points and their category breakdown, plus data-quality flags in meta.quality (rounds present, position data present, whether the round sums match the totals).

Parametersfight_idrequired

find_fights

Find fights

THE tool for last/first/most-recent questions — search completed bouts across UFCalendar's launch promotions by title fight, finish method (ko, sub, dec, finish), division, fighter, winner, main-event only and date range, newest first by default. One call answers "the last title fight to end by knockout"; never page the schedule for it. At least one narrowing filter is required; 25 rows per page, 10 pages deep.

Parameterstoorgfromlimitordercursormethodwinnerfighterdivisiontitle_onlymain_events_only

search_fighters

Search the roster

Search the fighter roster by name, nationality or promotion. Cursor paginated. Returns identity fields; use get_fighter for the full record.

Parametersqorglimitcursorcountry

get_fighter

Get a fighter

Fetch 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, include=bonuses for the UFC bonus ledger, and include=credentials for grappling and wrestling pedigree, gyms and coaches (sourced, confidence-graded). Always carries next_fight and last_fight.

Parametersfighterrequiredincludehistory_limit

compare_fighters

Compare two fighters

Head-to-head in one call: both bios and career statistics, strike location and position mix, current win streaks, previous meetings, common opponents with each result, the booked bout between them if one exists, UFCalendar's model win probability for it and the Power Index ratings. The tale-of-the-tape tool.

Parametersarequiredbrequired

get_rankings

Get a rankings board

The 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. Each entry comes with movement against the previous snapshot (is_new for a debut), and meta names the previous and next snapshot dates.

Parametersorgrequireddateboarddivision

get_champions

Get current champions

Every current champion across the promotions the API covers, with the division and the snapshot date the board was published. Pass org (e.g. "ufc") and/or division (e.g. "lightweight") to narrow it.

Parametersorgdivision

get_power_index

Get the UFCalendar Power Index board

The UFCalendar Power Index board for one promotion — our own rating engine, refreshed hourly, with peak rating and fights rated. Pass view=movers for the biggest risers over a window, view=peaks for all-time peak ratings, division= to narrow.

Parametersorgrequireddaysviewlimitdivision

get_matchmaker

Get the matchmaker board

UFCalendar's matchmaker: the fights worth making in one promotion, scored for rank proximity, momentum, competitiveness and story (rematches, eliminators), per division or across the roster. Our own engine over rankings, Power Index and recent form — not a list of booked bouts. Runs without the website's style-clash (Fight DNA) factor, so scores can differ slightly from ufcalendar.com.

Parametersorgrequiredlimitdivision

whos_next

Who should fight next

For one fighter: the most sensible next opponents by UFCalendar's matchmaker, with the model win probability for each pairing and the score behind it, plus the bout already booked if there is one. Runs without the website's style-clash (Fight DNA) factor, so scores can differ slightly from ufcalendar.com.

Parameterslimitfighterrequired

get_leaderboard

Get a stat leaderboard

One statistical leaderboard for one promotion from UFCalendar's Record Book rollup — career, single-fight, single-round, division or event boards across 48 metrics (wins, finishes, significant strikes, takedowns, control time, finish rate and more), optionally narrowed to a division, a country or active fighters. Ranked, with the sample size behind each value.

Parametersorgrequiredlimitmetricrequiredcountrydivisionpopulation

get_record_book

Get the record book

The Record Book for one promotion in one call: the top rows of every leaderboard, grouped by category — the all-time and single-night records an agent quotes. Narrow by division, country, active fighters or one scope.

Parametersorgrequiredtopscopecountrydivisionpopulation

get_coverage

Get data coverage

What the database holds for each covered promotion, year by year: events, settled bouts and the share of them with per-fight stats, round-by-round stats, official commission scorecards and a UFCalendar consensus odds line (information only, not betting advice), plus when the latest result landed. Computed from the data, refreshed every 30 minutes.

Parametersorg

get_year_stats

Get a year in review

One calendar year of a promotion (or all covered promotions) in numbers: events and title fights, finish methods and busiest divisions, the fastest finishes, the biggest upsets and Power Index climbers, the busiest fighters, host countries and the most-used judges.

Parametersorgyearrequired

get_predictions_upcoming

Get model win probabilities

UFCalendar model win probabilities for upcoming UFC bouts, published about three weeks out and repriced at least weekly. Corner-stamped, so a probability is never shown against the wrong pair. Pass event= to narrow to one card. Informational model output, not betting advice.

Parametersevent

get_broadcast_rights

Get broadcast rights

Who airs one promotion in each country: provider, kind and link. Pass a country code to narrow it to that market plus the worldwide row.

Parametersorgrequiredseriescountry

list_judges

List judges

The judge directory with career aggregates: cards turned in, rounds scored, 10-8s, split cards and lone dissents, plus the league-wide baseline rates in meta.league. Filter by name, promotion or a minimum number of fights.

Parametersqorglimitcursormin_fights

get_judge

Get a judge

One official's career aggregates by id: fights and rounds scored, rounds scored 10-8 or wider, three-judge cards that came back split, lone dissents, first and last date scored, and the promotions worked. Same shape as a list_judges row; use get_judge_scorecards for the cards themselves.

Parametersjudge_idrequired

get_judge_scorecards

Get a judge’s scorecards

Every official card one judge has turned in, newest first: per-round points, card totals, decision type and point deductions. Each row flags lone dissents and split panels and shows the colleagues' totals. Commission records only.

Parameterslimitcursorjudge_idrequired

list_referees

List referees

The referee directory across the covered promotions, busiest first: bouts worked, promotions, first and last bout, finish rate, how their bouts ended (KO/TKO, submission, decision, other) and average fight time. Filter by name or promotion. The referee id is a slug of the name.

Parametersqorglimitcursor

get_referee

Get a referee

One referee's career aggregates by slug (e.g. herb-dean): bouts worked per promotion, first and last bout, finish rate, method breakdown and average fight time. Same shape as a list_referees row; use get_referee_fights for the bouts themselves.

Parametersrefereerequired

get_referee_fights

Get the bouts a referee worked

Every settled bout one referee worked in the covered promotions, newest first, with both corners, the result and the event. Cursor paginated.

Parameterslimitcursorrefereerequired

list_split_decisions

List split and majority decisions

Completed bouts decided on split or majority cards, newest first, with every judge's official card and the dissenting judge named — commission records only, across covered promotions or one of them, in a date range. Facts as filed; UFCalendar adds no verdict of its own.

Parameterstoorgfromlimitcursor

get_usage

Get your API usage

How many requests the calling account has used this month, the plan limit, the per-minute limit and when the counter resets — and, on an owner-granted trial, when the trial ends (trial_ends_at).

Takes no parameters.

get_venue

Get a venue

Fetch one venue by id: name, city, region, country, capacity, coordinates and IANA time zone.

Parametersvenue_idrequired

search_venues

Search venues

Find arenas and venues that have hosted a covered promotion, by name, city or country. Returns id, name, city, region, country, time zone and capacity; pass the id to get_venue_events for what was fought there.

Parametersqlimitcursorcountry

get_venue_events

List events at a venue

Every covered event held at one venue, newest first — upcoming cards on top, then the history. Same filters and row shape as list_events (status, from, to, order, cursor).

Parameterstofromlimitordercursorstatusvenue_idrequired

search_articles

Search UFCalendar articles

Search UFCalendar's own editorial archive — previews, recaps, investigations, fighter-pay and technique pieces — by keyword or tag, newest first, in any of the 13 site languages. Returns title, summary, tags, date and the canonical URL; pass the slug to get_article for the body. Betting editorial is not served.

Parametersqtaglimitcursorlocale

get_article

Get an article

One UFCalendar article by slug: full body in Markdown (client widgets removed), title, summary, author, tags and publication date, in the requested language when a translation exists (English otherwise). Betting editorial is not served.

Parametersslugrequiredlocale

get_calendar_feed_url

Get calendar feed URLs

The three subscribable ICS calendar feed URL templates for one promotion — per event, per card section, or per bout at its estimated start — with a <your-api-key> placeholder where the key goes. Returns URL templates only, never the caller's credential; the human pastes the finished URL into their calendar app.

Parametersorgrequired

list_webhook_endpoints

List webhook endpoints

List the signed webhook endpoints registered on the calling account, with the event kinds each one subscribes to.

Takes no parameters.

create_webhook_endpoint

Register a webhook endpoint

Register an https endpoint to receive signed webhooks (event announced, fight result, card changed, event completed, odds moved: the UFCalendar consensus odds line on an upcoming bout moved 5+ points or the favourite flipped; information only, not betting advice). The signing secret is returned ONCE — store it before the reply is discarded. At most 3 active endpoints per account.

Parametersurlrequiredevents

rotate_webhook_secret

Rotate a webhook signing secret

Replace the signing secret of one webhook endpoint. The old secret stops verifying immediately, so update the receiver first. The new secret is returned once.

Parametersendpoint_idrequired

delete_webhook_endpoint

Delete a webhook endpoint

Permanently remove one webhook endpoint from the calling account. Deliveries to it stop and its delivery history is dropped.

Parametersendpoint_idrequired

Version history

9
  1. v1.7.0LatestOct 31, 2026
  2. v1.6.0Oct 29, 2026
  3. v1.5.1Oct 11, 2026
  4. v1.5.0Sep 26, 2026
  5. v1.3.0Sep 25, 2026
  6. v1.2.0Sep 24, 2026
  7. v1.1.0Sep 20, 2026
  8. v1.0.1Sep 19, 2026
  9. v1.0.0Sep 19, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts