This release is a pre-release and may not be stable for production use.
ovos-tool-adapters
Bridges MCP (Model Context Protocol) and UTCP (Universal Tool Calling Protocol) servers into the OVOS agentic loop as standard ToolBox plugins.
Configure an MCP or UTCP server in your persona JSON. The agent loop then consumes it like any other toolbox, with no protocol awareness required.
Install
pip install --pre ovos-tool-adapters[mcp] # MCP support
pip install --pre ovos-tool-adapters[utcp] # UTCP support
pip install --pre ovos-tool-adapters[mcp,utcp]
Quick start
Add to your persona JSON:
{
"name": "researcher",
"chat_module": "ovos-react-loop",
"toolboxes": ["ovos-mcp-toolbox"],
"ovos-mcp-toolbox": {
"transport": "stdio",
"command": "uvx",
"args": ["mcp-server-fetch"],
"timeout": 30
}
}
The agent then has access to every tool the MCP server exposes, with the real JSON Schema forwarded to the LLM.
Supported transports
MCP (ovos-mcp-toolbox)
| Transport | Config |
|---|---|
| stdio (subprocess) | "transport": "stdio", "command": "uvx", "args": [...] |
| SSE | "transport": "sse", "url": "http://..." |
| Streamable HTTP | "transport": "http", "url": "http://..." |
UTCP (ovos-utcp-toolbox)
The utcp extra installs the UTCP 1.x client and its HTTP plugin (utcp-http). Each entry in manual_call_templates points at a UTCP manual. This example loads the manual of a local ovos-translate-server:
{
"toolboxes": ["ovos-utcp-toolbox"],
"ovos-utcp-toolbox": {
"utcp_config": {
"manual_call_templates": [
{
"name": "ovos_translate",
"call_template_type": "http",
"url": "http://localhost:9686/utcp",
"http_method": "GET"
}
]
}
}
}
The agent then gets tools such as ovos_translate_translate_with_source: the UTCP name ovos_translate.translate_with_source with the dot replaced, because function-calling providers reject a dot in a tool name. Other call template types (CLI, SSE, WebSocket, MCP) need their own UTCP plugin package, for example utcp-cli.
How it works
- A daemon-thread asyncio event loop keeps MCP/UTCP sessions alive between calls, so there is no reconnect per tool call.
- Each server's JSON Schema is translated to a Pydantic model at discovery time, so the LLM sees the actual input schema.
- Missing
mcp/utcppackages degrade gracefully: the toolbox returns an empty tool list and logs a warning, and the agent loop is not affected. - A config with a
tool_providersorproviderskey loads no tools. These keys are not UTCP 1.x keys. The toolbox logs an error that namesmanual_call_templatesand links docs/utcp.md.
Full documentation: docs/
Credits
Developed by TigreGótico for OpenVoiceOS.
This project was funded through the NGI0 Commons Fund, a fund established by NLnet with financial support from the European Commission's Next Generation Internet programme, under the aegis of DG Communications Networks, Content and Technology under grant agreement No 101135429.
License
Apache 2.0. See LICENSE.
Metadata
Release files for ovos-tool-adapters 0.1.10a2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| ovos_tool_adapters-0.1.10a2.tar.gz | 33.2 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ovos_tool_adapters-0.1.10a2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 55.3 kB
Release files / ovos_tool_adapters-0.1.10a2.tar.gz
| Download URL | ovos_tool_adapters-0.1.10a2.tar.gz |
|---|---|
| Size | 33.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2b4d210bf9537762363f53c3b0fa1f5f21f044ce110aed781cedfadeddfbdbaa
|
|
BLAKE2b-256 checksum How to use checksums |
cff4f31d0255716e64f99a5c5cb6a41d1f8f45f2c51c7240d1ea56fc4bbb5d91
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ovos_tool_adapters-0.1.10a2-py3-none-any.whl
| Download URL | ovos_tool_adapters-0.1.10a2-py3-none-any.whl |
|---|---|
| Size | 22.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
08b668bb538ffc740e965791fe2700a8c2c156fcec6674b86afb6931ac4d51fa
|
|
BLAKE2b-256 checksum How to use checksums |
e95e15634067c5a1290653354da97379a87d8bbfedb8a4f639052850c25f7511
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Security for ovos-tool-adapters 0.1.10a2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.