loading…
Search for a command to run...
loading…
A production-ready MCP server that enables interaction with the AroFlo API to manage quotes, projects, and labor reporting. It features secure request signing a
A production-ready MCP server that enables interaction with the AroFlo API to manage quotes, projects, and labor reporting. It features secure request signing and exposes API documentation as resources for enhanced context and tool surface.
Standalone, production-ready MCP server for AroFlo with first-class request signing and a clean tool surface.
This repo ships an MCP server executable named aroflo-mcp (stdio transport by default).
Install the server on your machine (puts aroflo-mcp on your PATH via npm link):
make install
If global npm linking is restricted on your machine, skip npm link and run without a global install:
npm run build
node dist/mcp/server.js
.env (not committed) with your credentials:cp .env.example .env
# edit .env
~/.codex/config.toml, not passed as tool args):make codex-install
make codex-install writes MCP config into ~/.codex/config.toml. If this path is permission-restricted, re-run with appropriate permissions.
codex mcp get aroflo
If you prefer doing it manually (same env variables, stored in Codex config):
codex mcp add aroflo \
--env AROFLO_API_BASE_URL=https://api.aroflo.com/ \
--env AROFLO_ACCEPT=text/json \
--env AROFLO_SECRET_KEY=... \
--env AROFLO_UENCODED=... \
--env AROFLO_PENCODED=... \
--env AROFLO_ORG_ENCODED=... \
--env MCP_TRANSPORT=stdio \
-- "$(command -v node)" "$(pwd)/dist/mcp/server.js"
Notes:
nvm and the app is launched outside your shell).codex app).docs/runbooks.md).Install dependencies:
npm ci
Build and test:
npm run test
npm run build
Run server (stdio):
npm run dev
If your environment blocks IPC sockets used by tsx in dev mode, use the built runtime instead:
npm run build
npm run start
Run server (HTTP Streamable transport):
MCP_TRANSPORT=http npm run dev:http
To interactively test tools/list and tools/call via the official inspector UI:
make inspector
src/
auth/
aroflo/
mcp/
utils/
tests/
docs/
Required variables:
AROFLO_SECRET_KEYAROFLO_UENCODEDAROFLO_PENCODEDAROFLO_ORG_ENCODEDOptional variables:
AROFLO_API_BASE_URL (default: https://api.aroflo.com/)AROFLO_ACCEPT (default: text/json)AROFLO_HOST_IPAROFLO_TIMEOUT_MS (default: 65000)AROFLO_MAX_RETRIES (default: 2)LOG_LEVEL (default: info)Set MCP_TRANSPORT=http to run an HTTP server (Streamable HTTP transport) at:
http://${MCP_HTTP_HOST}:${MCP_HTTP_PORT}${MCP_HTTP_PATH}docs/api)This repo includes a local snapshot of the AroFlo API docs in docs/api/.
The MCP server exposes these markdown files as MCP resources so the client/LLM can look up valid WHERE fields, JOIN areas, etc:
aroflo://docs/api -> docs/api/README.mdaroflo://docs/api/<slug> -> docs/api/<slug>.md (example: aroflo://docs/api/quotes)Example query: list Quotes with acceptance status "Awaiting Decision":
aroflo_get_quotes{
"where": "and|acceptancestatus|=|Awaiting Decision",
"page": 1,
"pageSize": 50
}
Example report: open projects with labour hours per task (recommended for progress reporting):
aroflo_report_open_projects_with_task_hourssinceDateRequested to keep outputs small):{
"sinceCreatedUtc": "2025-01-01",
"sinceDateRequested": "2025-01-01",
"hoursOnly": true,
"includeTaskStatus": true,
"mode": "data"
}
docs/aroflo-auth.mddocs/mcp-tools.mddocs/examples.mddocs/runbooks.mddocs/deployment.mddocs/api/*Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"aroflo-mcp": {
"command": "npx",
"args": []
}
}
}