40 lines
1.5 KiB
YAML
40 lines
1.5 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.
|
||
|
|
#
|
||
|
|
# Health check omitted deliberately: `search_docs` requires a library argument,
|
||
|
|
# so a synthetic probe would need a library that is only present after a scrape
|
||
|
|
# and would report unhealthy on a fresh instance.
|
||
|
|
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
|