- Quickbooks
Quickbooks
Quickbooks MCP Server
A Model Context Protocol (MCP) server implementation for Intuit Quickbooks, providing a RESTful API interface for querying and managing Quickbooks data.
Author
Ravi Iyer (iyer [dot] ravi [at] outlook [dot] com)
Disclaimer
Usage of this MCP server comes at the users' own risk. The author of this MCP server does not take any responsibility for any issues, damages, or consequences that may arise from its use.
Features
- Query Quickbooks data using SQL-like syntax
- Create new entities in Quickbooks
- OpenAPI/Swagger documentation
- Spring Boot-based implementation
- OAuth2 authentication support
Prerequisites
- Java 17 or higher
- Maven 3.6 or higher
- Quickbooks Online account with API access
Getting Started
- Clone the repository:
git clone https://github.com/ravi-bytes/quickbooks-mcp-server.git
cd quickbooks-mcp-server
Configuration
Set the following environment variables:
QUICKBOOKS_CLIENT_ID=your_client_id
QUICKBOOKS_CLIENT_SECRET=your_client_secret
QUICKBOOKS_REDIRECT_URI=your_redirect_uri
QUICKBOOKS_ACCESS_TOKEN=your_access_token
QUICKBOOKS_REALM_ID=your_realm_id
Alternatively, you can configure these in src/main/resources/application.yml.
Building
mvn clean install
Running
mvn spring-boot:run
The server will start on port 8080 by default.
API Documentation
Once the server is running, you can access:
- Swagger UI: http://localhost:8080/swagger-ui.html
- OpenAPI Spec: http://localhost:8080/api-docs
Example Usage
Query Quickbooks Data
curl -X POST http://localhost:8080/api/v1/quickbooks/query \
-H "Content-Type: application/json" \
-d '{"query": "SELECT * FROM Customer"}'
Create Entity
curl -X POST http://localhost:8080/api/v1/quickbooks/entity \
-H "Content-Type: application/json" \
-d '{
"entityType": "Customer",
"entityData": {
"DisplayName": "John Doe",
"CompanyName": "Example Corp"
}
}'
Contributing
We welcome contributions to improve the Quickbooks MCP Server! Here's how you can contribute:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Commit your changes (
git commit -m 'Add amazing feature') - Push to your branch (
git push origin feature/amazing-feature) - Open a Pull Request
Pull Request Process
- All changes must be made through Pull Requests
- Direct commits to the main branch are not allowed
- Pull Requests require review and approval before merging
- Ensure your PR includes:
- A clear description of the changes
- Any updates to documentation
- Test coverage for new features
- Keep PRs focused and atomic - one feature/fix per PR
Code Style
- Follow standard Java conventions
- Include JavaDoc for public methods
- Write clear commit messages
- Add unit tests for new features
License
This project is licensed under the MIT License - see the LICENSE file for details.
Server Config
{
"mcpServers": {
"quickbooks": {
"command": "mvn spring-boot:run",
"baseUrl": "http://localhost:8080",
"endpoints": {
"query": {
"path": "/api/v1/quickbooks/query",
"method": "POST"
},
"createEntity": {
"path": "/api/v1/quickbooks/entity",
"method": "POST"
}
},
"auth": {
"type": "oauth2",
"config": {
"clientId": "your_client_id_here",
"clientSecret": "your_client_secret_here",
"accessToken": "your_access_token_here",
"realmId": "your_realm_id_here"
}
}
}
}
}