OOSDK MCP Server
Integrates with Odoo ERP for order management, inventory allocation, replenishment, and fulfillment automation.
Integrates with Salesforce (SFDC) for lead conversion, pricing/quoting, and other sales operations automation.
Click on "Install 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., "@OOSDK MCP Serverrun BC2 sales lead conversion"
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.
OOSDK — Ontology-Oriented Multi-Agent Platform
Business strategy as code. OOSDK drives a multi-agent system from a single ontology (ontology.yaml) that encodes a company's policies and decision rules. Change one line of policy and the agents' collaboration and branching change — no code redeploy. The ontology defines WHAT (policy/intent); the agents handle HOW (execution) — so routine decisions can be made deterministically by policy rather than by an LLM call.
The flagship of the SunnyLab build series. This is a sanitized public showcase — credentials, tokens, and infrastructure identifiers (GCP project, VM IP, Odoo tenant) were removed before publishing. Some modules require your own Odoo/Salesforce/GCP configuration to run end to end.

Order-to-cash now closes end-to-end — from Lead all the way to a real
account.payment("In Payment") in Odoo. Across the whole cycle the LLM speaks in exactly two seats (how to ship a short order, and who to chase first and in what tone); everything else — allocation, dispatch, invoicing, payment — is deterministic policy. That boundary is a single yaml toggle.
Three things in that picture carry the design. The ontology sits beside the orchestrator rather than under it, because policy is an input to routing, not a consequence of it. The MCP server is what makes the client column swappable — any MCP-capable client is a valid front door. And the order-to-cash band is drawn as the outcome, not as a feature list: the system is judged on whether cash actually lands.
Core idea
ontology.yaml (policy / strategy, human-editable)
│ "WHAT to do, under which policy"
▼
Ontology Engine ── deterministic policy decisions ──► Agents ("HOW", execution)
│ ├─ crm / erp / inventory / collections
│ ├─ cs / helpdesk / email / calendar
└─ when needed: LLM reasoning + RAG └─ analytics / report (10 domain agents)Policy-driven dispatch — many decisions need zero LLM calls (cost + determinism)
LLM only where the answer depends on context — caged as an advisor: whitelisted input, forced JSON, human approval, deterministic fallback if the model is off or fails
Extensible by design — add a new domain agent on the same base; the ontology wires it in (the
collections_agentwas added this way to close the cycle)
Related MCP server: Bernstein - Multi-agent orchestration
Business Case (BC) series — order-to-cash, end-to-end
A B2B sales-to-cash cycle automated across stages, integrating Salesforce (SFDC) and Odoo ERP. Design thesis: the LLM speaks only in the few seats where the answer depends on context; the rest is deterministic policy.

The architecture diagram above shows the classic five-stage order-to-cash band (quote → payment). This lifecycle view extends one stage further upstream: BC1 starts at the inbound email and the Lead, before a quote exists. Same cycle, one stage earlier.
BC1 Customer pipeline — inbound email → sender lookup → tier routing, zero LLM (first-match ontology rules), idempotent lead creation:
VIP → qualified lead + priority meeting booked within 24h + premium-tone invite
Standard → qualified lead + RAG-drafted reply on an 8h SLA
New prospect (unregistered) → lead (enrichment pending) + 24h welcome
BC2 Sales — opportunity with tier-differentiated pricing & process, then ERP handoff on close:
VIP → 5-stage process, negotiable pricing (discount up to a cap, approval beyond)
Standard → 4-stage process, list price fixed (no discount authority)
Closed Won → Odoo Sales Order auto-created & confirmed (idempotent) + thank-you (+ VIP kickoff meeting); Closed Lost → LLM lost-reason analysis + 180-day re-engage task (no ERP push)
contract = Opportunity → Sales Order; pricing is deterministic, the only LLM call is Lost-reason analysis
BC3 Order & inventory — confirmed SO → line split → deterministic allocation, with AI only where stock truly runs out:
Line split — storable → delivery, service → license activation
Allocation (deterministic) — VIP soft-preempt / Standard FIFO / partial-fill (Waiting) / re-allocate on stock receipt / batch pre-allocation, over a 4-state model (on-hand / reserved / available / incoming)
Autonomous replenishment (AI) — when no rule can fill the shortage: an LLM qty advisor sizes the purchase, creates the incoming picking, and writes an LLM manager briefing — both AI points fall back to rules
BC4 Ship · Invoice · Collect — closing the cycle in cash:
Ship — partial-shipment advisor (split / wait) → human approve → one approval chains ship + invoice + notify
Invoice — deterministic mixed billing (per-line invoice policy: shipped qty vs. full); no rule, no agent — by design
Collect — dunning advisor (recovery priority + tier tone: VIP gentle / repeat-late firm) → approve → send + chatter →
account.payment→ invoice "In Payment"
Two AI advisor seats (partial-shipment, dunning); everything between is deterministic, and both execute only after a human approves.
Key capabilities
Ontology engine that encodes business policy and drives multi-agent collaboration
10 multi-domain agents (CRM, ERP, inventory, collections, CS, helpdesk, email, calendar, analytics, report) over MCP / FastMCP
Caged LLM advisors — two-step
trigger → confirm: the model only recommends, a human approves, and execution is deterministic (with a rule fallback if the model fails)Order-to-cash close — partial shipping, mixed-billing invoicing, and AR collections → real Odoo
account.paymentEnterprise integration — SFDC + Odoo ERP adapters; RAG (ChromaDB); 3-tier memory (hot/warm/cold)
Bilingual Streamlit dashboard (KR/EN) — decisions, inventory, ontology stats
Cloud-native — Docker, Cloud Build, GitHub Actions (project/VM values are placeholders)
Tech stack
Python · MCP / FastMCP · Ontology-driven orchestration · Salesforce & Odoo ERP · ChromaDB (RAG) · Streamlit · Docker · Google Cloud · GitHub Actions
Project structure
ontology/ # ontology.yaml — business policy as code
mcp_server/ # ontology engine, domain agents, tools, adapters (SFDC/Odoo)
dashboard_modules/ # dashboard components
dashboard.py / dashboard_en.py # Streamlit dashboards (KR/EN)
scripts/ # BC1-BC4 business-case demos & setup
assets/ # system architecture + order-to-cash lifecycle diagrams
tests/ # unit tests
.env.example # required env vars (no real keys)Setup
cp .env.example .env # configure OpenAI/Google, Salesforce, Odoo (your own)
pip install -r requirements.txt
# 1) start the MCP server in HTTP (SSE) mode — serves the API on port 9101
MCP_MODE=sse python -m mcp_server.server
# 2) then launch a dashboard (KR / EN) in a separate shell:
streamlit run dashboard.pyThe dashboard talks to the server API on port 9101, so start the MCP server first and keep it running; the dashboard shows no data until the server is up. External integrations (Odoo, Salesforce, GCP) need your own configuration to run end to end.
Tests & demos
# run the test suite
pytest # or: pytest tests/
# BC demos — run in order (BC2 → BC3 → BC4 → BC5); each may need its own Odoo/SFDC setup
python scripts/bc2_to_odoo_handoff.py # BC2 Closed Won → Odoo Sales Order
python scripts/bc3_inventory_demo.py # BC3 order split + deterministic allocation
python scripts/bc4_demo_partial_shipment.py # BC4 partial-shipment advisor → ship · invoice
python scripts/bc5_demo_replenishment.py # BC5 autonomous replenishment + dunningThe demos drive live Odoo/Salesforce data, so each script may require its own tenant setup (the
bc*_setup_*.py/bc*_create_*.pyhelpers inscripts/seed the needed records). Additional scenarios live alongside these, e.g.bc4_demo_scenario_ABC.pyandbc5_demo_scenario12.py.
What's next
Two experiments are queued, both aimed at the same question — how much of this still works as the model gets cheaper and the entry points multiply:
Smaller models in the orchestrator seat. The orchestrator currently runs on a frontier model. Since the ontology already makes the routine decisions deterministically, the model's remaining job is narrow — which is exactly the condition under which a small model should hold up. Planned as an A/B against the current setup, measured on decision accuracy rather than on benchmark scores.
Widening the client column. Today the front doors are desktop MCP clients and the ADK web/mobile server. The MCP boundary makes additional entry points (chat surfaces, embedded app views) additive rather than structural.
Neither is implemented yet — they are stated here because the architecture was built to absorb both without a redesign, and that claim is worth holding the author to.
The SunnyLab build series
This repo is the endpoint of a year-long build. The earlier steps are public too, each isolating one problem:
# | Repo | What it adds |
1 | Local MCP server (stdio), single user — Gmail · OpenAI · Salesforce as tools | |
2 | Remote, HTTP-streamable resumable transport — multi-user, deployed to cloud | |
3 | Orchestrator + 6 domain agents over the same tool layer | |
4 | Same capabilities, orchestrated by an explicit LangGraph state machine | |
5 | Google ADK (Gemini) web/mobile front door onto the MCP server | |
6 | ai_mcp_multi_agent_oosdk-public ← you are here | Ontology-driven policy engine — order-to-cash, end to end |
Note
Public portfolio showcase of an actively evolving project. For safety, all secrets/credentials and infra identifiers were stripped; external integrations (Odoo, Salesforce, GCP) require your own configuration. Architecture write-ups and demos: SunnyLab below.
License
MIT — free to use, modify, and distribute with attribution. Provided as is, without warranty.
The third-party services it integrates with (OpenAI, Google, Salesforce, Odoo) are governed by their own terms; the diagrams and screenshots under assets/ are the author's own work.
SunnyLab — building agentic AI in public · Medium @sunnylabtv · YouTube @sunnylabtv
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityCmaintenanceAgent-native knowledge infrastructure. Deterministic, vertical-specific knowledge bases for autonomous agent consumption via MCP. Ethics modules mapped to EU AI Act articles. Free 24-hour trial.Last updated72MIT
- AlicenseAqualityAmaintenanceOrchestrates multiple AI coding agents declaratively to automate software development workflows for engineering teams.Last updated212800Apache 2.0
- Flicense-qualityCmaintenanceA multi-domain multi-agent system served over MCP (Model Context Protocol) with FastMCP, exposing specialized domain agents as tools to automate business workflows.Last updated
- Flicense-qualityBmaintenanceSingle source of truth and control for agent-operated companies, managing business state with deterministic policy enforcement, seat identity, and hash-chained audit trail.Last updated
Related MCP Connectors
Deterministic compliance and vertical knowledge bases for autonomous agents. Free 24hr trial.
Build, validate, and deploy multi-agent AI solutions from any AI environment.
Sovereign Agent OS — Persistent Memory, Governance & Compliance for AI Agents.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sunnylabtv-crypto/ai_mcp_multi_agent_oosdk-public'
If you have feedback or need assistance with the MCP directory API, please join our Discord server