-
Notifications
You must be signed in to change notification settings - Fork 170
demo scripts #3375
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: jerm/2026-01-13-optimizer-in-vmcp
Are you sure you want to change the base?
demo scripts #3375
Conversation
#3253) * feat: Add optimizer package with semantic tool discovery and ingestion This PR introduces the optimizer package, a Go port of the mcp-optimizer Python service that provides semantic tool discovery and ingestion for MCP servers. - **Semantic tool search** using vector embeddings (384-dim) - **Token counting** for LLM cost estimation - **Full-text search** via SQLite FTS5 - **Multiple embedding backends**: Ollama, vLLM, or placeholder (testing) - **Production-ready database** with sqlite-vec for vector similarity search
* feat: Add optimizer integration endpoints and tool discovery - Add find_tool and call_tool endpoints to vmcp optimizer - Add semantic search and string matching for tool discovery - Update optimizer integration documentation - Add test scripts for optimizer functionality
* feat: Add token metrics and observability to optimizer integration
…failures The checkPodsReady function was checking all pods with matching labels, including old pods that had completed (Phase: Succeeded) from previous deployments. This caused the auth discovery e2e test to fail when old pods were still present during deployment updates. Fix: Skip pods that are not in Running phase and ensure at least one running pod exists after filtering.
The test was failing with 'connection reset by peer' errors when trying to connect to the health endpoint. This can happen if pods crash or restart between the BeforeAll setup and the actual test execution. Fix: Add explicit pod readiness verification right before the health check and also check pod readiness inside the Eventually loop to catch pods that crash during health check retries. This makes the test more robust by ensuring pods are stable before attempting HTTP connections.
The health check was using http.Get() without a timeout, which could cause hangs. Add an explicit HTTP client with 10s timeout and improve error messages to help diagnose connection reset issues.
* remove docs * fixes from review * simplify code and fixes from review * fixes from review * fix ci --------- Co-authored-by: taskbot <taskbot@users.noreply.github.com>
…nfig - Use DeepCopy() for automatic passthrough of config fields (Optimizer, Metadata, etc.) - Add resolveEmbeddingService() to resolve Kubernetes Service names to URLs - Ensures optimizer config is properly converted from CRD to runtime config - Resolves embeddingService references in Kubernetes deployments
- Add CLI fallback for embeddingService when not resolved by operator - Normalize localhost to 127.0.0.1 in embeddings to avoid IPv6 issues - Add HTTP timeout (30s) to prevent hanging connections - Remove WithContinuousListening() to use timeout-based approach
Add tracing spans to all aggregator methods to enable visibility of capability aggregation in Jaeger. This includes spans for: - AggregateCapabilities (parent span) - QueryAllCapabilities (parallel backend queries) - QueryCapabilities (per-backend queries) - ResolveConflicts (conflict resolution) - MergeCapabilities (final merge) All spans include relevant attributes like backend counts, tool/resource/prompt counts, and error recording. This fixes the issue where capability aggregation logs appeared but no spans were visible in Jaeger.
Signed-off-by: nigel brown <nigel@stacklok.com>
Signed-off-by: nigel brown <nigel@stacklok.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Large PR Detected
This PR exceeds 1000 lines of changes and requires justification before it can be reviewed.
How to unblock this PR:
Add a section to your PR description with the following format:
## Large PR Justification
[Explain why this PR must be large, such as:]
- Generated code that cannot be split
- Large refactoring that must be atomic
- Multiple related changes that would break if separated
- Migration or data transformationAlternative:
Consider splitting this PR into smaller, focused changes (< 1000 lines each) for easier review and reduced risk.
See our Contributing Guidelines for more details.
This review will be automatically dismissed once you add the justification section.
1f6f22b to
91a210d
Compare
Signed-off-by: nigel brown <nigel@stacklok.com>
These are some demo scripts that bootstrap a kind k8s cluster, build and install the components.