Fusion MCP
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., "@Fusion MCPfind tables related to purchase orders"
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.
Fusion MCP — Oracle Fusion ERP Cloud MCP Server
A local stdio MCP server (Python, FastMCP) that gives an LLM client (Claude Desktop / Claude Code) read-only access to an Oracle Fusion / ERP Cloud database — discover objects, describe tables, read source, and run SELECT queries — all via the BI Publisher SOAP API (no direct DB connection required).
Architecture
Claude Desktop / Claude Code (MCP stdio)
│
▼
Fusion MCP Server (Python, FastMCP)
Tools ──► SQL guard ──► BIP client (requests + SOAP)
│
Catalog SQL builders (ALL_OBJECTS, ALL_TAB_COLUMNS, …)
│
▼
Oracle Fusion — BI Publisher web services
ExternalReportWSSService (runReport → base64 CSV)
│
▼
FUSION schema + ALL_* data dictionaryPrerequisites
1 — Fusion BIP service account
Create (or identify) a Fusion user that:
Has the BI Publisher role (
BIPAdministratoror a custom role with BIP access).Has read-only access on the FUSION schema and the Oracle data dictionary (
SELECT_CATALOG_ROLEequivalent, or appropriate Fusion data roles).Will be used as
FUSION_USER/FUSION_PASSWORDin.env.
This is the primary security boundary — the app-layer SQL guard enforces
SELECT/WITH only, but the BIP service account must also be read-only at
the database level.
2 — Python 3.11+
Install uv or use pip.
Setup (local development)
# Clone the repo
git clone https://github.com/ramesharavapally/FUSION-MCP.git
cd FUSION-MCP
# Install (editable + dev deps)
uv pip install -e ".[dev]"
# Copy and fill in credentials
cp .env.example .env
# Edit .env: set FUSION_BASE_URL, FUSION_USER, FUSION_PASSWORDRunning the server
# From a local clone
uv run fusion-mcp
# Or directly from GitHub without cloning (production use)
uvx --from git+https://github.com/ramesharavapally/FUSION-MCP.git fusion-mcpDeploying the SQL-runner report
The server does not deploy any BIP artifacts — you set up the report manually in the BI Publisher catalog before running the server.
The query is sent as a base64-encoded bind parameter named query1 (not a
lexical &query1). This is deliberate: passing raw SQL as a lexical value trips
BIP's SQL-injection guard (SQLInjection Error: Invalid parameter value …), and
on Fusion SaaS that guard can't be disabled. Base64-encoding keeps the parameter
value free of SQL keywords, and a PL/SQL data model decodes it and opens a cursor.
Create a CSV-output report over a data model whose dataset is this PL/SQL block:
DECLARE
TYPE refcursor IS REF CURSOR;
xdo_cursor REFCURSOR;
l_query VARCHAR2(32000);
FUNCTION get_query(p_query IN VARCHAR2) RETURN VARCHAR2 IS
BEGIN
RETURN utl_raw.cast_to_varchar2(
utl_encode.base64_decode(utl_raw.cast_to_raw(p_query)));
END;
BEGIN
l_query := get_query(:query1);
OPEN :xdo_cursor FOR l_query;
END;The server base64-encodes each query and strips any trailing ; before sending
(the decoded statement must not carry a semicolon, since it is opened as a
cursor). Then point the server at the report:
# .env
FUSION_REPORT_PATH=/your/existing/report/path.xdoTests
# Unit tests — no Fusion connection required
uv run pytest
# Single test file
uv run pytest tests/test_sql_guard.pyMCP Inspector (interactive tool testing)
npx @modelcontextprotocol/inspector uv run fusion-mcpRegister with Claude Desktop
Add to claude_desktop_config.json (typically at
%APPDATA%\Claude\claude_desktop_config.json on Windows or
~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"fusion-mcp": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/ramesharavapally/FUSION-MCP.git",
"fusion-mcp"
],
"env": {
"FUSION_BASE_URL": "https://<pod>.fa.ocs.oraclecloud.com",
"FUSION_USER": "your_bip_service_user",
"FUSION_PASSWORD": "your_password",
"FUSION_MAX_ROWS": "100",
"LOG_LEVEL": "INFO"
}
}
}
}uvx fetches the package directly from GitHub and runs it in an isolated
environment — no local clone or pip install needed. Claude Desktop
re-uses the cached environment on subsequent starts; to pick up a new
commit, restart Claude Desktop (uvx re-checks the git ref on each cold
start).
Tip: pin to a specific commit or tag for stability:
"git+https://github.com/ramesharavapally/FUSION-MCP.git@v1.0.0"
Available MCP tools
Tool | Description |
| Search |
| Find tables/views by name or comment |
| Find tables by column name or column comment |
| Full-text search across |
| Full column/PK/index/stats description of a table or view |
| Read full source of a procedure/function/package from |
| Discover argument names, types, and directions from |
| List all subprograms inside a package |
| Run a read-only |
Note:
call_procedureis not available in Fusion MCP. Oracle BIP executes SELECT data models only — anonymous PL/SQL blocks are not supported. Useget_procedure_signatureandread_object_sourcefor procedure discovery.
Security model
SQL guard (
safety/sql_guard.py) — rejects anything that is not a singleSELECT/WITH; blocks;chaining; validates identifiers used in catalog SQL. This is the app-layer boundary.BIP data model — the deployed report decodes the base64
query1bind parameter and opens it as a cursor (OPEN … FOR), which only executes a single query; multi-statement/DML text cannot be smuggled through this path.Service account — the BIP user should have read-only database grants (see prerequisites above). This is the ultimate security boundary.
Configuration reference
Variable | Default | Description |
| — | Fusion pod URL, e.g. |
| — | BIP service account username |
| — | BIP service account password |
|
| BIP catalog path for the manually-deployed report |
|
| Maximum rows returned per query |
|
| HTTP timeout for BIP calls (seconds) |
|
| Logging level (DEBUG, INFO, WARNING, ERROR) |
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
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/ramesharavapally/FUSION-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server