A Model Context Protocol (MCP) server for seamless interactions with Evolutivo.FW and coreBOS applications. Built with Python FastMCP, this server enables AI assistants to interact with your Evolutivo/coreBOS instance through standardized MCP tools.
This MCP server provides comprehensive access to your Evolutivo.FW/coreBOS application with the following capabilities:
- Query Records: Execute SQL-like queries (VTQL) to retrieve data
- Create Records: Create new records in any entity with field validation
- Retrieve Records: Get complete record information by WSID
- Update Records: Modify existing records with field updates
- Delete Records: Remove records from entities
- List Entities: Get all accessible entities/modules
- Entity Information: Retrieve entity names and metadata
- Field Information: Get field definitions and properties
- Filter Fields: Access filter field configurations
- Related Modules: Discover entity relationships
- Email Sending: Send emails using workflow templates
- Natural Language Queries: Chat-based query interface
- Resource Management: Access documentation, templates, and version info
- Prompt Assistance: Get AI-generated prompts for create/update operations
- Python: 3.10 or higher
- UV Package Manager: For dependency management (install uv)
- Evolutivo.FW or coreBOS: A running instance with web services enabled
- API Credentials: Valid username and password for API access
git clone https://github.com/coreBOS/MCP.git evmcp
cd evmcpcd src
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activateUsing UV (recommended):
uv syncOr using pip:
pip install -e .Create a .env file in the src directory based on the provided sample:
cd src
cp env.sample .envEdit the .env file with your Evolutivo/coreBOS connection details:
# Parameters for Connections
EVAPI_URL=http://localhost/coreBOSNG
EVAPI_USER=admin
EVAPI_PASS=your_access_key_hereImportant Notes:
EVAPI_URL: The base URL of your Evolutivo/coreBOS installationEVAPI_USER: Username with webservices accessEVAPI_PASS: Use the Access Key, not the login password (found in user preferences)
The MCP server is designed to delegate the sending of emails to the Evolutivo backend. You must configure a manual workflow for each module you want to send emails from with the exact name send email {modulename}, where modulename is the name of the module in lower case.
The send email task has no values set as they will all be overwritten by the MCP when using it.
As an additional note you can configure specific workflows with GenDoc templates for inventory modules and force the MCP to use those workflows instead of the default one making it super simple to send invoices with PDFs attached.
From the src directory:
cd src
source .venv/bin/activate
uv run main.pycd src
source .venv/bin/activate
python main.pyThe MCP Inspector is a powerful tool for testing and debugging your MCP server:
cd src
source .venv/bin/activate
uv run mcp dev main.pyThis will:
- Start the MCP server
- Launch the MCP Inspector web interface
- Open your browser to interact with available tools
- Allow you to test tool calls and inspect responses
The Inspector provides:
- Interactive tool testing
- Request/response inspection
- Schema validation
- Real-time debugging
To use this MCP server with Google's Gemini CLI, you need to configure it in the MCP settings file.
The Gemini configuration file is typically located at:
- Linux/macOS:
~/.config/gemini-mcp/mcp.json - Windows:
%APPDATA%\gemini-mcp\mcp.json
Add the following configuration to your mcp.json:
{
"mcpServers": {
"evolutivo": {
"command": "/home/joe/.local/bin/uv",
"args": [
"--directory",
"/home/joe/workspace/evmcp/src",
"run",
"main.py"
],
"env": {
"EVAPI_URL": "http://localhost/coreBOSNG",
"EVAPI_USER": "admin",
"EVAPI_PASS": "your_access_key_here"
}
}
}
}Adjust the paths:
- Replace
/home/joe/.local/bin/uvwith your UV binary path - Replace
/home/joe/workspace/evmcp/srcwith your actual project path - Update the environment variables with your connection details
Test the configuration with:
gemini-cli --list-toolsYou should see all the Evolutivo MCP tools listed.
The server exposes the following MCP tools:
launch_query(select, object_name, where, order_by, limit)- Execute VTQL queriescreate_record(entity, fields)- Create new recordsretrieve_record(wsid)- Get record by WSIDupdate_record(wsid, fields)- Update existing recordsdelete_record(wsid)- Delete records
get_entities()- List all accessible entitiesget_entity_name(wsid)- Get entity name from WSIDget_fields(entity)- Get field definitions for an entityget_filter_fields(entity)- Get filter field configurationsget_related_modules(wsid)- Get related entities
send_email(workflow, wsids, context)- Send workflow-based emailsquery_chat(question, entity)- Natural language queriesget_prompt_create(entity, description)- AI prompt for create operationsget_prompt_update(wsid, description)- AI prompt for update operationsget_resource_doc(type)- Access documentationget_resource_tpl()- Get templatesget_resource_version()- Get version informationget_data(...)- Generic data retrieval with multiple parameters
evmcp/
├── src/
│ ├── main.py # Entry point
│ ├── pyproject.toml # Project dependencies
│ ├── .env # Configuration (create from env.sample)
│ ├── tools/ # MCP tool implementations
│ │ ├── __init__.py # Tool registration
│ │ ├── create.py
│ │ ├── retrieve.py
│ │ ├── update.py
│ │ ├── delete.py
│ │ ├── query_sql.py
│ │ ├── entities.py
│ │ └── ...
│ ├── evapi/ # Evolutivo API wrappers
│ │ ├── connect.py
│ │ ├── query.py
│ │ ├── create.py
│ │ └── ...
│ ├── wslib/ # WebService client library
│ │ └── WSClient.py
│ └── helper/ # Utilities
│ └── mcplogger.py
├── run_evolutivo.sh # Launch script
├── README.md
└── LICENSE
- Create a new file in
src/tools/(e.g.,my_tool.py) - Implement the
register(mcp: FastMCP)function - Define your tool using the
@mcp.tool()decorator - The tool will be automatically discovered and registered
Example:
from mcp.server.fastmcp import FastMCP
def register(mcp: FastMCP):
@mcp.tool()
async def my_tool(param: str):
"""
Tool description here.
Args:
param (str): Parameter description
Returns:
str: Return value description
"""
# Implementation
return resultLogs are written to src/logs/evmcp.log. Configuration is in src/logging.conf.
If you encounter connection errors:
-
Verify your
.envconfiguration:- Ensure
EVAPI_URLpoints to your running instance - Use the Access Key, not the login password for
EVAPI_PASS
- Ensure
-
Check webservices are enabled in your Evolutivo/coreBOS installation
-
Test the connection manually:
cd src source .venv/bin/activate python -c "from evapi.connect import EVConnect; conn = EVConnect(); print('Connected!' if conn.is_connected() else 'Failed')"
- Check the log file:
src/logs/evmcp.log - Use MCP Inspector to debug tool calls
- Verify field names and entity names match your application's schema
- FastMCP: MCP server framework
- httpx: Async HTTP client
- python-dotenv: Environment configuration
- requests: HTTP library for API calls
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
Joe Bordes Evolutivo/TSolucio
Contributions are welcome! Please feel free to submit issues or pull requests.
- Model Context Protocol
- FastMCP Documentation
- Evolutivo Support
- TSolucio Support
- Evolutivo.FW Documentation
- Evolutivo.FW Blog
For issues related to:
- MCP Server: Open an issue in this repository
- Evolutivo/coreBOS: Consult the respective project documentation
- API Access: Check your Evolutivo/coreBOS webservices configuration
