FastAPI server to host OpenVoiceOS translate plugins as a service
Project description
OpenVoiceOS Translate Server
Turn any OVOS Language plugin into a micro service!
Use with OpenVoiceOS companion plugin
Install
pip install ovos-translate-server
Usage
ovos-translate-server --help
usage: ovos-translate-server [-h] [--tx-engine TX_ENGINE]
[--detect-engine DETECT_ENGINE] [--port PORT] [--host HOST]
optional arguments:
-h, --help show this help message and exit
--tx-engine TX_ENGINE
translate plugin to be used
--detect-engine DETECT_ENGINE
lang detection plugin to be used
--port PORT port number
--host HOST host
eg, to use the NLLB plugin for translation, and Lang Classifier Classics for detection
ovos-translate-server --tx-engine ovos-translate-plugin-nllb --detect-engine ovos-lang-detector-classics-plugin
then you can do get requests
http://0.0.0.0:9686/translate/en/o meu nome é Casimiro(auto detect source lang)http://0.0.0.0:9686/translate/pt/en/o meu nome é Casimiro(specify source lang)http://0.0.0.0:9686/detect/o meu nome é Casimiro
AI Agent Integration
UTCP — Universal Tool Calling Protocol
Every running instance of the server exposes a machine-readable UTCP manual at:
GET /utcp
The manual describes all translation and detection endpoints as HTTP tools so UTCP-compatible AI agents can discover and invoke them directly — no extra proxy layer required. The URLs in the manual use the same host/port the request arrived on, so the document is always self-consistent under any reverse-proxy deployment.
curl http://localhost:9686/utcp | python3 -m json.tool
Exposed tools
| UTCP tool name | Description |
|---|---|
ovos_translate.translate |
Translate text, source language auto-detected |
ovos_translate.translate_with_source |
Translate text with explicit source language |
ovos_translate.detect_language |
Return the BCP-47 language tag of a string |
ovos_translate.classify_language |
Return per-language confidence scores |
ovos_translate.supported_languages |
List all supported language codes |
No extra dependency is required for UTCP; the /utcp endpoint is always
registered when the server starts.
MCP — Model Context Protocol
An optional MCP server is embedded in
the main application when the mcp extra is installed:
pip install "ovos-translate-server[mcp]"
Once installed, the MCP endpoint is automatically mounted at /mcp using
the Streamable HTTP transport. Agents that speak MCP (Claude Desktop,
Continue, etc.) can add it as a server at:
http://localhost:9686/mcp
MCP tools
| Tool | Arguments | Returns |
|---|---|---|
translate |
text, target_lang, source_lang (optional) |
translated string |
detect_language |
text |
BCP-47 language tag |
Standalone MCP process
If you prefer to run the MCP server as a separate process (e.g. to bind it
to localhost only while the HTTP API is public):
python -m ovos_translate_server.mcp_server \
--tx-engine ovos-translate-plugin-nllb \
--detect-engine ovos-lang-detector-classics-plugin \
--host 127.0.0.1 \
--port 9687
Embedding in a custom FastAPI app
from ovos_translate_server import start_translate_server
from ovos_translate_server.mcp_server import get_mcp_app
app, engine = start_translate_server("ovos-translate-plugin-nllb")
# MCP is already mounted at /mcp; or mount it manually at a custom path:
# app.mount("/my-mcp", get_mcp_app(engine))
Claude Desktop configuration
{
"mcpServers": {
"ovos-translate": {
"url": "http://localhost:9686/mcp"
}
}
}
Docker
you can create easily crete a docker file to serve any plugin
FROM python:3.7
RUN pip3 install ovos-utils==0.0.15
RUN pip3 install ovos-plugin-manager==0.0.4
RUN pip3 install ovos-translate-server==0.0.1
RUN pip3 install {PLUGIN_HERE}
ENTRYPOINT ovos-translate-server --tx-engine {PLUGIN_HERE} --detect-engine {PLUGIN_HERE}
build it
docker build . -t my_ovos_translate_plugin
run it
docker run -p 8080:9686 my_ovos_translate_plugin
Each plugin can provide its own Dockerfile in its repository using ovos-translate-server
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ovos_translate_server-0.2.0a1.tar.gz.
File metadata
- Download URL: ovos_translate_server-0.2.0a1.tar.gz
- Upload date:
- Size: 17.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1b681add3cc1223cbc200bd4f79ab9ab6bf3c01782b6d5f2bc14c1513db6fc33
|
|
| MD5 |
8443864e8093d387efbc0b9d92224d1a
|
|
| BLAKE2b-256 |
1df30f628701ee2272f4e3fcde283e506d250d6033160d2b3b55cab2d1980b3a
|
File details
Details for the file ovos_translate_server-0.2.0a1-py3-none-any.whl.
File metadata
- Download URL: ovos_translate_server-0.2.0a1-py3-none-any.whl
- Upload date:
- Size: 18.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fa554f7ed08c13042a20575f8e74c7a0c20b4195eed1caae5f15938e8d13115e
|
|
| MD5 |
d79417f614578157d46965c9481b10b7
|
|
| BLAKE2b-256 |
2593118c03997e7d4810a4e74e0464e32e3d48e3f49f9302e5d44e272ccdae36
|