Skip to main content
Glama

Hololive MCP

An MCP server that brings hololive talent profiles and news to any AI client.

Python MCP License PRs Welcome


hololive-mcp is a lightweight Model Context Protocol server that exposes data from the official hololive English website as tools any MCP-compatible client can call. Ask your AI assistant about a talent's profile, browse the roster, or catch up on the latest announcements — no API key required.

Built with the official MCP Python SDK and served over stdio.

Features

  • Three read-only tools — list the roster, fetch a full talent profile, and read the latest news.

  • No API key, no account — data is read from the public hololive website.

  • Markdown-ready output — responses are formatted for direct display in chat.

  • Client agnostic — works with Claude Desktop, VS Code, Cursor, OpenCode, and any other MCP client that can spawn a stdio process.

  • Small footprint — requests, beautifulsoup4, and lxml.

Related MCP server: Upriver MCP

Available Tools

Tool

Arguments

Description

list_talents

—

Returns every talent listed on the official hololive English site — all generations and branches, including alumni and affiliates — with their English name, Japanese name, and profile slug.

get_talent_profile

talent_slug (string)

Returns a talent's catchphrase, biography, and social links. The slug is the last segment of their profile URL, e.g. mori-calliope.

get_recent_news

—

Returns the 10 most recent items from the hololive English news page as Markdown links.

Example output

list_talents

- Mori Calliope (森カリオペ) | slug: mori-calliope
- Takanashi Kiara (小鳥遊キアラ) | slug: takanashi-kiara
- Ninomae Ina'nis (一伊那尓栖) | slug: ninomae-inanis

get_talent_profile("mori-calliope")

**Mori Calliope**
Catchphrase: "Dead Beats, listen up! Your Mori's been working hard for you!"

Biography:
The Grim Reaper's first apprentice...

Social Links:
YouTube: https://www.youtube.com/channel/UCL_qhgtOy0dy1Agp8vkySQg
X: https://twitter.com/moricalliope

get_recent_news

- [2026.10.19 hololive Meet comes to Sweden...](https://hololive.hololivepro.com/en/news/20261019-01-239/)
- [2026.10.16 hololive 7th fes. delayed screening events...](https://hololive.hololivepro.com/en/news/20261016-01-238/)

Each news entry includes the full article body, not just the headline. Expect long strings.

Requirements

  • Python 3.11+

  • uv — recommended, but a plain pip install also works

  • Node.js 18+ — only needed for the MCP Inspector (mcp dev)

Installation

git clone https://github.com/faridhafizh/hololive-mcp.git
cd hololive-mcp

# Create the virtual environment and install dependencies
uv sync
python -m venv .venv
# Windows
.venv\Scripts\activate
# macOS / Linux
source .venv/bin/activate

pip install -e .

Usage

1. Run the server directly

uv run hololive-mcp

The equivalent entry point for scripts and inspectors is:

uv run server.py

Both start the server on stdio and wait for a client. Nothing is printed to stdout except MCP messages.

2. Debug with the MCP Inspector

uv run mcp dev server.py

This launches a browser UI (usually http://localhost:6274) where you can list tools and call them manually. Requires Node.js.

3. Connect from Claude Desktop

Add the following to your Claude Desktop config file:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "hololive": {
      "command": "uv",
      "args": [
        "--directory",
        "C:\\path\\to\\hololive-mcp",
        "run",
        "hololive-mcp"
      ]
    }
  }
}

Replace the path with the absolute location of your clone, then restart Claude Desktop.

4. Connect from other clients

Any client that supports stdio MCP servers works. Point it at the same command:

{
  "command": "uv",
  "args": ["--directory", "/path/to/hololive-mcp", "run", "hololive-mcp"]
}

For example, in VS Code (.vscode/mcp.json):

{
  "servers": {
    "hololive": {
      "type": "stdio",
      "command": "uv",
      "args": ["--directory", "/path/to/hololive-mcp", "run", "hololive-mcp"]
    }
  }
}

Example prompts

Once connected, try:

  • "List every hololive talent and group them by branch."

  • "Show me Mori Calliope's profile and social links."

  • "Who are the hololive English -Justice- members?"

  • "Summarize the three most recent hololive announcements."

  • "Which talents have graduated? Give me their names and slugs."

Project structure

hololive-mcp/
├── src/
│   └── hololive_mcp/
│       ├── __init__.py      # Package entry point (main, mcp)
│       └── server.py        # MCPServer definition and tool implementations
├── server.py                # Convenience shim for `mcp dev server.py`
├── pyproject.toml           # Project metadata and dependencies
├── uv.lock                  # Reproducible dependency lockfile
├── LICENSE
└── README.md

Troubleshooting

Symptom

Likely cause / fix

Could not find the talent list on the page.

The site markup changed. Update the CSS selectors in src/hololive_mcp/server.py.

requests.exceptions.Timeout

The request exceeded the 15-second timeout. Check your connection and retry.

403 Forbidden

The default User-Agent is being blocked. Update HEADERS in src/hololive_mcp/server.py.

mcp dev fails to start

Node.js is missing or too old. Install Node.js 18+.

Japanese names show as ?????? in a Windows console

Set PYTHONIOENCODING=utf-8 before running. MCP clients are unaffected.

Because the server scrapes HTML, breakage after a site redesign is expected from time to time. Selector fixes are welcome — see Contributing.

Disclaimer

This is an unofficial, fan-made project. It is not affiliated with, endorsed by, or sponsored by COVER Corporation or hololive production.

  • All names, images, text, and other content belong to their respective owners.

  • Data is retrieved from the public hololive website for personal, informational use only.

  • Please keep request volume reasonable — the server makes one HTTP request per tool call and does not cache. Do not use it for bulk scraping or redistribution.

Contributing

Issues and pull requests are welcome.

  1. Fork the repository and create a branch: git checkout -b fix/news-selector

  2. Make your change and verify it with uv run mcp dev server.py

  3. Keep the diff focused, and describe what you tested in the PR

License

Released under the MIT License.

Available Tools

3 tools
get_recent_newsA

Fetches the latest headlines from the hololive English news page (up to 10 items). Note that each entry includes the full article body, not just the title.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and does useful work by disclosing that entries include the full article body rather than just titles, which is a non-obvious payload trait. It also states the maximum item count. It does not mention authentication, rate limits, or failure behavior, leaving some behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two tight sentences with the primary purpose stated first. The second sentence adds a genuinely useful caveat about full article bodies, so every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description does not need to explain return structure in detail. It covers the source, item limit, and an important content characteristic, which is sufficient for a zero-parameter fetch tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so parameter semantics are not a meaningful concern and the baseline is 4. The description correctly avoids inventing parameter details that do not exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ("Fetches the latest headlines from the hololive English news page") and adds a concrete scope limit ("up to 10 items"). It is immediately distinguishable from the talent-related sibling tools, which operate on completely different resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly implies the tool's usage context: retrieving current news from a specific page. There are no sibling alternatives that compete with this function, so explicit when-not guidance is less necessary. However, it does not state exclusions or edge conditions, so it stops short of the top score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_talent_profileA

Fetches the profile page for a specific talent using their URL slug (e.g., 'mori-calliope', 'gawr-gura'). Returns their catchphrase, biography, and social links.

NameRequiredDescriptionDefault
talent_slugYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. 'Fetches' makes the read-only nature clear and the listed return fields give some sense of the response, but there is no mention of behavior on a nonexistent slug, rate limits, or pagination. Output schema exists, which lowers the bar for return-value detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler. The parameter is identified first, then the payoff (returned fields), which is the right front-loading for a lookup tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with an output schema, the description covers the input format and hints at the response shape, which is sufficient to call it correctly. The only meaningful gap is slug provenance and error behavior on a bad slug.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it does reasonably well: the parenthetical examples ('mori-calliope', 'gawr-gura') convey the slug format (lowercase, hyphenated) that the bare 'string' schema does not. It doesn't state whether slugs are case-sensitive or where to obtain them, keeping it short of a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Fetches') and resource ('the profile page for a specific talent'), and the return fields (catchphrase, biography, social links) further pin down what the resource is. An agent can distinguish this from list_talents (enumeration) and get_recent_news without consulting schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: fetch a single talent's profile when you have a slug. There is no explicit guidance about where slugs come from (presumably list_talents) or when to prefer this over the sibling tools, so the agent must infer the routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_talentsA

Returns a formatted list of every talent listed on the official hololive English site — all generations and branches, including alumni — with their English name, Japanese name, and profile URL slug.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description does convey that this is a live read of the official site and that results are exhaustive including alumni, which is meaningful context. It does not disclose freshness, failure modes, or ordering, so the behavioral picture is partial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence, front-loaded with the action and resource, then scope, then returned fields. No filler and nothing out of order.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values needn't be explained, and the description nonetheless names the key fields. For a zero-parameter read tool the coverage is nearly complete, with only minor gaps around result ordering and empty/error behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The description usefully characterizes what the fixed result set contains rather than leaving it blank.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb and resource — returns a formatted list of every talent on the official hololive English site — and pins the scope down (all generations, branches, alumni) plus the fields returned (English name, Japanese name, profile URL slug). This clearly separates it from get_talent_profile, which is the per-talent detail tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the exhaustive-list framing signals this is the enumeration entry point and get_talent_profile is for details, but the description never says when to choose one over the other or when not to call it. There are no explicit exclusions or alternatives named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updatesv0.1.0
    • First observedget_recent_news
    • First observedget_talent_profile
    • First observedlist_talents

TDQS

A4.2/5.0

Scored across 3 tools

Disambiguation5/5

Each tool targets a distinct resource and action: enumerating all talents, fetching a single talent's profile by slug, and fetching news headlines. There is no plausible way to confuse these three operations, and the descriptions reinforce the boundaries (list returns names/slugs, profile requires a slug from that list).

Naming Consistency5/5

All three tools follow a clean verb_noun snake_case pattern: list_talents, get_talent_profile, get_recent_news. The verb choice also meaningfully distinguishes collection-level (list) from item-level (get) retrieval.

Tool Count4/5

Three tools is on the lean side but each earns its place and covers a genuinely different need (roster, profile detail, news). It is a tightly scoped read-only scraping server, so the small surface is defensible rather than anemic.

Completeness4/5

The talent lifecycle is well covered: list_talents returns every slug, and get_talent_profile resolves any of them, so there are no dead ends. Minor gaps exist around filtering/searching by generation or branch and around fetching older news beyond the latest 10 items, but agents can work around both.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Exposes a public, read-only professional profile with tools to search resume evidence, fetch curated links, and generate career briefs for LLM agents.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides AI applications with real-time, evidence-backed context on creators, audiences, brands, trends, and sponsorships, including breakout topic search and browsing tools.
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI agents to read RSS/Atom feeds, extract web page content as text or Markdown, search the web, and batch-fetch multiple URLs without building custom crawlers.
    5
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables querying a personal portfolio through natural language, providing profile, skills, projects, services, availability, and contact information via read-only tools.
    7
    8 npm
    MIT