modular-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@modular-mcpShow me all the registered MCP addons and their tools."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
modular-mcp
Modular MCP server with Odoo-style addons (__manifest__.toml) plus an optional FastAPI web layer.
Setup
python -m venv .venv
.venv\Scripts\activate
pip install -e ".[dev]"
copy .env.example .envConfiguration is primarily in config.toml. Environment variables still override FastAPI settings (.env supported).
Source | Purpose |
| MCP server, logging, addon paths, FastAPI defaults |
| Alternate profile (path relative to CWD; see below) |
| Same as |
| Override FastAPI |
Relative paths inside a config file (addons_paths, log_dir, data_file) resolve from the directory of that config file, not from the package install root.
Tool-specific settings (timeout, retries, …) belong in each addon's config.toml, not the host profile. Host [logging.addons.<log_key>] only overrides addon logging when needed.
Related MCP server: mcp-app
Run
modular-mcp serve
modular-mcp mcp serve
modular-mcp get hello
# External profile (separate config + addon paths)
modular-mcp --config /path/to/profile/config.toml mcp serveFastAPI UI:
http://127.0.0.1:8000/MCP default:
streamable-httponhttp://127.0.0.1:5001(seeconfig.toml)
Addons
Each addon is a folder under addons/ with:
addons/my_addon/
__manifest__.toml
config.toml
tools.py # register_tools(mcp, config, logger)Sample addon: addons/key_value_store/ with kv_get / kv_set.
Shared imports inside addons:
from app.mcp.utils import format_json, exception_to_error_response
from app.mcp.logging import monitor_performance
from helpers import my_helper # local module in the same addon folderPort external tools into an addon
# Before (standalone tool module)
tools/my_tool.py
# After
addons/my_tool/
__manifest__.toml
config.toml
tools.pyMove the tool code into tools.py, change shared imports to app.mcp.utils / app.mcp.logging, and set log_key in __manifest__.toml.
Test & lint
pytest
ruff check .
ruff format --check .
mypy
pyrightPre-commit
pip install -e ".[dev]"
pre-commit install
pre-commit run --all-filesThis server cannot be deployed
Maintenance
Related MCP Connectors
Host your MCP tool over streamable HTTP in one command.
Manage CloudPepper servers, Odoo instances, backups, and deployments over MCP.
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables building and running MCP servers over streamable HTTP, exposing tools to AI assistants like Cursor, with examples of mounting multiple servers in FastAPI.-
- FlicenseNot gradedqualityDmaintenanceFramework for building and running MCP servers as HTTP services. Define tools as pure Python functions, wire up with two lines, run with one command.-
- FlicenseNot gradedqualityDmaintenanceEnables managing multiple Odoo instances from a single panel and exposes MCP tools for interacting with them via a unified service.-
- FlicenseNot gradedqualityCmaintenanceA modular MCP server built with FastAPI, exposing tools via HTTP endpoints with SSE streaming responses.-