Skip to main content
Glama

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 dictionary

Prerequisites

1 — Fusion BIP service account

Create (or identify) a Fusion user that:

  • Has the BI Publisher role (BIPAdministrator or a custom role with BIP access).

  • Has read-only access on the FUSION schema and the Oracle data dictionary (SELECT_CATALOG_ROLE equivalent, or appropriate Fusion data roles).

  • Will be used as FUSION_USER / FUSION_PASSWORD in .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_PASSWORD

Running 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-mcp

Deploying 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.xdo

Tests

# Unit tests — no Fusion connection required
uv run pytest

# Single test file
uv run pytest tests/test_sql_guard.py

MCP Inspector (interactive tool testing)

npx @modelcontextprotocol/inspector uv run fusion-mcp

Register 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_objects

Search ALL_OBJECTS by name pattern (tables, views, packages, …)

search_tables

Find tables/views by name or comment

search_columns

Find tables by column name or column comment

search_source

Full-text search across ALL_SOURCE

describe_table

Full column/PK/index/stats description of a table or view

read_object_source

Read full source of a procedure/function/package from ALL_SOURCE

get_procedure_signature

Discover argument names, types, and directions from ALL_ARGUMENTS

list_package_contents

List all subprograms inside a package

execute_query

Run a read-only SELECT/WITH query; returns CSV-parsed rows

Note: call_procedure is not available in Fusion MCP. Oracle BIP executes SELECT data models only — anonymous PL/SQL blocks are not supported. Use get_procedure_signature and read_object_source for procedure discovery.

Security model

  1. SQL guard (safety/sql_guard.py) — rejects anything that is not a single SELECT/WITH; blocks ; chaining; validates identifiers used in catalog SQL. This is the app-layer boundary.

  2. BIP data model — the deployed report decodes the base64 query1 bind 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.

  3. 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_BASE_URL

Fusion pod URL, e.g. https://<pod>.fa.ocs.oraclecloud.com

FUSION_USER

BIP service account username

FUSION_PASSWORD

BIP service account password

FUSION_REPORT_PATH

/Custom/py_sql/SampleReport.xdo

BIP catalog path for the manually-deployed report

FUSION_MAX_ROWS

100

Maximum rows returned per query

FUSION_REQUEST_TIMEOUT_S

120

HTTP timeout for BIP calls (seconds)

LOG_LEVEL

INFO

Logging level (DEBUG, INFO, WARNING, ERROR)

Available Tools

9 tools
describe_tableA

Full description of a Fusion table or view:

  • columns (name, type, length/precision, nullable, default, comment)

  • primary key columns

  • indexes (name, type, uniqueness, columns)

  • table-level comment

  • estimated row count from optimizer stats

owner: schema owner, e.g. 'FUSION' table_name: exact table name, e.g. 'AP_INVOICES_ALL'

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerYes
table_nameYes

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description should disclose behavioral traits like read-only nature or required permissions. It only describes output, leaving the agent to infer side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (7 lines plus parameter notes), uses bullet points for clarity, and is front-loaded with the main purpose. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description provides a detailed list of return fields (columns, PKs, indexes, row count) that adequately covers the expected output. Slightly missing mention of return format or error cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% parameter description coverage, but the description adds clear explanations for 'owner' (schema owner with example 'FUSION') and 'table_name' (exact table name with example 'AP_INVOICES_ALL'), fully compensating for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool provides a 'Full description of a Fusion table or view' and lists specific output components (columns, primary keys, indexes, etc.), making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus siblings like 'search_tables' or 'execute_query'. The description lacks context about appropriate scenarios or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

execute_queryA

Execute a read-only SELECT or WITH (CTE) query against the Oracle Fusion database via BI Publisher.

Only SELECT/WITH statements are accepted — DML, DDL, and PL/SQL are rejected. SQL is executed through the BIP SQL-runner report (deployed manually in the BIP catalog; see FUSION_REPORT_PATH).

sql: the full query text with literal values inlined (BIP does not support bind variables — include values directly, e.g. WHERE org_id = 101) max_rows: maximum rows to return (server cap also applies)

Returns: {columns: [...], rows: [{col: val, ...}, ...], count: N} Note: all values are returned as strings (CSV transport).

ParametersJSON Schema
NameRequiredDescriptionDefault
sqlYes
max_rowsNo

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses read-only behavior, use of BI Publisher, string-only return values, and server cap. No side effects are mentioned but none expected.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with core function first, then constraints, parameter details, and return format. Every sentence adds value, no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-param tool with no output schema, the description covers all necessary aspects: accepted queries, parameter details, return format, and underlying mechanism. Complete for its complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% description coverage; the description adds comprehensive meaning: sql param explained with example of inlining values, max_rows defined as row limit with server cap hint.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it executes read-only SELECT/WITH queries against Oracle Fusion via BI Publisher, listing rejected statement types. This distinguishes it from sibling tools focused on metadata or source code.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states only SELECT/WITH are accepted and DML/DDL/PL/SQL are rejected. Provides guidance on inlining values. While it doesn't directly compare to siblings, the usage context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_procedure_signatureA

Return the full argument list for a stored procedure or function (from ALL_ARGUMENTS). Returns: argument_name, data_type, in_out, position, defaulted, default_value

Note: Fusion MCP does not support dynamic procedure execution (BIP only runs SELECT data models). This tool is for discovery and understanding only.

package_name: required when the procedure lives inside a package.

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerYes
object_nameYes
package_nameNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses the limitation regarding dynamic execution and the source (ALL_ARGUMENTS). While it doesn't explicitly state read-only behavior, the limitation implies it is a read operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise: two sentences plus a short note. It is front-loaded with the main action and returns format, followed by a critical usage note. No superfluous words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (3 parameters, no output schema), the description covers the essential purpose, return columns, and a key limitation. It could mention that the tool assumes Oracle database, but it's sufficient for an agent to understand usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the description only explains package_name ('required when the procedure lives inside a package'). The meanings of owner and object_name are implied but not explicitly described, leaving room for ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool returns the full argument list for a stored procedure or function from ALL_ARGUMENTS, and lists the columns returned. It clearly distinguishes this from execution by noting that dynamic execution is not supported.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear context: 'This tool is for discovery and understanding only' and directly states that Fusion MCP does not support dynamic procedure execution. It does not explicitly name alternative tools but the context implies when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_package_contentsB

List all public subprograms (procedures and functions) inside a Fusion Oracle package. Returns: procedure_name, overload index, object_type

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerYes
package_nameYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description discloses that only public subprograms are returned and lists the output fields. However, it does not mention read-only nature, error handling, permissions required, or performance implications. It offers minimal behavioral context beyond the basic capability.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, using two sentences to convey purpose and output. Every word serves a function, with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the primary function and output but omits details like parameter format (case sensitivity? wildcards?), error scenarios, and prerequisites (e.g., user must have access to the package). For a low-complexity tool with no output schema, it is adequate but not thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description does not explain the parameters 'owner' and 'package_name' at all. Given 0% schema coverage, the description should compensate by clarifying their meaning (e.g., 'owner' is the Oracle schema, 'package_name' is the package identifier), but it omits any such detail, leaving the agent to infer from the titles.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists all public subprograms inside a Fusion Oracle package, specifies the return fields, and distinguishes it from siblings like get_procedure_signature (which focuses on a single procedure) and describe_table (which describes tables).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide any guidance on when to use this tool versus its siblings (e.g., get_procedure_signature or read_object_source). It lacks explicit context such as 'use this to explore package structure' or 'for a specific procedure signature, use get_procedure_signature instead'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_object_sourceA

Read the full source code of a stored object from ALL_SOURCE in Fusion.

object_type: PROCEDURE | FUNCTION | PACKAGE | PACKAGE BODY | TRIGGER | VIEW (omit to return all types for this name) Returns: {owner, name, source: {type: full_source_text}}

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerYes
object_nameYes
object_typeNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses return format and valid object_type values, but no annotations exist. Missing behavioral details like authentication requirements, rate limits, error handling, or what happens if object is not found.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise: two sentences plus a bullet list for object_type and return format. No fluff, purpose is front-loaded. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequately covers purpose, parameters, and return format for a simple read tool. Lacks explanation of ALL_SOURCE, permissions, or error scenarios, but given no output schema and low complexity, it is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% description coverage. Description adds meaning for object_type (list of allowed types, omission behavior), but owner and object_name are only mentioned as required with no additional context beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool reads full source code of a stored object from ALL_SOURCE in Fusion, specifying verb 'read' and resource 'source code'. It distinguishes from siblings like get_procedure_signature (signature only) and search_source (search, not read).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like get_procedure_signature or list_package_contents. Only lists valid object_type values but does not provide contextual usage instructions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_columnsA

Find Fusion tables/views by column name or column comment. Example: search_columns('INVOICE_ID') to find every table with an invoice-id column.

Returns: owner, table_name, column_name, data_type, column_comment, table_comment

ParametersJSON Schema
NameRequiredDescriptionDefault
keywordYes
limitNo

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. The description adds the return format and example, but omits behavioral traits like read-only nature, case sensitivity, or potential performance impact. It provides basic transparency but no depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences covering purpose, example, and output. No redundant content, front-loaded with clear action and example.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter search tool with no output schema, the description sufficiently covers purpose, input, and output shape. Missing some contextual details like whether search is case-insensitive, but overall adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%. The description clarifies the 'keyword' parameter (column name or comment) and gives an example, but does not explain the 'limit' parameter beyond its default. Partial compensation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it finds tables/views by column name or comment, with a concrete example. It differentiates from siblings like search_tables by focusing on columns.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied through the example but no explicit when-to-use or when-not-to-use guidance, nor alternatives mentioned. The description lacks directives for choosing this over search_tables or other tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_objectsA

Search ALL_OBJECTS in Oracle Fusion / ERP Cloud by object name pattern.

keyword: substring to match against object_name (case-insensitive) object_types: optional filter, e.g. ['TABLE','VIEW','PROCEDURE','FUNCTION','PACKAGE'] owner: optional schema owner filter (e.g. 'FUSION') limit: max results (capped at 200)

Returns: owner, object_name, object_type, status, last_ddl_time, table_comment

ParametersJSON Schema
NameRequiredDescriptionDefault
keywordYes
object_typesNo
ownerNo
limitNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full burden. It discloses that the limit is capped at 200 and lists return fields. It does not mention permissions or side effects, but the read-only nature is implied. Overall, good transparency for a search tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences plus a bullet list of return fields. It is front-loaded with purpose and efficient, though the bullet list could be integrated into prose. No redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 4 parameters and no output schema. The description covers all parameters and return fields, and mentions the limit cap. It lacks details on error handling, pagination (though limit is given), or ordering, but is reasonably complete for a simple search.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description fully compensates by explaining each parameter: keyword as substring match, object_types as optional filter, owner as schema filter, and limit with max cap. This adds significant meaning beyond the schema's bare types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it searches ALL_OBJECTS in Oracle Fusion/ERP Cloud by object name pattern, specifying the verb (search), resource (ALL_OBJECTS), and system. It distinguishes from siblings like search_tables, search_columns, etc., which have narrower scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains keyword matching (case-insensitive, substring) and optional filters (object_types, owner, limit). However, it lacks explicit guidance on when to use this tool over siblings like search_tables or search_source, leaving the agent to infer context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_sourceA

Full-text search across ALL_SOURCE in Fusion to find procedures/packages/functions that reference a keyword in their source code.

type_filter: PROCEDURE | FUNCTION | PACKAGE | PACKAGE BODY | TRIGGER Returns distinct owner/name/type — call read_object_source to get the full source.

Note: scans can be slow on large schemas; constrain type_filter and owner where possible.

ParametersJSON Schema
NameRequiredDescriptionDefault
keywordYes
name_filterNo
type_filterNo
ownerNo
limitNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses that scans can be slow on large schemas, which is a key behavioral trait. It does not mention side effects or authorization needs, but the read-only nature is implied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (four sentences) and front-loaded with the main purpose. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description explains return format (distinct owner/name/type) and next steps. It also mentions performance considerations. This is complete for a search tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must explain parameters. It clarifies keyword, type_filter (with examples), and owner implicitly, but does not explain name_filter or limit. This provides moderate value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool performs full-text search across ALL_SOURCE to find objects containing a keyword, using a specific verb and resource. It distinguishes itself from sibling tools like search_objects and search_columns by focusing on source code content.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description advises constraining type_filter and owner to improve performance, and directs users to read_object_source for full source retrieval. However, it does not explicitly list when to avoid using this tool or mention alternative tools for similar tasks.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_tablesB

Find tables/views in Oracle Fusion whose name or comment contains the keyword.

Returns: owner, object_name, object_type, table_comment

ParametersJSON Schema
NameRequiredDescriptionDefault
keywordYes
limitNo

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It discloses the return fields (owner, object_name, object_type, table_comment) and that search is by name or comment containing the keyword. However, it does not mention side effects (likely read-only), rate limits, or behavior on no results. The transparency is minimal but adequate for a simple search tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no wasted words. First sentence defines the tool's purpose and scope, second lists the return columns. Information is front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, output schema, or detailed parameter info, the description is incomplete. It does not address error handling, default limit behavior, or how to refine searches. With multiple sibling tools, more context (e.g., when to use this vs. search_columns) would be valuable. The minimal coverage leaves gaps for a 2-parameter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description adds no meaning beyond parameter names. The 'keyword' parameter is not explained (case sensitivity, pattern matching), and 'limit' is not described (purpose, default behavior). Without any additional info, the agent cannot infer proper usage of parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Find tables/views in Oracle Fusion whose name or comment contains the keyword.' It uses a specific verb ('Find') and resource ('tables/views'), and distinguishes from siblings like search_objects and search_columns by focusing on tables/views and keyword matching.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus its siblings (e.g., search_objects, search_columns). There is no mention of prerequisites, exclusions, or context for effective use. The description only states what it does, leaving the agent to infer usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.9/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: describe_table for table metadata, execute_query for read-only SQL, get_procedure_signature for argument details, list_package_contents for package subprograms, read_object_source for source code, and multiple search tools for different search scopes (columns, objects, source, tables). No two tools overlap in functionality.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., describe_table, execute_query, search_columns). The verbs (describe, execute, get, list, read, search) are intuitive and match the action. No mixing of styles or ambiguous names.

Tool Count5/5

With 9 tools, the server is well-scoped for its purpose of exploring and querying an Oracle Fusion database. Each tool earns its place without being overwhelming or too sparse.

Completeness4/5

The tool set covers most essential operations: discovery (search tools), description (describe_table), query execution (execute_query), and code examination (read_object_source, list_package_contents, get_procedure_signature). However, there is no simple 'list all tables' tool without a keyword, so users must search even for a broad listing. This minor gap prevents a perfect score.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

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