# How to build an MCP server for Fishbowl

> Source: https://netray.co/integrations/fishbowl-mcp-server
> Publisher: Netray (netray.co), AI and integration engineering for ERP and manufacturing systems.
> Section: Integrations

## Short answer

An MCP server for Fishbowl is a small service that exposes a handful of typed, read-only tools such as part lookup, availability, open POs and sales order status. It authenticates to Fishbowl with a scoped account, runs on your network, and lets Claude, ChatGPT or any MCP client use live data.

## System

Fishbowl

## Capability

mcp-server

## Intro

Model Context Protocol gives AI clients a standard way to call tools. For a system like Fishbowl, which has no AI layer of its own, an MCP server is the cleanest bridge. You write it once and any compatible client can use it, rather than building one integration per chatbot.

The design work is not the protocol. It is deciding which questions the server answers, how results are shaped, and what it must never do. Fishbowl has a lot of surface area, from inventory tags to manufacture orders to accounting links, and exposing all of it is how you get slow, confusing answers and risk.

Start small and read-only. Ten good tools beat fifty vague ones, and every tool you add is something to test, secure and keep working across Fishbowl upgrades.

## Use Cases

### Part lookup by number or description

**Description:** Find a part, its unit of measure, default vendor, cost basis and whether it is a kit or manufactured item.

### Availability by location

**Description:** Return on-hand, allocated, committed and on-order quantities, broken down by location group when needed.

### Open PO and receiving status

**Description:** List PO lines by vendor, part or date range with quantity received and expected date.

### Sales order status and shipping blockers

**Description:** Show SO lines, fulfilled quantities, picks and the shortage that holds it up.

### Manufacture order and BOM view

**Description:** Expand a BOM to a given depth and list the open manufacture orders consuming a component.

### Inventory movement history

**Description:** Return recent adjustments, moves and cycle counts for a part to answer why a count changed.

## System Surface

- Fishbowl REST API: login with an integrated app name and ID that an admin approves in the Fishbowl client, then use the returned token. Verify available resources for your version.
- Legacy JSON API over TCP: a fallback for older servers, commonly used by long-standing custom integrations.
- MySQL: a read-only user can serve complex joins that no single API call does, such as stock by tag with open demand. Confirm schema names per version and expect them to shift.
- Fishbowl reports: if you want vetted logic, wrap a saved report as a tool rather than rewriting its SQL.
- User roles and location groups: Fishbowl enforces these in its own client, so your server must re-implement the parts that matter, such as hiding cost.

## How It Works

### Pick the SDK and language

**Detail:** Use the official MCP SDK in Python or TypeScript. Choose what your team can maintain.

### Define a tool contract

**Detail:** Each tool gets a name, a plain description, a JSON schema for inputs and a compact output. Prefer a few focused tools over a generic run_query.

### Implement data access

**Detail:** Pick API or SQL per tool. Parameterize everything. Cap rows and page results.

### Handle authentication

**Detail:** Keep Fishbowl credentials in environment variables or a secrets store. Refresh the API token as needed. For the MCP side, use stdio locally or HTTP with a bearer token or your SSO.

### Scope permissions

**Detail:** Map caller identity to a role. Sales may see availability but not unit cost. Do not rely on the model to withhold fields.

### Add audit logging

**Detail:** Record caller, tool, arguments, row count and latency. Alert on unusual volume.

### Test and version

**Detail:** Write contract tests against a Fishbowl test database. Pin tool versions so a schema change breaks tests, not users.

## Example Flows

### Availability question over MCP

**Trigger:** A user asks an MCP client how many of part X are free.

**Steps:**

- The client calls get_availability with the part number.
- The server queries stock and subtracts allocations.
- It returns on-hand, available, on-order and next receipt date.
- The client answers in plain language.

**Result:** A grounded answer with the figures attributed to the tool.

### Draft PO tool with approval

**Trigger:** Later phase: the team wants the client to propose a PO.

**Steps:**

- Client calls propose_purchase_order with part, vendor and quantity.
- Server validates against vendor and part rules.
- It stores a proposal and returns an ID for a person to approve.
- After approval, a separate worker creates the PO through the API in draft.

**Result:** No write happens without a named approver.

## On Prem

An MCP server is naturally on-prem friendly: it is a process on a machine in your network that talks to Fishbowl over localhost or LAN. Use stdio when each user's client runs on a machine with the server installed, or run it as an HTTP service on an internal host with TLS and authentication when many users share it. Pair it with a locally served open-weight model for a fully private stack, or a cloud model where only the small tool results are transmitted. If your Fishbowl is hosted by a third party, check what database and API access they permit before choosing tools.

## Security

- Run with least privilege: a read-only database user and an API account that can only read or create drafts.
- Validate and parameterize all inputs; never concatenate model text into SQL.
- Enforce field-level visibility in the server, not in the prompt.
- Authenticate every HTTP request and keep the server off the public internet.
- Keep immutable audit logs of tool calls and any approved writes.

## Options

### Search for an existing community MCP server

**Fit:** Worth a look first, but review the code and permissions before use.

**Effort:** Hours to evaluate, uncertain fit.

### Build it in-house

**Fit:** You have a developer and clear questions; the tool set is small.

**Effort:** One to three weeks including tests.

### Partner-built with Netray

**Fit:** You need role scoping, audit, upgrade tests and a private model alongside.

**Effort:** Scoped project with a maintenance plan.

## Pitfalls

- Exposing a generic SQL tool that lets the model run any query on the live database.
- Returning thousands of rows per call and overwhelming the client.
- Forgetting unit of measure and multi-location behavior, giving wrong available quantities.
- Letting the schema drift after a Fishbowl upgrade with no contract tests.
- Sharing one admin API credential among all users, which makes audit meaningless.

## Faq

### Is there an official Fishbowl MCP server?

**Answer:** I am not aware of an official one, so check current vendor announcements and MCP registries. Treat any community server as untrusted code until you review how it authenticates and which tools it exposes.

### Should the MCP server use the REST API or MySQL?

**Answer:** Use the API where it covers the need because it respects Fishbowl's business rules. Use a read-only MySQL user for analytic joins the API lacks. Many servers mix both, with the choice documented per tool.

### stdio or HTTP transport?

**Answer:** stdio is simplest for a single desktop client with the server installed locally. HTTP is better for teams sharing one managed server, but needs TLS, authentication and network controls. Many deployments use stdio for pilots and HTTP for rollout.

### Can the same server work with Claude and ChatGPT?

**Answer:** Yes, any client that supports MCP can use it, subject to each product's current connector support and plan. That portability is the main reason to build an MCP server rather than a vendor-specific plugin.

### How do I keep it from changing my inventory?

**Answer:** Give it credentials that cannot write. For later write tools, create drafts only, require a human approval step, and log every action. Do not give the server the credentials used by your accounting integration.

## Search terms

fishbowl mcp server, fishbowl model context protocol, mcp server for fishbowl inventory, build mcp server fishbowl, fishbowl mcp claude, fishbowl api mcp, fishbowl mcp tools, fishbowl ai connector, mcp inventory server

---
Talk to an engineer: https://netray.co/contact?intent=erp_ai | Machine catalog: https://netray.co/agent/catalog.json
