Oracle Fusion AR MCP Server
Provides secure, remote access to the Oracle Fusion Cloud Accounts Receivable REST API for managing financial data. It enables users to list, search, and retrieve detailed invoice information through natural language commands without storing credentials.
README
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.yaml - Deploy! 🎉
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 .env
Run Locally
# Run the server
uv run python -m src.server
# Server will start on http://localhost:3000
Run 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/sse
2. 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/sse
Automated 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/health
Response:
{
"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 main
GitHub 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 correct - Check 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
- Uses Oracle Fusion Cloud REST APIs
- Powered by uv
📞 Support
🚀 Deploy once, share with everyone!
Made with ❤️ for the MCP community
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。