Football Atlas — MCP server

MCP serverDev tools

Your AI can answer questions about the Laws of the Game and the world's major football competitions, with every claim cited to a primary source. futbol-atlas adds this reference to your AI, so rules and competition questions get grounded, checkable answers.

Use Football Atlas — MCP server in Claude, ChatGPT or Ahel Desktop

Free. Sign in, add Football Atlas — MCP server and connect your AI. About a minute.

Also: Claude Code · Cursor · Codex

Then ask your AI: use Football Atlas to search

Details

Available today. Use it from your connected AI after setup.

Once it is added, ask your AI a rules question or something about a major competition, then check the primary sources it cites.

Football Atlas — MCP serverStart free

What your AI can do with it

  • Answer questions about the Laws of the Game
  • Explain what the rules say about a specific situation
  • Describe the world's major football competitions
  • Cite primary sources for every football claim it makes

Install Football Atlas — MCP server

The server’s own address, for the clients that take one directly. Or connect Ahel once and every client you use reads it from one address, with the account kept on Ahel rather than in each client’s config.

  • Claude Code

    claude mcp add --transport http --scope user football-atlas-mcp-server 'https://futbolatlas.app/mcp?via=manifest'

    Run it once in your project, then open /mcp to approve any sign-in the server asks for.

  • Claude Desktop

    https://futbolatlas.app/mcp?via=manifest

    Add a custom connector in Settings, paste this address, and approve the sign-in.

  • Cursor

    cursor://anysphere.cursor-deeplink/mcp/install?name=football-atlas-mcp-server&config=eyJ1cmwiOiJodHRwczovL2Z1dGJvbGF0bGFzLmFwcC9tY3A/dmlhPW1hbmlmZXN0In0=

    Open the link and Cursor adds the server at that address.

  • ChatGPT

    https://futbolatlas.app/mcp?via=manifest

    In Settings, enable Developer mode, create an MCP app, and paste this address. Your plan and workspace must allow custom apps.

  • Codex

    codex mcp add football-atlas-mcp-server --url 'https://futbolatlas.app/mcp?via=manifest'

    Run it once, then sign in with codex mcp login football-atlas-mcp-server if the server asks for an account.

From the project's README

As published by citarium/futbolatlas-mcp in README.md.

The Laws of the Game and world football's major competitions, every claim cited to primary sources

A remote MCP server over a curated knowledge graph. Every claim it returns is bound to a registered source: the tools hand back claims with their citations and a confidence value, so an agent can show its work instead of asserting.

Nothing to install. It is a hosted streamable-HTTP endpoint:

https://futbolatlas.app/mcp

Also listed on Smithery.

Add it to a client

Claude Code

claude mcp add --transport http futbol-atlas https://futbolatlas.app/mcp

Claude Desktop / any client reading mcpServers

{
  "mcpServers": {
    "futbol-atlas": {
      "type": "streamable-http",
      "url": "https://futbolatlas.app/mcp"
    }
  }
}

No API key, no account, no auth. Read-only.

Check it answers, without any client at all:

curl -s https://futbolatlas.app/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'mcp-protocol-version: 2025-06-18' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Tools

Eight, each with an outputSchema, each returning structuredContent.

toolargumentswhat it does
get_overview—Corpus overview: what this instance knows, counts by type, published tags, freshness. Start here when you land and do not yet know whether this corpus can answer your question.
searchquery, limit?Full-text search over the knowledge graph. Accent- and apostrophe-insensitive, so query in the user's own words; every hit carries its relevance score and the fields it matched.
answerquestionAnswer a question from the corpus. Returns the matched object's claims with sources and confidence — never an unsourced answer.
get_entityidFetch one knowledge object by id, with its claims and the sources each claim cites.
get_topictagList the knowledge objects carrying a tag (topics are content-backed tags).
get_relatedidGraph neighbours of an object: outgoing and incoming relations, each with its relation type.
get_sourcesobject_id?The whole source registry, or just the sources cited by one object. Use it to judge the corpus before trusting it.
get_latestlimit?Most recently verified knowledge objects — a freshness signal.

The intended path is get_overview → search or answer → get_entity → get_related. get_overview exists because an agent that has just arrived needs to know whether this corpus can help before it spends a call guessing.

What is in the corpus

knowledge objects141
registered sources132
published topics96
typeobjects
entity114
glossary12
faq7
guide5
comparison3

Subject matter: the seventeen Laws of the Game as the IFAB writes them, VAR protocol and its review categories, competition formats and qualification paths, offside, handball and the wording that decides them.

Questions it is built to answer

  • What exactly does Law 11 say about a player's position at the moment the ball is played?
  • When may VAR intervene, and when is it forbidden to?
  • How does a team qualify for the Champions League league phase?

What an answer actually looks like

A real call against the live endpoint — answer with "when can VAR intervene" — returns this structuredContent, trimmed:

{
  "answered": true,
  "entity": {
    "id": "var",
    "name": "VAR (Video Assistant Referee)",
    "evidence_tier": "primary",
    "confidence": 0.94,
    "last_verified": "2026-08-08",
    "canonical_url": "https://futbolatlas.app/k/var"
  },
  "claims": [
    {
      "text": "The VAR may assist the referee only for a clear and obvious error or a serious missed incident in these match-changing categories: goal/no goal, penalty/no penalty, direct red card, and mistaken identity when the referee cautions or sends off the wrong player of the offending team.",
      "sources": [{ "title": "Video Assistant Referee (VAR) protocol (Laws of the Game 2026/27)" }]
    }
  ]
}

Note what travels with the answer: the evidence tier, a confidence, the date it was last verified, and the source behind the claim — not as prose an agent has to parse, but as fields it can act on. An agent can decline to use a weak claim, or cite the primary source directly.

When the corpus cannot answer, answered is false. It does not improvise, and the miss is recorded so the gap can be filled.

Machine-readable surfaces

The MCP endpoint is one of several. The same corpus is served as plain files an agent can read directly:

surfacewhat it is
/llms.txtthe index, as text/plain
/llms-full.txtthe whole corpus in one file
/ai-index.jsonevery surface this instance publishes, with its content type
/api/index.jsonone JSON document per knowledge object
/api/sources.jsonthe source registry, in full
/.well-known/mcp/server.jsonthis server's manifest

Each knowledge object has a human page and a machine twin at the same id, with a canonical URL that agrees across all of them.

The version in this repository's server.json

It is the corpus version, not the framework's (ADR-017): a corpus that grew by forty objects has to be republishable without waiting for someone to cut a software release, and a framework patch must not announce "new version" for corpora that did not change. The authoritative value is the one the site generates and serves — the version field of /.well-known/mcp/server.json, alongside _citarium.corpus_version.

The copy in this repository is maintained by hand, and it drifted: it sat at 0.6.5 while the site served 2026.809.141. Before publishing to the MCP Registry, copy the served value. The two files are otherwise NOT identical on purpose — this one carries ?via=registry on its remote and the served one carries ?via=manifest, so the traffic each channel sends can be told apart.

Behaviour worth knowing before you integrate

  • POST only. Every other method answers 405 with an Allow: POST, OPTIONS header.
  • Rate limit: 120 requests per minute per client, counted in a shared store, published on every response as RateLimit-Limit, RateLimit-Remaining and RateLimit-Reset (all three exposed via CORS). It fails open: if the store is unreachable the request is served.
  • Malformed input gets a spec-correct JSON-RPC error — -32700 for unparseable bodies, -32602 for an unknown tool — never an HTML error page.
  • Request bodies are capped and validated before transport.

Privacy

No accounts, no cookies, no ads. Usage is measured in aggregate with daily-rotating hashed identifiers and a 200-day retention; raw IPs are never stored. Full policy: PRIVACY.md.

Provenance and licence

Knowledge content is CC-BY-4.0: use it, cite it. The source registry is public precisely so a claim can be checked rather than trusted — get_sources returns what any given claim rests on.

Claims carry an evidence tier and a last_verified date. Where the evidence is weaker, the object says so rather than rounding up.

How it is built

Compiled and served by Citarium, a source-available framework for turning a knowledge graph into a website, an API, an MCP server and agent-readable files from a single source, under external evaluation.

The framework's code is licensed under the Business Source License 1.1 and its repository is not public. What is public — and what actually matters for trusting an answer — is this server, the corpus it serves, and the registered source behind every claim: get_sources returns what any given claim rests on, so it can be checked rather than trusted.

This repository is the server's public face: its manifest and its documentation. The corpus itself lives at futbolatlas.app.

Tools it offers (9)

What this server listed when Ahel dialed its public endpoint in Oct 2026, with no key and no account of yours. The names are the server’s own.

  • search
  • get_entity
  • get_topic
  • answer
  • get_sources
  • get_related
  • get_latest
  • get_overview
  • compare

Signals

Last commit
Sep 2026
Advanced
Delivery
futbol-atlas MCP server → your Ahel connector (mcp.ahel.ai) → your AI.
Item type
mcp-server
Key
app-futbolatlas-futbol-atlas
Source
github.com/citarium/futbolatlas-mcp
Hosted endpoint
https://futbolatlas.app/mcp?via=manifest