00:00 / 00:00

Eidolon

MCP Server

Overview

Beyond the voice avatar, LAPLACE Eidolon opens a read-only Model Context Protocol (MCP) server to the public. It exposes the same RAG indexes that drive the voice pipeline — streamer Milky Green's persona facts and past stream transcriptions — to any MCP client (Claude Desktop, Cursor, your own agent, and so on), so they can look up "who she is" and "what she said on a given stream"

The server is mounted on the bot's main app over Streamable HTTP, and the public instance lives at:

https://eidolon.vrp.moe/mcp

Connecting

Most MCP clients that speak Streamable HTTP only need a URL:

{
  "mcpServers": {
    "laplace-eidolon": {
      "url": "https://eidolon.vrp.moe/mcp"
    }
  }
}

Older clients limited to the stdio transport can bridge through mcp-remote:

{
  "mcpServers": {
    "laplace-eidolon": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://eidolon.vrp.moe/mcp"]
    }
  }
}

Tools

The server exposes two read-only search tools. Both take a single query string parameter and return a list of hits:

search_persona_facts

Searches hand-curated persona facts about the streamer — identity, lore, preferences, and running jokes. Suited to stable "who is she" questions rather than recalling a specific moment from one stream

Response shape:

{
  "count": 2,
  "results": [
    {
      "text": "人设事实原文",
      "date": "2026-05-09",
      "score": 0.82
    }
  ]
}
FieldMeaning
textThe persona fact verbatim
dateSource date for the fact (may be null)
scoreRelevance score

search_streams

Searches past stream transcriptions and returns the most relevant ~5-minute stream segments, each with its air date and topics. Suited to recalling "what she said or did on a given stream"

Response shape:

{
  "count": 1,
  "results": [
    {
      "stream_date": "2026-04-20",
      "content": "经精炼的直播片段叙述",
      "topics": ["话题A", "话题B"],
      "score": 0.77
    }
  ]
}
FieldMeaning
stream_dateAir date of the stream (may be null)
contentRefined segment narrative (prefers details, falls back to summary / raw transcription)
topicsArray of topic tags for the segment
scoreRelevance score

Authentication and Rate Limiting

The server is open to anonymous access by default and needs no credentials to call. Both kinds of caller get the same tools and the same public data — a token only raises the throughput quota and unlocks no private content (no Mem0, and nothing partitioned per viewer)

CallerAuthenticationDefault Quota
AnonymousBy client IP20/hour
Signed inAuthorization: Bearer <loginSyncToken>120/hour

The loginSyncToken you pass is the same one used for the WebRTC handshake, validated by LAPLACE Login Sync; the resolved Bilibili UID becomes the rate-limit key. Invalid, expired, or missing tokens are silently treated as anonymous rather than rejected. Every search costs one embedding (plus an optional Cohere rerank), and the quota is what bounds that cost

Self-Hosting

Beyond the public instance, a self-hosted Eidolon mounts the same server by default. The relevant environment variables:

Environment VariableDescription
EIDOLON_MCP_ANON_RATE_LIMIT_PER_HOURAnonymous hourly quota, defaults to 20
EIDOLON_MCP_AUTH_RATE_LIMIT_PER_HOURSigned-in hourly quota, defaults to 120
EIDOLON_MCP_RATE_LIMIT_WINDOW_SECRate-limit window in seconds, defaults to 3600
EIDOLON_MCP_ALLOWED_HOSTSHost allowlist against DNS rebinding (comma-separated)

Source Code

Last updated on September 19, 2026

Tech otakus destroy the world