chore: import upstream snapshot with attribution
Continuous Integration / Pre-commit Linter (push) Has been cancelled
Continuous Integration / Mypy Check (Python 3.10) (push) Has been cancelled
Continuous Integration / Mypy Check (Python 3.11) (push) Has been cancelled
Continuous Integration / Mypy Check (Python 3.12) (push) Has been cancelled
Continuous Integration / Mypy Check (Python 3.13) (push) Has been cancelled
Continuous Integration / Unit Tests (Python 3.10) (push) Has been cancelled
Continuous Integration / Unit Tests (Python 3.11) (push) Has been cancelled
Continuous Integration / Unit Tests (Python 3.12) (push) Has been cancelled
Continuous Integration / Unit Tests (Python 3.13) (push) Has been cancelled
Continuous Integration / Unit Tests (Python 3.14) (push) Has been cancelled
Continuous Integration / A2A v0.3 Tests (Python 3.10) (push) Has been cancelled
Continuous Integration / A2A v0.3 Tests (Python 3.11) (push) Has been cancelled
Continuous Integration / A2A v0.3 Tests (Python 3.12) (push) Has been cancelled
Copybara PR Handler / close-imported-pr (push) Has been cancelled
Continuous Integration / A2A v0.3 Tests (Python 3.13) (push) Has been cancelled
Continuous Integration / A2A v0.3 Tests (Python 3.14) (push) Has been cancelled
Continuous Integration / Pre-commit Linter (push) Has been cancelled
Continuous Integration / Mypy Check (Python 3.10) (push) Has been cancelled
Continuous Integration / Mypy Check (Python 3.11) (push) Has been cancelled
Continuous Integration / Mypy Check (Python 3.12) (push) Has been cancelled
Continuous Integration / Mypy Check (Python 3.13) (push) Has been cancelled
Continuous Integration / Unit Tests (Python 3.10) (push) Has been cancelled
Continuous Integration / Unit Tests (Python 3.11) (push) Has been cancelled
Continuous Integration / Unit Tests (Python 3.12) (push) Has been cancelled
Continuous Integration / Unit Tests (Python 3.13) (push) Has been cancelled
Continuous Integration / Unit Tests (Python 3.14) (push) Has been cancelled
Continuous Integration / A2A v0.3 Tests (Python 3.10) (push) Has been cancelled
Continuous Integration / A2A v0.3 Tests (Python 3.11) (push) Has been cancelled
Continuous Integration / A2A v0.3 Tests (Python 3.12) (push) Has been cancelled
Copybara PR Handler / close-imported-pr (push) Has been cancelled
Continuous Integration / A2A v0.3 Tests (Python 3.13) (push) Has been cancelled
Continuous Integration / A2A v0.3 Tests (Python 3.14) (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
# Toolbox Agent
|
||||
|
||||
This agent utilizes [MCP toolbox for database](https://mcp-toolbox.dev) to assist end users based on information stored in a database.
|
||||
|
||||
Follow the steps below to run this agent.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Before starting, ensure you have Python installed on your system.
|
||||
|
||||
## Installation Steps
|
||||
|
||||
### 1. Install Toolbox
|
||||
|
||||
Run the following command to download and install the MCP Toolbox binary.
|
||||
|
||||
> [!NOTE]
|
||||
> You can find the latest version on the [Releases page](https://github.com/googleapis/mcp-toolbox/releases) and update the version in the URL below.
|
||||
|
||||
```bash
|
||||
export OS="linux/amd64" # one of linux/amd64, darwin/arm64, darwin/amd64, or windows/amd64
|
||||
curl -O https://storage.googleapis.com/mcp-toolbox-for-databases/v1.1.0/$OS/toolbox
|
||||
chmod +x toolbox
|
||||
```
|
||||
|
||||
### 2. Install SQLite
|
||||
|
||||
Install SQLite from [https://sqlite.org/](https://sqlite.org/)
|
||||
|
||||
### 3. Install Required Python Dependencies
|
||||
|
||||
**Important**: The ADK's `ToolboxToolset` class requires the `toolbox-adk` package, which is not automatically installed with the ADK. Install it using:
|
||||
|
||||
```bash
|
||||
pip install google-adk[toolbox]
|
||||
```
|
||||
|
||||
### 4. Create Database (Optional)
|
||||
|
||||
*Note: A database instance is already included in the project folder. Skip this step if you want to use the existing database.*
|
||||
|
||||
To create a new database:
|
||||
|
||||
```bash
|
||||
sqlite3 tool_box.db
|
||||
```
|
||||
|
||||
Run the following SQL commands to set up the hotels table:
|
||||
|
||||
```sql
|
||||
CREATE TABLE hotels(
|
||||
id INTEGER NOT NULL PRIMARY KEY,
|
||||
name VARCHAR NOT NULL,
|
||||
location VARCHAR NOT NULL,
|
||||
price_tier VARCHAR NOT NULL,
|
||||
checkin_date DATE NOT NULL,
|
||||
checkout_date DATE NOT NULL,
|
||||
booked BIT NOT NULL
|
||||
);
|
||||
|
||||
INSERT INTO hotels(id, name, location, price_tier, checkin_date, checkout_date, booked)
|
||||
VALUES
|
||||
(1, 'Hilton Basel', 'Basel', 'Luxury', '2024-04-22', '2024-04-20', 0),
|
||||
(2, 'Marriott Zurich', 'Zurich', 'Upscale', '2024-04-14', '2024-04-21', 0),
|
||||
(3, 'Hyatt Regency Basel', 'Basel', 'Upper Upscale', '2024-04-02', '2024-04-20', 0),
|
||||
(4, 'Radisson Blu Lucerne', 'Lucerne', 'Midscale', '2024-04-24', '2024-04-05', 0),
|
||||
(5, 'Best Western Bern', 'Bern', 'Upper Midscale', '2024-04-23', '2024-04-01', 0),
|
||||
(6, 'InterContinental Geneva', 'Geneva', 'Luxury', '2024-04-23', '2024-04-28', 0),
|
||||
(7, 'Sheraton Zurich', 'Zurich', 'Upper Upscale', '2024-04-27', '2024-04-02', 0),
|
||||
(8, 'Holiday Inn Basel', 'Basel', 'Upper Midscale', '2024-04-24', '2024-04-09', 0),
|
||||
(9, 'Courtyard Zurich', 'Zurich', 'Upscale', '2024-04-03', '2024-04-13', 0),
|
||||
(10, 'Comfort Inn Bern', 'Bern', 'Midscale', '2024-04-04', '2024-04-16', 0);
|
||||
```
|
||||
|
||||
### 5. Create Tools Configuration
|
||||
|
||||
Create a YAML file named `tools.yaml`. See the contents in the agent folder for reference.
|
||||
|
||||
### 6. Start Toolbox Server
|
||||
|
||||
Run the following command in the agent folder:
|
||||
|
||||
```bash
|
||||
toolbox --tools-file "tools.yaml"
|
||||
```
|
||||
|
||||
The server will start at `http://127.0.0.1:5000` by default.
|
||||
|
||||
### 7. Start ADK Web UI
|
||||
|
||||
Follow the ADK documentation to start the web user interface.
|
||||
|
||||
## Testing the Agent
|
||||
|
||||
Once everything is set up, you can test the agent with these sample queries:
|
||||
|
||||
- **Query 1**: "What can you do for me?"
|
||||
- **Query 2**: "Could you let me know the information about 'Hilton Basel' hotel?"
|
||||
Reference in New Issue
Block a user