-
Notifications
You must be signed in to change notification settings - Fork 4
Doc 1846: Remote MCP GA #472
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
Merged
Merged
Changes from all commits
Commits
Show all changes
57 commits
Select commit
Hold shift + click to select a range
9afebbd
Remove beta labels, single-source duplicated content, and add testing
JakeSCahill 0795b78
Merge branch 'main' into DOC-1844
JakeSCahill 4af7395
Document automatic service account creation
JakeSCahill 196fd9e
Add billing info for MCP
JakeSCahill ae615e9
Correct MCP and serverless cluster API paths
JakeSCahill 2fae2f8
Split admin guide into task-based pages
JakeSCahill 6fafd4d
Enhance MCP server pipeline patterns documentation
JakeSCahill bb13636
Add .env to gitignore
JakeSCahill 86fd22f
Escape curly braces in API path parameters
JakeSCahill 4e002c7
Fix anchor
JakeSCahill 1762040
Document tags and reserved tag names for Remote MCP servers
JakeSCahill 5dea823
Update MCP server creation flow to match UI terminology
JakeSCahill cfdb632
Convert tagging strategies to table format
JakeSCahill e293ede
Update workflow and document inline secret creation in Cloud Console
JakeSCahill b7a0a61
Add cross-reference to tool contract design section
JakeSCahill c1f9e53
Simplify heading to 'Build your MCP tool'
JakeSCahill 194f52f
Add real trace examples showing tool execution and error events
JakeSCahill 5ba5218
Use uppercase snakecase for Grafana Cloud secret names
JakeSCahill 2ac3688
Simplify monitoring docs and remove unnecessary sections
JakeSCahill d77ef3d
Update monitoring docs with realistic trace examples and schema details
JakeSCahill 19fcd2e
Update branch
JakeSCahill e98b2d9
Fix doc-tools not found error in test-mcp-examples workflow
JakeSCahill 294cf1c
Make MCP validation failures fail the test suite
JakeSCahill fc4b688
fix: Resolve ShellCheck warnings in test script
JakeSCahill 6c38dcd
Fix schema syntax
JakeSCahill 2c4e0cd
Remove beta
JakeSCahill 1c724c2
Add badge macro
JakeSCahill 9f55377
Add badge macro
JakeSCahill b40d095
fix: Correct MCP API examples and secret naming
JakeSCahill d43c0d4
Add warning about redpanda.otel_traces topic management
JakeSCahill 7c282da
Document redpanda.otel_traces topic billing
JakeSCahill c440a3c
Add 'Outputs with processors' pattern for Remote MCP
JakeSCahill 96348ff
Clarify how to identify MCP tools in shared traces topic
JakeSCahill 482be19
Add trace topic configuration and lifecycle details
JakeSCahill 3a665a5
Minor fixes
JakeSCahill 12be320
Use 'MCP server' terminology consistently across MCP remote docs
JakeSCahill efb6611
Fix remaining 'Remote MCP server' instances to use 'MCP server'
JakeSCahill f64a6c6
Remove 'Remote MCP' from xref link text and section headings
JakeSCahill 473015b
Clarify terms
JakeSCahill d6f4da6
Apply suggestions from code review
JakeSCahill 0d5d6fa
Formatting
JakeSCahill 520f5c0
Fix tests to use mcp-server lint
JakeSCahill b970ed7
Cleanup
JakeSCahill f370b41
Use verbose linting and check for output since Connect does not exit …
JakeSCahill 665ea67
Merge branch 'main' into DOC-1844
JakeSCahill d5d30e3
Fix linter
JakeSCahill d91266b
Merge branch 'DOC-1844' of https://github.com/redpanda-data/cloud-doc…
JakeSCahill e9cd68d
Fix MCP trace docs: clarify 100% sampling, remove unsupported exports
JakeSCahill a9ec8ce
Merge branch 'main' into DOC-1844
JakeSCahill 721e322
Update monitor-activity.adoc
JakeSCahill fef4dc0
Update modules/ai-agents/pages/mcp/remote/monitor-activity.adoc
JakeSCahill 24a0f37
Update developer-guide.adoc
JakeSCahill 6eb42b3
Merge branch 'main' into DOC-1844
JakeSCahill 3940445
apply suggestions
JakeSCahill 7904d44
Merge branch 'DOC-1844' of https://github.com/redpanda-data/cloud-doc…
JakeSCahill f404c42
apply suggestions
JakeSCahill 0403bd7
apply suggestions
JakeSCahill File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Some comments aren't visible on the classic Files Changed page.
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,53 @@ | ||
| name: Test MCP Examples | ||
|
|
||
| on: | ||
| push: | ||
| branches: | ||
| - main | ||
| paths: | ||
| - 'modules/ai-agents/examples/**/*.yaml' | ||
| - 'modules/ai-agents/examples/test-mcp-examples.sh' | ||
| pull_request: | ||
| branches: | ||
| - main | ||
| paths: | ||
| - 'modules/ai-agents/examples/**/*.yaml' | ||
| - 'modules/ai-agents/examples/test-mcp-examples.sh' | ||
|
|
||
| jobs: | ||
| test-all-examples: | ||
| name: Test All MCP Examples | ||
| runs-on: ubuntu-latest | ||
|
|
||
| steps: | ||
| - name: Checkout repository | ||
| uses: actions/checkout@v4 | ||
|
|
||
| - name: Setup Node.js | ||
| uses: actions/setup-node@v4 | ||
| with: | ||
| node-version: '22' | ||
|
|
||
| - name: Install npm dependencies | ||
| run: npm install | ||
|
|
||
| - name: Install doc-tools dependencies | ||
| run: npx --no-install doc-tools install-test-dependencies | ||
|
|
||
| - name: Install yq | ||
| run: | | ||
| sudo wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 | ||
| sudo chmod +x /usr/local/bin/yq | ||
|
|
||
| - name: Make test script executable | ||
| run: chmod +x modules/ai-agents/examples/test-mcp-examples.sh | ||
|
|
||
| - name: Run MCP examples tests | ||
| run: | | ||
| cd modules/ai-agents/examples | ||
| ./test-mcp-examples.sh | ||
|
|
||
| - name: Test Summary | ||
| if: always() | ||
| run: | | ||
| echo "::notice title=MCP Examples Testing::All Cloud MCP examples have been validated" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -32,7 +32,7 @@ jobs: | |
|
|
||
| - uses: actions/setup-node@v4 | ||
| with: | ||
| node-version: '18' | ||
| node-version: '22' | ||
|
|
||
| - run: npm install | ||
|
|
||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -8,3 +8,4 @@ build/_redirects | |
| poc-docs/ | ||
| docs/ | ||
| .docusaurus | ||
| .env | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
19 changes: 19 additions & 0 deletions
19
modules/ai-agents/examples/redpanda_output_with_processors.yaml
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,19 @@ | ||
| redpanda: | ||
| seed_brokers: [ "${REDPANDA_BROKERS}" ] | ||
| topic: "llm-responses" | ||
| tls: | ||
| enabled: true | ||
| sasl: | ||
| - mechanism: "${REDPANDA_SASL_MECHANISM}" | ||
| username: "${REDPANDA_SASL_USERNAME}" | ||
| password: "${REDPANDA_SASL_PASSWORD}" | ||
|
|
||
| processors: | ||
| - openai_chat_completion: | ||
| api_key: "${secrets.OPENAI_API_KEY}" | ||
| model: "gpt-4" | ||
| prompt: ${! json("question") } | ||
| - mapping: | | ||
| root.question = this.question | ||
| root.answer = this.content | ||
| root.timestamp = now().ts_format("2006-01-02T15:04:05Z07:00") | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,157 @@ | ||
| #!/usr/bin/env bash | ||
| # | ||
| # Automated testing script for Redpanda Connect MCP examples | ||
| # | ||
| # Usage: | ||
| # ./test-mcp-examples.sh | ||
|
|
||
| set -euo pipefail | ||
|
|
||
| # Colors for output | ||
| RED='\033[0;31m' | ||
| GREEN='\033[0;32m' | ||
| YELLOW='\033[1;33m' | ||
| BLUE='\033[0;34m' | ||
| NC='\033[0m' | ||
|
|
||
| # Counters | ||
| TOTAL=0 | ||
| SKIPPED=0 | ||
| MCP_FAILS=0 | ||
|
|
||
| echo "🧪 Redpanda Connect MCP Examples Test Suite" | ||
| echo "============================================" | ||
| echo "" | ||
|
|
||
| # Run MCP server lint on the directory | ||
| echo "Running rpk connect mcp-server lint..." | ||
| LINT_OUTPUT=$(rpk connect mcp-server lint --skip-env-var-check --verbose 2>&1) || { | ||
| echo -e "${RED}❌ Linting failed${NC}" | ||
| echo "" | ||
| echo "$LINT_OUTPUT" | ||
| exit 1 | ||
| } | ||
| echo -e "${GREEN}✅ Linting passed${NC}" | ||
| echo "" | ||
|
|
||
| # Function to validate MCP metadata | ||
| validate_mcp_metadata() { | ||
| local file=$1 | ||
|
|
||
| echo -n " Validating MCP metadata... " | ||
|
|
||
| # Determine which YAML parser to use | ||
| local use_yq=true | ||
| if ! command -v yq &> /dev/null; then | ||
| use_yq=false | ||
| if ! command -v python3 &> /dev/null; then | ||
| echo -e "${RED}FAILED${NC} (neither yq nor python3 available)" | ||
| MCP_FAILS=$((MCP_FAILS + 1)) | ||
| return 1 | ||
| fi | ||
| fi | ||
|
|
||
| # Check if .meta.mcp exists | ||
| local mcp_exists | ||
| if $use_yq; then | ||
| mcp_exists=$(yq eval '.meta.mcp' "$file" 2>/dev/null) | ||
| else | ||
| mcp_exists=$(python3 -c " | ||
| import yaml | ||
| try: | ||
| with open('$file') as f: | ||
| doc = yaml.safe_load(f) | ||
| meta = doc.get('meta', {}) if doc else {} | ||
| mcp = meta.get('mcp') | ||
| print('null' if mcp is None else 'exists') | ||
| except: | ||
| print('null') | ||
| " 2>/dev/null) | ||
| fi | ||
|
|
||
| if [[ "$mcp_exists" == "null" || -z "$mcp_exists" ]]; then | ||
| echo -e "${YELLOW}SKIPPED${NC} (no MCP metadata)" | ||
| SKIPPED=$((SKIPPED + 1)) | ||
| return 0 | ||
| fi | ||
|
|
||
| # Read .meta.mcp.enabled | ||
| local enabled | ||
| if $use_yq; then | ||
| enabled=$(yq eval '.meta.mcp.enabled' "$file" 2>/dev/null) | ||
| else | ||
| enabled=$(python3 -c " | ||
| import yaml | ||
| try: | ||
| with open('$file') as f: | ||
| doc = yaml.safe_load(f) | ||
| enabled = doc.get('meta', {}).get('mcp', {}).get('enabled') | ||
| print('null' if enabled is None else str(enabled).lower()) | ||
| except: | ||
| print('null') | ||
| " 2>/dev/null) | ||
| fi | ||
|
|
||
| if [[ "$enabled" != "true" ]]; then | ||
| echo -e "${YELLOW}WARNING${NC} (mcp.enabled not set to true)" | ||
| return 0 | ||
| fi | ||
|
|
||
| # Read .meta.mcp.description | ||
| local description | ||
| if $use_yq; then | ||
| description=$(yq eval '.meta.mcp.description' "$file" 2>/dev/null) | ||
| else | ||
| description=$(python3 -c " | ||
| import yaml | ||
| try: | ||
| with open('$file') as f: | ||
| doc = yaml.safe_load(f) | ||
| desc = doc.get('meta', {}).get('mcp', {}).get('description') | ||
| print('null' if desc is None or desc == '' else str(desc)) | ||
| except: | ||
| print('null') | ||
| " 2>/dev/null) | ||
| fi | ||
|
|
||
| if [[ "$description" == "null" || -z "$description" ]]; then | ||
| echo -e "${RED}FAILED${NC} (missing description)" | ||
| MCP_FAILS=$((MCP_FAILS + 1)) | ||
| return 1 | ||
| fi | ||
|
|
||
| echo -e "${GREEN}PASSED${NC}" | ||
| return 0 | ||
| } | ||
|
|
||
| # Validate MCP metadata for each file | ||
| for file in *.yaml; do | ||
| if [[ -f "$file" ]]; then | ||
| TOTAL=$((TOTAL + 1)) | ||
| echo "" | ||
| echo -e "${BLUE}📄 Validating: $file${NC}" | ||
| validate_mcp_metadata "$file" | ||
| fi | ||
| done | ||
|
|
||
| # Summary | ||
| echo "" | ||
| echo "============================================" | ||
| echo "📊 Test Summary" | ||
| echo "============================================" | ||
| echo "Total configs tested: $TOTAL" | ||
| if [[ $MCP_FAILS -gt 0 ]]; then | ||
| echo -e "MCP validation failures: ${RED}$MCP_FAILS${NC}" | ||
| fi | ||
| if [[ $SKIPPED -gt 0 ]]; then | ||
| echo -e "Skipped: ${YELLOW}$SKIPPED${NC}" | ||
| fi | ||
| echo "" | ||
|
|
||
| if [[ $MCP_FAILS -gt 0 ]]; then | ||
| echo -e "${RED}❌ Some tests failed${NC}" | ||
| exit 1 | ||
| else | ||
| echo -e "${GREEN}✅ All tests passed!${NC}" | ||
| exit 0 | ||
| fi |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.
does this work? in MCP there must be one component at the root IIRC
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.
yeah outputs and inputs can have individual processors too