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., "@Oracle Fusion AR MCP ServerList all open invoices for Acme Corp from the last month"
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.
Oracle Fusion AR MCP Server π
A remote Model Context Protocol (MCP) server built in Python that provides secure access to Oracle Fusion Cloud Accounts Receivable REST API. Deploy once, share with everyone!
π Key Features
π Remote MCP Server: Deploy to cloud and share via URL
π Secure: No credential storage, per-request authentication
π Three MCP Tools:
oracle_ar_list_invoices- List and filter invoicesoracle_ar_get_invoice_details- Get detailed invoice informationoracle_ar_search_invoices- Advanced search with statistics
π Dual Output: Both JSON and human-readable Markdown
β‘ Fast: Built with Python + uv + httpx (async)
βοΈ Cloud-Ready: One-click deploy to Railway, Render, Heroku
π Quick Deploy
Deploy to Railway (Recommended - Free Tier Available)
Click the button above or go to railway.app
Connect your GitHub repository
Set environment variable:
ORACLE_BASE_URL:https://fa-euth-dev46-saasfademo1.ds-fa.oraclepdemos.com
Deploy! π
You'll get a URL like: https://oracle-ar-mcp-server-production.up.railway.app
Deploy to Render
Click the button or go to render.com
Connect your GitHub repository
Render auto-detects configuration from
render.yamlDeploy! π
Other Platforms
See DEPLOYMENT.md for detailed instructions for:
Heroku
Google Cloud Run
AWS ECS/Fargate
Azure Container Apps
Docker deployment
π‘ Connect to Your Deployed Server
Once deployed, anyone can connect using your server URL.
For Claude Desktop
Add to claude_desktop_config.json:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"oracle-ar-remote": {
"url": "https://YOUR-APP-URL.railway.app/sse",
"transport": "sse"
}
}
}Test Your Deployment
# Health check
curl https://YOUR-APP-URL.railway.app/health
# Service info
curl https://YOUR-APP-URL.railway.app/
# Test SSE endpoint with MCP Inspector
npx @modelcontextprotocol/inspector --url https://YOUR-APP-URL.railway.app/sseπ API Documentation
Endpoints
GET /- Service information and available toolsGET /health- Health check endpointGET /sse- SSE endpoint for MCP connectionsPOST /messages- MCP message endpoint
MCP Tools
1. oracle_ar_list_invoices
List invoices with optional filtering and pagination.
Parameters:
{
"username": "your-oracle-username",
"password": "your-oracle-password",
"customer_name": "Acme Corp",
"date_from": "2024-01-01",
"date_to": "2024-12-31",
"status": "Open",
"limit": 20,
"offset": 0
}2. oracle_ar_get_invoice_details
Get detailed information about a specific invoice.
Parameters:
{
"username": "your-oracle-username",
"password": "your-oracle-password",
"invoice_id": "123456"
}3. oracle_ar_search_invoices
Advanced search with filters and statistics.
Parameters:
{
"username": "your-oracle-username",
"password": "your-oracle-password",
"filters": {
"amountGreaterThan": 10000,
"overdueDays": 30
},
"limit": 20
}π οΈ Local Development
Prerequisites
Python 3.10+
uv (recommended)
Oracle Fusion Cloud credentials
Setup
# Clone the repository
git clone https://github.com/YOUR_USERNAME/oracle-ar-mcp-server.git
cd oracle-ar-mcp-server
# Install uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# Create virtual environment and install dependencies
uv venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
uv pip install -e ".[dev]"
# Create environment file
cp .env.example .envRun Locally
# Run the server
uv run python -m src.server
# Server will start on http://localhost:3000Run Tests
# Run all tests
uv run pytest
# Run with coverage
uv run pytest --cov=src
# Run linting
uv run ruff check src tests
# Run type checking
uv run mypy srcπ Security
β Secure Design
No Credential Storage: Credentials are passed per-request only
Stateless: No session state stored on server
No Logging: Credentials are never logged
HTTPS Only: All communication encrypted (via hosting platform)
Input Validation: Full Pydantic validation on all inputs
π Authentication Flow
User calls MCP tool with Oracle username/password
Server receives request (credentials in memory only)
Server authenticates request to Oracle API
Oracle returns data
Server formats and returns response
Credentials discarded (not stored anywhere)
π Technology Stack
Python 3.12 - Modern async Python
uv - Fast, reliable package manager
MCP SDK - Model Context Protocol support
httpx - Async HTTP client
Pydantic - Data validation and type safety
Starlette - ASGI web framework
uvicorn - ASGI server
pytest - Testing framework
π Project Structure
.
βββ src/
β βββ server.py # MCP server with SSE transport
β βββ tools.py # MCP tool implementations
β βββ oracle_client.py # Oracle API client (async)
β βββ formatter.py # Response formatters
β βββ errors.py # Error handling
β βββ models.py # Pydantic models
β βββ config.py # Configuration
βββ tests/ # Test suite
βββ .github/workflows/ # CI/CD pipelines
βββ DEPLOYMENT.md # Deployment guide
βββ pyproject.toml # Project configuration
βββ README.md # This fileπ€ Sharing Your Server
After deploying, share your server with others:
1. Share the SSE Endpoint URL
https://your-app.railway.app/sse2. Provide Configuration Instructions
Users add this to their Claude Desktop config:
{
"mcpServers": {
"oracle-ar": {
"url": "https://your-app.railway.app/sse",
"transport": "sse"
}
}
}3. Users Provide Their Own Credentials
Each user must have their own Oracle Fusion credentials, which they provide when using the tools. The server never stores or shares credentials between users.
π§ͺ Testing
Manual Testing
# Test health check
curl https://your-app.railway.app/health
# View available tools
curl https://your-app.railway.app/
# Test with MCP Inspector
npx @modelcontextprotocol/inspector --url https://your-app.railway.app/sseAutomated Testing
# Run test suite
uv run pytest
# Run with coverage
uv run pytest --cov=src --cov-report=html
# View coverage report
open htmlcov/index.htmlπ Monitoring
Health Check
curl https://your-app.railway.app/healthResponse:
{
"status": "healthy",
"service": "oracle-fusion-ar-mcp-server",
"version": "1.0.0"
}Platform Logs
Railway: Dashboard β Your App β Logs
Render: Dashboard β Your Service β Logs
Heroku:
heroku logs --tail
π° Cost
Free Tier Options
Railway: $5 credit/month (sufficient for light use)
Render: 750 hours/month free
Heroku: Free with credit card (1000 dyno hours/month)
Paid Plans (Production)
Railway: ~$5-10/month
Render: ~$7/month
Heroku: ~$7/month
π Updates & CI/CD
Automatic Deployments
Push to GitHub and your platform automatically deploys:
git add .
git commit -m "Add new feature"
git push origin mainGitHub Actions
β Automatic testing on PRs
β Code quality checks (ruff, mypy)
β Coverage reports
β Build verification
π Troubleshooting
Server Won't Start
Check platform logs for errors
Verify environment variables are set
Ensure
PORTis not hardcoded (use platform's PORT)
Oracle API Connection Failed
Verify
ORACLE_BASE_URLis correctCheck Oracle API is accessible from your platform
Test with health check endpoint
Claude Desktop Can't Connect
Verify SSE endpoint URL is correct
Ensure HTTPS is enabled
Check server is running (health check)
Restart Claude Desktop after config change
π€ Contributing
Fork the repository
Create a feature branch (
git checkout -b feature/amazing-feature)Make your changes
Run tests (
uv run pytest)Commit changes (
git commit -m 'Add amazing feature')Push to branch (
git push origin feature/amazing-feature)Open a Pull Request
π License
MIT License - see LICENSE file
π Acknowledgments
Built with Model Context Protocol
Powered by uv
π Support
π Deployment Guide
π Report Issues
π¬ Discussions
π Deploy once, share with everyone!
Made with β€οΈ for the MCP community