Fishbowl MCP Server
by jacksonedgecoai
The Fishbowl MCP Server is a middleware server designed to integrate with the Fishbowl Inventory API. It provides a RESTful API for simplified access to Fishbowl functionality, handling authentication and token management.
Last updated: N/A
Fishbowl MCP Server
A middleware server for integrating with Fishbowl Inventory API.
Overview
This MCP (Message Control Program) server provides a RESTful API that communicates with your Fishbowl Inventory software. It handles authentication, token management, and proxies all requests to the Fishbowl API.
Features
- Automatic authentication with Fishbowl API
- Simplified API access to Fishbowl functionality
- Support for parts, inventory, purchase orders, and manufacture orders
- Memo management for POs and MOs
- Vendor, UOM, user, and product endpoints
Prerequisites
- Node.js 18 or higher
- Fishbowl Inventory software with API access
- Access credentials for Fishbowl
Local Development Setup
-
Clone this repository:
git clone https://your-repo-url/fishbowl-mcp-server.git cd fishbowl-mcp-server
-
Install dependencies:
npm install
-
Create a
.env
file based on the template:cp .env.template .env
-
Edit the
.env
file with your Fishbowl credentials and API URL. -
Start the development server:
npm run dev
Deploying to Railway
-
Create a Railway account at railway.app if you don't have one.
-
Install the Railway CLI:
npm i -g @railway/cli
-
Login to Railway:
railway login
-
Initialize your project:
railway init
-
Add your environment variables:
railway variables set FISHBOWL_API_URL=http://your-fishbowl-server-address:port railway variables set FISHBOWL_APP_NAME="MCP Server" railway variables set FISHBOWL_APP_ID=101 railway variables set FISHBOWL_USERNAME=your-username railway variables set FISHBOWL_PASSWORD=your-password
-
Deploy your application:
railway up
-
Open your deployed application:
railway open
API Endpoints
Authentication
POST /api/login
- Log in to Fishbowl APIPOST /api/logout
- Log out from Fishbowl API
Parts & Inventory
GET /api/parts
- Search partsGET /api/parts/inventory
- Get part inventoryGET /api/parts/:id/best-cost
- Get best cost for a partPOST /api/parts/:id/inventory/add
- Add inventory for a partPOST /api/parts/:id/inventory/cycle
- Cycle inventoryPOST /api/parts/:id/inventory/scrap
- Scrap inventory
Purchase Orders
GET /api/purchase-orders
- List purchase ordersGET /api/purchase-orders/:id
- Get purchase order by IDPOST /api/purchase-orders
- Create purchase orderPOST /api/purchase-orders/:id
- Update purchase orderPOST /api/purchase-orders/:id/issue
- Issue purchase orderPOST /api/purchase-orders/:id/unissue
- Unissue purchase orderPOST /api/purchase-orders/:id/close-short
- Close purchase order shortPOST /api/purchase-orders/:id/void
- Void purchase orderDELETE /api/purchase-orders/:id
- Delete purchase order
Manufacture Orders
GET /api/manufacture-orders
- List manufacture ordersGET /api/manufacture-orders/:id
- Get manufacture order by IDPOST /api/manufacture-orders
- Create manufacture orderPOST /api/manufacture-orders/:id/issue
- Issue manufacture orderPOST /api/manufacture-orders/:id/unissue
- Unissue manufacture orderPOST /api/manufacture-orders/:id/close-short
- Close manufacture order shortDELETE /api/manufacture-orders/:id
- Delete manufacture order
Memos
GET /api/{type}/:id/memos
- Get memos for a PO or MOGET /api/{type}/:id/memos/:memoId
- Get specific memoPOST /api/{type}/:id/memos
- Create memoPOST /api/{type}/:id/memos/:memoId
- Update memoDELETE /api/{type}/:id/memos/:memoId
- Delete memo
Where {type}
can be purchase-orders
or manufacture-orders
Other Endpoints
GET /api/products/:id/best-price
- Get best price for a productGET /api/uoms
- List units of measureGET /api/vendors
- List vendorsGET /api/users
- List usersGET /api/health
- Check server health and authentication status
Security Considerations
- Store your Fishbowl credentials securely using environment variables
- Use HTTPS in production to encrypt data in transit
- The server handles authentication tokens automatically, but be aware that they expire
- Consider implementing additional authentication for your MCP server in production
Troubleshooting
Common Issues
-
Authentication failures:
- Verify your Fishbowl credentials in the .env file
- Ensure the Fishbowl API is enabled and accessible
- Check if your Fishbowl user has appropriate permissions
-
Connection errors:
- Verify the FISHBOWL_API_URL is correct
- Ensure your Fishbowl server is running and accessible from the MCP server
- Check for any firewalls or network restrictions
-
Deployment issues on Railway:
- Verify all environment variables are set correctly
- Check the logs for any errors:
railway logs
- Ensure your Railway project has sufficient resources
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the ISC License.