AniNest
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ANINEST_MCP_HOST | No | Host to bind when using HTTP or SSE transport mode. | 127.0.0.1 |
| ANINEST_MCP_PORT | No | Port to bind when using HTTP or SSE transport mode. | 8765 |
| ANINEST_ARENA_URL | No | URL of the local browser service used by arena_lookup. | http://127.0.0.1:6191 |
| ANINEST_BOORU_URL | No | URL of any Gelbooru-style JSON API used by art_search. | https://safebooru.org/index.php |
| ANINEST_MEMORY_DB | No | Path to the local memory SQLite database, opened read-only. | ~/.aninest/memory.db |
| ANINEST_PROBE_HOST | No | Host used for service health probing. | 127.0.0.1 |
| ANINEST_USER_AGENT | No | User-Agent sent to image board services. | aninest-mcp/0.1 (+…) |
| ANINEST_HTTP_TIMEOUT | No | HTTP timeout in seconds. | 15 |
| ANINEST_MCP_TRANSPORT | No | Transport mode for the MCP server. Valid values are stdio, streamable-http, or sse. | stdio |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| art_searchA | Search an illustration for a Chinese or English request. Args: query: free-form request, e.g. "初音未来 泳装 竖图"; tags/count/orientation are parsed. count: number of images, 1-10. size: "compressed" for a smaller preview, "original" for the full-size file. orientation: optional "landscape", "portrait" or "square" filter. extra_tags: additional canonical booru tags to include. negative: tags to exclude, sent to the board as "-tag". |
| character_lookupA | Map a character name, nickname, four-digit uid or six-digit id to an arena id. Args: query: what the player said — "布丁", "克总", "猫拳", "1001", "100101". limit: how many candidates to return, 1-10. |
| portrait_identifyA | Identify which characters are in cropped portrait images. Args: images: one entry per portrait — a file path, raw bytes as base64, or a data URI. top_k: candidates per portrait, 1-10. min_score: similarity floor below which the portrait counts as unknown, 0-1. |
| arena_lookupA | Look up defence teams for a lineup via the local arena browser service. Args: defense: the lineup by name — "布丁", "克总", "真琴" … (names, aliases or ids). def_ids: the same thing as six-digit ids, if you already have them. region: arena region id, 1 = mainland, 2 = overseas, 0 = no filtering. limit: how many teams to summarise, 1-6 (display cap, not a game rule). exclude: names to drop before searching ("先排除一个再查"). replace: in-place swaps such as ["宫子->真琴"]; positions are preserved. |
| memory_searchA | Search the assistant's local memory store (read-only). Args: query: keywords or a sentence to look for. limit: maximum hits, 1-20. scope: "all", "session" or "global". |
| memory_statsA | Report row counts and database size of the local memory store. |
| service_healthA | Probe the local services of the assistant stack and report their status. |
| character_matchA | Rank characters by how close their names are to a query. Use this when a lookup fails because the name is not in the table: the score
and Args: query: a name in any form, e.g. "宫紫", "ミヤコ", "miyako". top_k: how many candidates to return, 1-20. threshold: minimum score, 0-1; below it nothing is returned. |
| character_updateA | Add a character or extend its aliases in the local overlay file. New characters are usually published in Japan first and arrive with a
Japanese name before any Chinese alias exists; pass Args: char_id: six-digit arena id, e.g. 100701. name: Chinese name; required when creating a character that is not known. aliases: extra names to accept, e.g. ["布丁新皮", "miyako"]. jp: Japanese name, e.g. "ミヤコ". servers: servers the character exists on, e.g. ["jp", "cn"]. remove_aliases: aliases to drop (a wrong alias is worse than a missing one). |
| character_correctA | Teach the table that This is the manual fix for a wrong match: the term is stored as an alias of the chosen character and the correction is logged with a timestamp. Args: term: what the user actually typed, e.g. "宫紫". char_id: the character it should resolve to (id or any known name). note: optional free text kept with the correction. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| find_illustration | Prompt template that asks the host model to search an illustration. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| memory_stats_resource | Memory store footprint, exposed as an MCP resource. |
TDQS
Scored across 10 tools
Most tools target clearly distinct resources: image identification, art search, arena defence lookup, memory search/stats, and service health. Two pairs blur at the edges — character_lookup vs character_match (exact-ish resolution vs fuzzy fallback ranking) and character_update vs character_correct (both can install a new alias) — but the descriptions explicitly frame one as the fallback/manual fix for the other, so an agent can choose correctly.
Every tool follows the same snake_case noun_verb pattern (portrait_identify, art_search, character_lookup, arena_lookup, memory_search, character_update...). The shared character_/memory_ prefixes also make the groupings immediately legible.
Ten tools is well within the sweet spot and each one maps to a concrete operation in the assistant stack. No filler tools and no obviously missing sibling that would force a merge.
Character resolution has a full lifecycle (lookup, fuzzy match, create/extend, manual correction with alias removal), and identification, art search, arena, memory and health probes cover the surrounding workflows. Minor gaps remain: no way to delete a character entirely or list/browse the table, and the memory surface is explicitly read-only with no write path inside this server.