About server
server is an MCP server published by git+echoes-io in the AI category: π Model Context Protocol server for AI-powered storytelling with Narrative Knowledge Graph - extract characters, locations, relationships and search your stories semantically.
Install
npx @echoes-io/mcp-serverclaude mcp add server-gitechoe -- npx -y @echoes-io/mcp-servernpx -y @echoes-io/mcp-serverThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Tools (12)
mage_characters_listList configured characters with placeholders
Parameters not published.
mage_queue_addQueue a single image/video generation
Parameters not published.
mage_queue_add_bulkQueue multiple generations (one prompt per line)
Parameters not published.
mage_queue_cancelCancel a queued job
Parameters not published.
mage_queue_listList queued and processing jobs
Parameters not published.
mage_queue_pausePause the queue
Parameters not published.
mage_queue_resumeResume the queue
Parameters not published.
mage_results_listList generated results
Parameters not published.
mage_results_saveSave a result to local filesystem
Parameters not published.
mage_results_save_allSave all unsaved results for specified arcs
Parameters not published.
mage_statusGet overall system status
Parameters not published.
words-countCount words and statistics in a markdown file
Parameters not published.
Ask AI
Ask AI about server
Powered by Claude · Grounded in docs
Security checks
- βREADME presentThe repository ships documentation.
- !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.
4 checks have not been run yet.
README
Echoes MCP Server
Model Context Protocol server for AI integration with Echoes storytelling platform.
Features
- Narrative Knowledge Graph: Automatically extracts characters, locations, events, and their relationships using Gemini AI
- Semantic Search: Find relevant chapters using natural language queries
- Entity Search: Search for characters, locations, and events
- Relation Search: Explore relationships between entities
- Arc Isolation: Each arc is a separate narrative universe - no cross-arc contamination
- Statistics: Aggregate word counts, POV distribution, and more
- Dynamic Prompts: Reusable prompt templates with placeholder substitution
Installation
npm install -g @echoes-io/mcp-server
Or run directly with npx:
npx @echoes-io/mcp-server --help
Requirements
- Node.js 20+
- Gemini API key (for entity extraction)
Usage
CLI
# Count words in a markdown file
echoes words-count ./content/arc1/ep01/ch001.md
# Index timeline content
echoes index ./content
# Index only a specific arc
echoes index ./content --arc bloom
# Get statistics
echoes stats
echoes stats --arc arc1 --pov Alice
# Search (filters by arc to avoid cross-arc contamination)
echoes search "primo incontro" --arc bloom
echoes search "Alice" --type entities --arc bloom
# Check narrative consistency
echoes check-consistency bloom
echoes check-consistency bloom --rules kink-firsts,outfit-claims
MCP Server
Configure in your MCP client (e.g., Claude Desktop, Kiro):
{
"mcpServers": {
"echoes": {
"command": "npx",
"args": ["@echoes-io/mcp-server"],
"cwd": "/path/to/timeline",
"env": {
"GEMINI_API_KEY": "your_api_key"
}
}
}
}
Environment Variables
| Variable | Required | Default | Description |
|---|---|---|---|
GEMINI_API_KEY |
Yes | - | API key for Gemini entity extraction |
ECHOES_GEMINI_MODEL |
No | gemini-2.5-flash |
Gemini model for extraction |
ECHOES_EMBEDDING_MODEL |
No | Xenova/e5-small-v2 |
HuggingFace embedding model |
ECHOES_EMBEDDING_DTYPE |
No | fp32 |
Quantization level: fp32, q8, q4 (see Performance Notes) |
HF_TOKEN |
No | - | HuggingFace token for gated models |
Available Tools
| Tool | Description |
|---|---|
words-count |
Count words and statistics in a markdown file |
index |
Index timeline content into LanceDB |
search |
Search chapters, entities, or relations |
stats |
Get aggregate statistics |
check-consistency |
Analyze arc for narrative inconsistencies |
timeline-overview |
Quick overview of all arcs: status, chapters, words, POVs |
graph-export |
Export knowledge graph in various formats |
history |
Query character/arc history (kinks, outfits, locations, relations) |
review-generate |
Generate review file for pending entity/relation extractions |
review-status |
Show review statistics for an arc |
review-apply |
Apply corrections from review file to database |
Available Prompts
| Prompt | Arguments | Description |
|---|---|---|
arc-resume |
arc, episode?, lastChapters? | Load complete context for resuming work on an arc |
new-chapter |
arc, chapter | Create a new chapter |
revise-chapter |
arc, chapter | Revise an existing chapter |
expand-chapter |
arc, chapter, target | Expand chapter to target word count |
new-character |
name | Create a new character sheet |
new-episode |
arc, episode | Create a new episode outline |
new-arc |
name | Create a new story arc |
revise-arc |
arc | Review and fix an entire arc |
Architecture
Content Hierarchy
Timeline (content directory)
βββ Arc (story universe)
βββ Episode (story event)
βββ Chapter (individual .md file)
Arc Isolation
Each arc is treated as a separate narrative universe:
- Entities are scoped to arcs:
bloom:CHARACTER:Aliceβwork:CHARACTER:Alice - Relations are internal to arcs
- Searches can be filtered by arc to avoid cross-arc contamination
Data Flow
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β INDEXING PHASE β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β 1. Scan content/*.md (filesystem scanner) β
β 2. Parse frontmatter + content (gray-matter) β
β 3. For each chapter: β
β a. Extract entities/relations with Gemini API β
β b. Generate embeddings (Transformers.js ONNX) β
β c. Calculate word count and statistics β
β 4. Save everything to LanceDB β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Development
# Install dependencies
npm install
# Run tests
npm test
# Run tests with coverage
npm run test:coverage
# Lint
npm run lint
# Type check
npm run typecheck
# Build
npm run build
Tech Stack
| Purpose | Tool |
|---|---|
| Runtime | Node.js 20+ |
| Language | TypeScript |
| Vector DB | LanceDB |
| Embeddings | @huggingface/transformers (ONNX) |
| Entity Extraction | Gemini AI |
| MCP SDK | @modelcontextprotocol/sdk |
| Testing | Vitest |
| Linting | Biome |
Performance Notes
Embedding Quantization
The default embedding model (Xenova/e5-small-v2) supports different quantization levels via ECHOES_EMBEDDING_DTYPE:
| Level | Speed | Quality | Memory | Recommendation |
|---|---|---|---|---|
fp32 |
Baseline | Best (100%) | High | Production with ample resources |
q8 |
2-3x faster | Excellent (99.6%) | 50% less | Recommended - optimal balance |
q4 |
3-4x faster | Good (99.1%) | 75% less | Resource-constrained environments |
Note: Some models like onnx-community/embeddinggemma-300m-ONNX don't support fp16. Always check model documentation.
Recommended setting:
export ECHOES_EMBEDDING_DTYPE=q8
License
MIT
Part of the Echoes project - a multi-POV digital storytelling platform.
README copy captured when this server was indexed; it may lag the repository. The original is authoritative.