FighterAPI

UFC fights since 2000, plus PFL and Bellator: results, round stats, fighters and odds. REST and MCP.

Should I use this

Quality & Safety

A
Description quality
93%
Schema completeness
96%
Naming quality
100%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (2)

  • LOWTool 'get_event' description lacks action verbin get_event
  • LOWTool 'get_fighter_fights' description lacks action verbin get_fighter_fights

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~3,506Tokens (tool definitions)
~2.6 KBTypical response size
Significant attention impact (2.74% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "fighterapi": {
      "url": "https://mcp.fighterapi.com/mcp"
    }
  }
}

Remote endpoints

https://mcp.fighterapi.com/mcpstreamable-http

What it can do

Tool inventory

Tools (11)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢list_events(season, status, limit, offset, league)

Use to find cards. Lists events newest first with the venue, status, number of fights and main event. Filter by season (year) and status (scheduled or final). Costs 1 credit.

Input Schema

{
  "type": "object",
  "properties": {
    "season": {
      "description": "Year, e.g. 2025.",
      "type": [
        "string",
        "number"
      ]
    },
    "status": {
      "description": "Only upcoming or only completed cards.",
      "type": "string",
      "enum": [
        "scheduled",
        "final"
      ]
    },
    "limit": {
      "description": "Max events (default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    },
    "offset": {
      "description": "Page offset; use next_offset.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "league": {
      "description": "League. Defaults to mma. One of: mma, pfl, bellator.",
      "type": "string",
      "enum": [
        "mma",
        "pfl",
        "bellator"
      ]
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "events": {
      "type": "array",
      "items": {
        "type": "object",
        "propertyNames": {
          "type": "string"
        },
        "additionalProperties": {}
      }
    },
    "count": {
      "type": "number"
    },
    "next_offset": {
      "type": [
        "number",
        "null"
      ]
    }
  },
  "required": [
    "events",
    "count"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢get_event(event_id, league)

Use for one card: every fight in order with the result, method, round and time, judges' scores and referee. Costs 2 credits.

Input Schema

{
  "type": "object",
  "properties": {
    "event_id": {
      "type": "string",
      "description": "Event id from list_events or get_schedule."
    },
    "league": {
      "description": "League. Defaults to mma. One of: mma, pfl, bellator.",
      "type": "string",
      "enum": [
        "mma",
        "pfl",
        "bellator"
      ]
    }
  },
  "required": [
    "event_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "event": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "bouts": {
      "type": "array",
      "items": {
        "type": "object",
        "propertyNames": {
          "type": "string"
        },
        "additionalProperties": {}
      }
    },
    "count": {
      "type": "number"
    }
  },
  "required": [
    "event",
    "bouts",
    "count"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢get_schedule(days, league)

Use for upcoming fights: every scheduled bout in the next N days (default 30) with the current moneyline from any book that has posted one. Costs 2 credits.

Input Schema

{
  "type": "object",
  "properties": {
    "days": {
      "description": "Days ahead (default 30, max 180).",
      "type": "integer",
      "minimum": 1,
      "maximum": 180
    },
    "league": {
      "description": "League. Defaults to mma. One of: mma, pfl, bellator.",
      "type": "string",
      "enum": [
        "mma",
        "pfl",
        "bellator"
      ]
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "days": {
      "type": "number"
    },
    "bouts": {
      "type": "array",
      "items": {
        "type": "object",
        "propertyNames": {
          "type": "string"
        },
        "additionalProperties": {}
      }
    },
    "count": {
      "type": "number"
    }
  },
  "required": [
    "days",
    "bouts",
    "count"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢get_fight(bout_id, league)

Use for everything about one fight: the result, both fighters' full stat sheets (strikes by target and position, takedowns, control time, guard passes, reversals, submission attempts; UFC only, null elsewhere and where the source has no sheet), round-by-round lines (UFC only), each fighter's rating before and after, and the opening and closing moneyline from each book that posted one (2024 on). Costs 5 credits.

Input Schema

{
  "type": "object",
  "properties": {
    "bout_id": {
      "type": "string",
      "description": "Fight id (bout_id) from get_event or get_fighter_fights."
    },
    "league": {
      "description": "League. Defaults to mma. One of: mma, pfl, bellator.",
      "type": "string",
      "enum": [
        "mma",
        "pfl",
        "bellator"
      ]
    }
  },
  "required": [
    "bout_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "bout": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "fighters": {
      "type": "array",
      "items": {
        "type": "object",
        "propertyNames": {
          "type": "string"
        },
        "additionalProperties": {}
      }
    },
    "rounds": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          }
        },
        {
          "type": "null"
        }
      ]
    },
    "rounds_note": {
      "type": "string"
    },
    "odds": {
      "type": "array",
      "items": {
        "type": "object",
        "propertyNames": {
          "type": "string"
        },
        "additionalProperties": {}
      }
    }
  },
  "required": [
    "bout",
    "fighters",
    "rounds",
    "odds"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢search_fighters(query, weight_class, limit, league)

Use to find a fighter's id by name or nickname (accents optional). Returns weight class, country, pro record, number of fights in the promotion (bouts; ufc_bouts for the UFC only) and last fight date. Costs 1 credit.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 2,
      "description": "Name or nickname, e.g. Topuria or 'El Matador'."
    },
    "weight_class": {
      "description": "e.g. Lightweight, Women's Strawweight.",
      "type": "string"
    },
    "limit": {
      "description": "Max results (default 20).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "league": {
      "description": "League. Defaults to mma. One of: mma, pfl, bellator.",
      "type": "string",
      "enum": [
        "mma",
        "pfl",
        "bellator"
      ]
    }
  },
  "required": [
    "query"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "fighters": {
      "type": "array",
      "items": {
        "type": "object",
        "propertyNames": {
          "type": "string"
        },
        "additionalProperties": {}
      }
    },
    "count": {
      "type": "number"
    }
  },
  "required": [
    "fighters",
    "count"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢get_fighter(fighter_id, league)

Use for one fighter's profile: date of birth, height, reach, stance, gym, record in the promotion by method (record; ufc_record is the same for the UFC and null for other promotions), career rates per 15 minutes from the stat sheets (significant strikes landed and absorbed, accuracy, defense, takedowns, submission attempts, control share; UFC only), current and peak rating, and the last five fights. Costs 5 credits.

Input Schema

{
  "type": "object",
  "properties": {
    "fighter_id": {
      "type": "string",
      "description": "Fighter id from search_fighters."
    },
    "league": {
      "description": "League. Defaults to mma. One of: mma, pfl, bellator.",
      "type": "string",
      "enum": [
        "mma",
        "pfl",
        "bellator"
      ]
    }
  },
  "required": [
    "fighter_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "fighter": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "record": {
      "anyOf": [
        {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        },
        {
          "type": "null"
        }
      ]
    },
    "ufc_record": {
      "anyOf": [
        {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        },
        {
          "type": "null"
        }
      ]
    },
    "career_rates": {
      "anyOf": [
        {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        },
        {
          "type": "null"
        }
      ]
    },
    "rating": {
      "anyOf": [
        {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        },
        {
          "type": "null"
        }
      ]
    },
    "recent_fights": {
      "type": "array",
      "items": {
        "type": "object",
        "propertyNames": {
          "type": "string"
        },
        "additionalProperties": {}
      }
    }
  },
  "required": [
    "fighter",
    "record",
    "ufc_record",
    "career_rates",
    "rating",
    "recent_fights"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢get_fighter_fights(fighter_id, limit, offset, league)

Use for a fighter's full history in the promotion: every fight with the opponent, result, method, round, time, strikes landed and absorbed and takedowns (UFC only), rating before and after, and the median closing moneyline across sportsbooks. Costs 5 credits.

Input Schema

{
  "type": "object",
  "properties": {
    "fighter_id": {
      "type": "string",
      "description": "Fighter id from search_fighters."
    },
    "limit": {
      "description": "Max fights (default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    },
    "offset": {
      "description": "Page offset; use next_offset.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "league": {
      "description": "League. Defaults to mma. One of: mma, pfl, bellator.",
      "type": "string",
      "enum": [
        "mma",
        "pfl",
        "bellator"
      ]
    }
  },
  "required": [
    "fighter_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "fighter_id": {
      "type": "string"
    },
    "fights": {
      "type": "array",
      "items": {
        "type": "object",
        "propertyNames": {
          "type": "string"
        },
        "additionalProperties": {}
      }
    },
    "count": {
      "type": "number"
    },
    "next_offset": {
      "type": [
        "number",
        "null"
      ]
    }
  },
  "required": [
    "fighter_id",
    "fights",
    "count"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢get_leaders(stat, weight_class, since, min_fights, limit)

Use for career leaderboards computed from every fight's stat sheet: sig_landed_per_15 (significant strikes landed per 15 min), sig_absorbed_per_15 (significant strikes absorbed per 15 min), sig_accuracy (significant strike accuracy), sig_defense (significant strike defense), td_per_15 (takedowns landed per 15 min), td_accuracy (takedown accuracy), td_defense (takedown defense), knockdowns (knockdowns), sub_attempts_per_15 (submission attempts per 15 min), control_share (share of fight time in control), finish_rate (wins by KO/TKO or submission, as a share of wins). Filter by weight class, a starting year, and a minimum number of fights (default 5). Costs 5 credits.

Input Schema

{
  "type": "object",
  "properties": {
    "stat": {
      "type": "string",
      "enum": [
        "sig_landed_per_15",
        "sig_absorbed_per_15",
        "sig_accuracy",
        "sig_defense",
        "td_per_15",
        "td_accuracy",
        "td_defense",
        "knockdowns",
        "sub_attempts_per_15",
        "control_share",
        "finish_rate"
      ],
      "description": "Which leaderboard."
    },
    "weight_class": {
      "description": "Only fights in this weight class, e.g. Lightweight.",
      "type": "string"
    },
    "since": {
      "description": "Only fights from this year on, e.g. 2020.",
      "type": [
        "string",
        "number"
      ]
    },
    "min_fights": {
      "description": "Minimum fights to qualify (default 5).",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "limit": {
      "description": "Max fighters (default 20).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "required": [
    "stat"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "stat": {
      "type": "string"
    },
    "label": {
      "type": "string"
    },
    "min_fights": {
      "type": "number"
    },
    "leaders": {
      "type": "array",
      "items": {
        "type": "object",
        "propertyNames": {
          "type": "string"
        },
        "additionalProperties": {}
      }
    },
    "count": {
      "type": "number"
    }
  },
  "required": [
    "stat",
    "label",
    "min_fights",
    "leaders",
    "count"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢get_ratings(weight_class, active_since, limit, league)

Use for our fighter ratings: an Elo built from the promotion's own results (the UFC since 2000), highest first, for fighters active since a given year (default last year). Filter by weight class. Costs 2 credits.

Input Schema

{
  "type": "object",
  "properties": {
    "weight_class": {
      "description": "e.g. Welterweight.",
      "type": "string"
    },
    "active_since": {
      "description": "Only fighters whose last fight was in this year or later.",
      "type": [
        "string",
        "number"
      ]
    },
    "limit": {
      "description": "Max fighters (default 25).",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    },
    "league": {
      "description": "League. Defaults to mma. One of: mma, pfl, bellator.",
      "type": "string",
      "enum": [
        "mma",
        "pfl",
        "bellator"
      ]
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "active_since": {
      "type": "number"
    },
    "ratings": {
      "type": "array",
      "items": {
        "type": "object",
        "propertyNames": {
          "type": "string"
        },
        "additionalProperties": {}
      }
    },
    "count": {
      "type": "number"
    },
    "method": {
      "type": "string"
    }
  },
  "required": [
    "active_since",
    "ratings",
    "count",
    "method"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢get_odds(bout_id, event_id, league)

Use for betting lines: each posted sportsbook's opening, closing and current moneyline for both fighters, with implied probabilities and the total-rounds line. Opening and closing lines start with the UFC cards of June 2020; a median of 5 to 7 books per fight (ESPN's own feed is one book per fight since mid-2024). Pass bout_id for one fight (5 credits) or event_id for a whole card (10 credits).

Input Schema

{
  "type": "object",
  "properties": {
    "bout_id": {
      "description": "One fight.",
      "type": "string"
    },
    "event_id": {
      "description": "A whole card.",
      "type": "string"
    },
    "league": {
      "description": "League. Defaults to mma. One of: mma, pfl, bellator.",
      "type": "string",
      "enum": [
        "mma",
        "pfl",
        "bellator"
      ]
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "bouts": {
      "type": "array",
      "items": {
        "type": "object",
        "propertyNames": {
          "type": "string"
        },
        "additionalProperties": {}
      }
    },
    "count": {
      "type": "number"
    },
    "note": {
      "type": "string"
    },
    "estimate_only": {
      "type": "boolean"
    },
    "tool": {
      "type": "string"
    },
    "credits": {
      "type": "number"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢get_line_movement(bout_id, provider, league)

Use to see how a fight's line moved before the bell: our snapshots of each posted moneyline, from first capture to fight day (ESPN's once a day from October 2026, The Odds API's every hour in the two days before). Costs 10 credits.

Input Schema

{
  "type": "object",
  "properties": {
    "bout_id": {
      "type": "string",
      "description": "Fight id."
    },
    "provider": {
      "description": "One sportsbook, e.g. DraftKings.",
      "type": "string"
    },
    "league": {
      "description": "League. Defaults to mma. One of: mma, pfl, bellator.",
      "type": "string",
      "enum": [
        "mma",
        "pfl",
        "bellator"
      ]
    }
  },
  "required": [
    "bout_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "bout": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "movement": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "type": "array",
        "items": {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        }
      }
    },
    "snapshots": {
      "type": "number"
    },
    "note": {
      "type": "string"
    }
  },
  "required": [
    "bout",
    "movement",
    "snapshots"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded11 tools