Skip to content

Commit 23ae77c

Browse files
drernieclaude
andauthored
170 tool audit (#177)
- **rename script** - **trim spec** - **phases** - **phase 1** - **package_contents_search** - **feat: consolidate catalog search tooling** --------- Co-authored-by: Claude <[email protected]>
1 parent b0ebe9b commit 23ae77c

File tree

71 files changed

+1825
-1683
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

71 files changed

+1825
-1683
lines changed

AGENTS.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -407,8 +407,8 @@ The following permissions are granted for this repository:
407407
- Workflow orchestration APIs reject blank workflow IDs; trim identifiers in tests when constructing fixtures to avoid silent acceptance.
408408

409409
### 2025-09-20 uv packaging notes
410-
- DXT packaging currently runs through `make.deploy` using `uv pip install`; the UV PyPI build flow lives in `bin/release.sh python-dist` with `make python-dist`, mirroring how `make dxt` exposes DXT packaging.
411-
- `python-dist` builds local artifacts without credentials. `bin/release.sh python-publish` (via `make python-publish`) requires either `UV_PUBLISH_TOKEN` or `UV_PUBLISH_USERNAME`/`UV_PUBLISH_PASSWORD`, defaults to TestPyPI (`PYPI_PUBLISH_URL`/`PYPI_REPOSITORY_URL` override), and respects `DIST_DIR`.
410+
- DXT packaging currently runs through `make.deploy` using `uv pip install`; the UV PyPI build flow lives in `scripts/release.sh python-dist` with `make python-dist`, mirroring how `make dxt` exposes DXT packaging.
411+
- `python-dist` builds local artifacts without credentials. `scripts/release.sh python-publish` (via `make python-publish`) requires either `UV_PUBLISH_TOKEN` or `UV_PUBLISH_USERNAME`/`UV_PUBLISH_PASSWORD`, defaults to TestPyPI (`PYPI_PUBLISH_URL`/`PYPI_REPOSITORY_URL` override), and respects `DIST_DIR`.
412412
- GitHub Actions builds dist artifacts via `python-dist`, publishes them with `pypa/gh-action-pypi-publish`, then runs `make dxt`, `make dxt-validate`, and `make release-zip` to keep DXT parity. Secrets supply the PyPI/TestPyPI token (`secrets.PYPI_TOKEN`).
413413

414414
## important-instruction-reminders

Makefile

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -95,13 +95,13 @@ config-claude:
9595

9696
# Version Management Targets
9797
bump-patch:
98-
@bin/release.sh bump patch
98+
@scripts/release.sh bump patch
9999

100100
bump-minor:
101-
@bin/release.sh bump minor
101+
@scripts/release.sh bump minor
102102

103103
bump-major:
104-
@bin/release.sh bump major
104+
@scripts/release.sh bump major
105105

106106
# Combined Release Targets (bump + commit + tag)
107107
release-patch: bump-patch
@@ -111,7 +111,7 @@ release-patch: bump-patch
111111
git commit -m "bump: patch version to $$VERSION"; \
112112
echo "✅ Committed version bump to $$VERSION"
113113
@echo "🏷️ Creating release tag..."
114-
@bin/release.sh release
114+
@scripts/release.sh release
115115

116116
release-minor: bump-minor
117117
@echo "🔍 Committing minor version bump..."
@@ -120,7 +120,7 @@ release-minor: bump-minor
120120
git commit -m "bump: minor version to $$VERSION"; \
121121
echo "✅ Committed version bump to $$VERSION"
122122
@echo "🏷️ Creating release tag..."
123-
@bin/release.sh release
123+
@scripts/release.sh release
124124

125125
release-major: bump-major
126126
@echo "🔍 Committing major version bump..."
@@ -129,4 +129,4 @@ release-major: bump-major
129129
git commit -m "bump: major version to $$VERSION"; \
130130
echo "✅ Committed version bump to $$VERSION"
131131
@echo "🏷️ Creating release tag..."
132-
@bin/release.sh release
132+
@scripts/release.sh release

README.md

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ SERVER_PID=$!
4545

4646
# 4. Verify that it works
4747
sleep 8
48-
bin/mcp-test.py http://127.0.0.1:8000/mcp/
48+
scripts/mcp-test.py http://127.0.0.1:8000/mcp/
4949
kill $SERVER_PID
5050
```
5151

@@ -142,25 +142,25 @@ This server provides **84+ comprehensive tools** organized into categories:
142142

143143
- `packages_list` - List packages with filtering and search
144144
- `package_browse` - Explore package contents and structure
145-
- `package_create` - Create packages from S3 objects
145+
- `package_create` - Create packages with metadata templates and validation
146146
- `package_update` - Update existing packages
147147
- `package_validate` - Validate package integrity
148-
- `create_package_enhanced` - Advanced creation with templates
148+
- `package_tools_list` - Discover all package management helpers
149149

150150
### 🗄️ S3 Operations
151151

152152
- `bucket_objects_list` - List and filter S3 objects
153153
- `bucket_object_info` - Get detailed object metadata
154154
- `bucket_object_text` - Read text content from objects
155155
- `bucket_objects_put` - Upload multiple objects
156-
- `bucket_objects_search` - Search using Elasticsearch
156+
157157

158158
### 📊 Analytics & SQL
159159

160160
- `athena_query_execute` - Run SQL queries via Athena
161161
- `athena_databases_list` - List available databases
162162
- `tabulator_tables_list` - Manage Quilt Tabulator tables
163-
- `unified_search` - Multi-backend intelligent search
163+
- `catalog_search` - Multi-backend intelligent search
164164

165165
### 🔐 Authentication & Permissions
166166

@@ -173,7 +173,6 @@ This server provides **84+ comprehensive tools** organized into categories:
173173
- `workflow_create` - Multi-step workflow management
174174
- `metadata_templates` - Generate metadata (genomics, ML, etc.)
175175
- `generate_quilt_summarize_json` - Create package summaries
176-
- `create_package_from_s3` - Smart S3-to-package conversion
177176

178177
**[View complete tool reference →](docs/TOOLS.md)**
179178

@@ -379,7 +378,7 @@ await mcp_client.call_tool(\"unified_search\", {
379378
})
380379

381380
# Create package
382-
await mcp_client.call_tool(\"create_package_enhanced\", {
381+
await mcp_client.call_tool(\"package_create\", {
383382
\"name\": \"genomics/study-001\",
384383
\"files\": [\"s3://bucket/data.vcf\"],
385384
\"metadata_template\": \"genomics\",

bin/version.sh

Lines changed: 0 additions & 27 deletions
This file was deleted.

docs/api/TOOLS.md

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1109,12 +1109,12 @@ result = await mcp_client.call_tool(\"workflow_create\", {
11091109
}
11101110
```
11111111

1112-
#### `workflow_add_step`
1112+
#### `workflow_step_add`
11131113

11141114
Add steps to existing workflows.
11151115

11161116
```python
1117-
result = await mcp_client.call_tool(\"workflow_add_step\", {
1117+
result = await mcp_client.call_tool(\"workflow_step_add\", {
11181118
\"workflow_id\": \"genomics-processing-001\",
11191119
\"step_id\": \"quality_control\",
11201120
\"description\": \"Run FastQC on raw sequencing data\",
@@ -1127,7 +1127,7 @@ result = await mcp_client.call_tool(\"workflow_add_step\", {
11271127
})
11281128

11291129
# Add dependent step
1130-
result = await mcp_client.call_tool(\"workflow_add_step\", {
1130+
result = await mcp_client.call_tool(\"workflow_step_add\", {
11311131
\"workflow_id\": \"genomics-processing-001\",
11321132
\"step_id\": \"alignment\",
11331133
\"description\": \"Align reads to reference genome\",
@@ -1140,12 +1140,12 @@ result = await mcp_client.call_tool(\"workflow_add_step\", {
11401140
})
11411141
```
11421142

1143-
#### `workflow_update_step`
1143+
#### `workflow_step_update`
11441144

11451145
Update step status and results.
11461146

11471147
```python
1148-
result = await mcp_client.call_tool(\"workflow_update_step\", {
1148+
result = await mcp_client.call_tool(\"workflow_step_update\", {
11491149
\"workflow_id\": \"genomics-processing-001\",
11501150
\"step_id\": \"quality_control\",
11511151
\"status\": \"completed\",
@@ -1157,12 +1157,12 @@ result = await mcp_client.call_tool(\"workflow_update_step\", {
11571157
})
11581158
```
11591159

1160-
#### `workflow_get_status`
1160+
#### `workflow_status_get`
11611161

11621162
Get comprehensive workflow status.
11631163

11641164
```python
1165-
result = await mcp_client.call_tool(\"workflow_get_status\", {
1165+
result = await mcp_client.call_tool(\"workflow_status_get\", {
11661166
\"workflow_id\": \"genomics-processing-001\"
11671167
})
11681168

@@ -1189,12 +1189,12 @@ result = await mcp_client.call_tool(\"workflow_get_status\", {
11891189
}
11901190
```
11911191

1192-
#### `workflow_list_all`
1192+
#### `workflow_list`
11931193

11941194
List all workflows with summary information.
11951195

11961196
```python
1197-
result = await mcp_client.call_tool(\"workflow_list_all\", {})
1197+
result = await mcp_client.call_tool(\"workflow_list\", {})
11981198

11991199
# Response includes workflow summaries
12001200
{
@@ -1273,13 +1273,13 @@ result = await mcp_client.call_tool(\"list_metadata_templates\", {})
12731273
}
12741274
```
12751275

1276-
#### `get_metadata_template`
1276+
#### `metadata_template_get`
12771277

12781278
Get a specific metadata template with optional custom fields.
12791279

12801280
```python
12811281
# Get genomics template
1282-
result = await mcp_client.call_tool(\"get_metadata_template\", {
1282+
result = await mcp_client.call_tool(\"metadata_template_get\", {
12831283
\"template_name\": \"genomics\",
12841284
\"custom_fields\": {
12851285
\"study_id\": \"CCLE_2024\",
@@ -1306,12 +1306,12 @@ result = await mcp_client.call_tool(\"get_metadata_template\", {
13061306
}
13071307
```
13081308

1309-
#### `create_metadata_from_template`
1309+
#### `metadata_template_create`
13101310

13111311
Create metadata using a template - simplified interface.
13121312

13131313
```python
1314-
result = await mcp_client.call_tool(\"create_metadata_from_template\", {
1314+
result = await mcp_client.call_tool(\"metadata_template_create\", {
13151315
\"template_name\": \"genomics\",
13161316
\"description\": \"Human RNA-seq data from CCLE cell lines\",
13171317
\"custom_fields\": {
@@ -2046,22 +2046,22 @@ workflow = await mcp_client.call_tool(\"workflow_create\", {
20462046
})
20472047

20482048
# Add processing steps
2049-
qc_step = await mcp_client.call_tool(\"workflow_add_step\", {
2049+
qc_step = await mcp_client.call_tool(\"workflow_step_add\", {
20502050
\"workflow_id\": \"data-processing-pipeline\",
20512051
\"step_id\": \"quality_control\",
20522052
\"description\": \"Quality control analysis\",
20532053
\"step_type\": \"automated\"
20542054
})
20552055

2056-
alignment_step = await mcp_client.call_tool(\"workflow_add_step\", {
2056+
alignment_step = await mcp_client.call_tool(\"workflow_step_add\", {
20572057
\"workflow_id\": \"data-processing-pipeline\",
20582058
\"step_id\": \"alignment\",
20592059
\"description\": \"Read alignment to reference\",
20602060
\"dependencies\": [\"quality_control\"]
20612061
})
20622062

20632063
# Monitor workflow progress
2064-
status = await mcp_client.call_tool(\"workflow_get_status\", {
2064+
status = await mcp_client.call_tool(\"workflow_status_get\", {
20652065
\"workflow_id\": \"data-processing-pipeline\"
20662066
})
20672067
```
@@ -2075,8 +2075,8 @@ status = await mcp_client.call_tool(\"workflow_get_status\", {
20752075
| **S3 Operations** | `bucket_objects_list`, `bucket_object_info`, `unified_search` | Direct data access, file operations |
20762076
| **Search & Discovery** | `unified_search`, `search_suggest`, `packages_search` | Finding data, content discovery |
20772077
| **Analytics** | `athena_query_execute`, `tabulator_tables_list` | Data analysis, SQL queries |
2078-
| **Workflows** | `workflow_create`, `workflow_add_step`, `workflow_get_status` | Process orchestration, automation |
2079-
| **Metadata** | `get_metadata_template`, `validate_metadata_structure` | Data documentation, standardization |
2078+
| **Workflows** | `workflow_create`, `workflow_step_add`, `workflow_status_get` | Process orchestration, automation |
2079+
| **Metadata** | `metadata_template_get`, `validate_metadata_structure` | Data documentation, standardization |
20802080
| **Permissions** | `aws_permissions_discover`, `bucket_access_check` | Security, access validation |
20812081
| **Administration** | `admin_users_list`, `admin_user_create`, `admin_roles_list` | User management, role management |
20822082

docs/archive/DUAL_MCP_ARCHITECTURE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ This document describes the implementation of a dual MCP (Model Context Protocol
118118
**Workflow**:
119119
1. `benchling_search_entities` - Validate Library L-789 exists
120120
2. `mcp_quilt_package_create_from_s3` - Create Quilt package from FASTQ files
121-
3. `mcp_quilt_create_metadata_from_template` - Add Benchling entity links to metadata
121+
3. `mcp_quilt_metadata_template_create` - Add Benchling entity links to metadata
122122
4. `benchling_get_projects` - Update project with package reference
123123

124124
### 3. Protocol Awareness (SB010)

docs/archive/MCP_COMPREHENSIVE_ANALYSIS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ After running comprehensive testing against 40 realistic test cases, the MCP ser
3838
**Affected Tools**:
3939
- `mcp_quilt_package_validate`
4040
- `mcp_quilt_package_update_metadata`
41-
- `mcp_quilt_create_metadata_from_template`
41+
- `mcp_quilt_metadata_template_create`
4242
- `mcp_quilt_fix_metadata_validation_issues`
4343
- `mcp_quilt_show_metadata_examples`
4444
- `mcp_quilt_bucket_recommendations_get`

docs/archive/REAL_MCP_QUERY_ANALYSIS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ After running actual user queries against the real MCP server, I've discovered s
4545
---
4646

4747
### **R003: "Create a new package with metadata and validate the metadata structure"**
48-
**MCP Decision**: `get_metadata_template` + `validate_metadata_structure`
48+
**MCP Decision**: `metadata_template_get` + `validate_metadata_structure`
4949
**Actual Result**: ✅ **GOOD**
5050
- Retrieved genomics metadata template
5151
- Validated custom metadata structure successfully

extract_tools.py

Lines changed: 0 additions & 1 deletion
This file was deleted.

make.deploy

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ DIST_DIR := dist
1111
# Variables
1212
DXT_NAME := quilt-mcp
1313
# Allow VERSION to be overridden from command line, otherwise read from pyproject.toml
14-
MANIFEST_VERSION := $(shell python3 scripts/version-utils.py get-version 2>/dev/null || echo "dev")
14+
MANIFEST_VERSION := $(shell python3 scripts/version.py get-version 2>/dev/null || echo "dev")
1515
PACKAGE_VERSION := $(if $(VERSION),$(VERSION),$(MANIFEST_VERSION))
1616
PACKAGE_ID := $(DIST_DIR)/$(DXT_NAME)-$(PACKAGE_VERSION)
1717
DXT_PACKAGE := $(PACKAGE_ID).dxt
@@ -47,7 +47,6 @@ $(ASSETS_MARKER): $(ASSET_FILES)
4747
@mkdir -p $(BUILD_DIR)
4848
@cp -r $(ASSETS_DIR)/* $(BUILD_DIR)/
4949
@if [ -f "$(BUILD_DIR)/check-dxt.sh" ]; then chmod +x $(BUILD_DIR)/check-dxt.sh; fi
50-
@if [ -f "$(BUILD_DIR)/check-prereqs.sh" ]; then chmod +x $(BUILD_DIR)/check-prereqs.sh; fi
5150
@echo "Generating manifest.json from template..."
5251
@sed 's/{{ version }}/$(PACKAGE_VERSION)/g' $(BUILD_DIR)/manifest.json.j2 > $(BUILD_DIR)/manifest.json
5352
@rm $(BUILD_DIR)/manifest.json.j2
@@ -96,7 +95,7 @@ python-dist: check-tools
9695
@echo "✅ Python packaging complete"
9796

9897
python-publish:
99-
@./bin/release.sh python-publish
98+
@./scripts/release.sh python-publish
10099

101100
# DXT Package Validation
102101
dxt-validate: check-tools dxt
@@ -126,18 +125,18 @@ release-tag:
126125
@echo "Creating release tag..."
127126
@if [ "${DRY_RUN}" = "1" ]; then \
128127
echo "🔍 DRY RUN: Would create release tag"; \
129-
./bin/release.sh release --dry-run; \
128+
./scripts/release.sh release --dry-run; \
130129
else \
131-
./bin/release.sh release; \
130+
./scripts/release.sh release; \
132131
fi
133132

134133
release-dev-tag:
135134
@echo "Creating development tag..."
136135
@if [ "${DRY_RUN}" = "1" ]; then \
137136
echo "🔍 DRY RUN: Would create development tag"; \
138-
./bin/release.sh dev --dry-run; \
137+
./scripts/release.sh dev --dry-run; \
139138
else \
140-
./bin/release.sh dev; \
139+
./scripts/release.sh dev; \
141140
fi
142141

143142
# Cleanup Targets

0 commit comments

Comments
 (0)