Files
mcpctl/templates/docs-mcp.yaml
Michal 8a31121e30 Merge remote-tracking branch 'origin/main' into feat/web-search-templates
# Conflicts:
#	completions/mcpctl.bash
#	completions/mcpctl.fish
#	src/cli/src/commands/create.ts
#	src/db/src/seed/index.ts
2026-08-12 23:11:54 +01:00

45 lines
1.7 KiB
YAML

name: docs-mcp
version: "1.0.0"
description: Self-hosted library documentation index — version-pinned docs scraped from sites, GitHub, npm and PyPI
dockerImage: "ghcr.io/arabold/docs-mcp-server:latest"
transport: SSE
containerPort: 6280
repositoryUrl: https://github.com/arabold/docs-mcp-server
command:
- --protocol
- http
- --host
- 0.0.0.0
- --port
- "6280"
# The scraped index is a SQLite file (better-sqlite3 + sqlite-vec) under /data.
# There is no external-database mode, so the volume below is what makes the
# index outlive instance recreation. Its claim is named after the server
# (mcpctl-<server>-data), not the instance, so a server edit re-attaches to the
# same data instead of starting empty.
#
# `list_libraries` takes no arguments and reads the SQLite store, so a pass
# proves the volume is actually mounted and readable — not just that the process
# is up. It answers "No libraries indexed yet." on a fresh instance rather than
# erroring, which is why it works as a probe where `search_docs` (needs a
# library that only exists after a scrape) does not.
healthCheck:
tool: list_libraries
arguments: {}
volumes:
- name: data
mountPath: /data
sizeGb: 20
env:
- name: DOCS_MCP_EMBEDDING_MODEL
description: >-
Embedding model as provider:name. Unset = keyword search only. For local
embeddings use openai:nomic-embed-text with OPENAI_API_BASE on Ollama.
required: false
- name: OPENAI_API_BASE
description: OpenAI-compatible embeddings endpoint, e.g. http://ollama:11434/v1
required: false
- name: OPENAI_API_KEY
description: Embeddings API key. Literal "ollama" when pointing at a local Ollama.
required: false