npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@dilina0914/http-capture-mcp

v1.4.0

Published

MCP server for capturing HTTP traffic using headless Playwright browser automation

Readme

HTTP Capture MCP Server

A Model Context Protocol (MCP) server for capturing HTTP traffic using headless Playwright browser automation. Provides 20 tools for page interaction, navigation search, form handling, and API capture - primarily used for verification and complex UI patterns when code analysis alone isn't sufficient.

npm version Node.js

What's New in 1.4.0

Documentation Alignment

  • Workflow Consistency: Fully aligned with sar-test-mcp v1.4.0 and sequential test execution workflow
  • Debug Workflow Updates: Enhanced guidance for dropdown/LOV verification in one-by-one test debugging
  • Best Practices: Updated examples reflect sequential test execution and fix propagation patterns

What's New in 1.2.0 (Previous Release)

Navigation Search & Disambiguation

  • 🔍 Navigation Search: New searchNavigation tool types into search field and triggers search automatically
  • 🎯 Smart Page Navigation: New navigateToPage tool handles disambiguation when multiple pages have same name
  • 📍 Path-Based Selection: Select correct page by specifying navigation path (e.g., "Inventory/Inventory Part" vs "Sales/Sales Part")
  • 🔄 Auto-Search Trigger: Automatically presses Enter or clicks search button to trigger search

IFS Cloud Authentication & Navigation

  • 🔐 Automatic IFS Cloud Login: New loginIfsCloud tool handles Keycloak authentication automatically
  • 🎯 Landing Page Navigation: Automatic detection and selection of IFS Cloud tiles on application landing pages
  • 🔑 Smart Credential Management: Credentials automatically sourced from tool parameters, environment variables (IFS_USERNAME, IFS_PASSWORD), or HTTP auth (HTTP_USERNAME, HTTP_PASSWORD)
  • 🚀 One-Command Workflow: openUrl with autoSelectIfsCloudTile: true automatically handles landing page navigation

Documentation & Alignment

  • Generic Examples: All examples now use generic placeholders applicable across all IFS Cloud modules
  • Workflow Consistency: Fully aligned with sar-test-mcp v1.2.0 and openapi-mcp v1.2.0
  • Debug Workflow: Enhanced guidance for dropdown/LOV verification and network comparison
  • Authentication Examples: Added comprehensive IFS Cloud authentication scenarios

What's New in 1.1.0 (Previous Release)

Workflow Alignment

  • Fully aligned with sar-test-mcp v1.1.0 and openapi-mcp v1.1.0
  • Integrated with enhanced self-learning system and Phase 0 workflow
  • Supports debug workflow for dropdown/LOV verification

Role in Debug Workflow

  • Browser Verification: Open forms to verify dropdown/LOV allowed values
  • Debugging Tool: Capture network calls when test failures occur
  • LOV Value Discovery: Navigate to pages and inspect dropdown options
  • Network Comparison: Compare browser traffic with test API calls

Documentation Updates

  • Updated integration examples for v1.1.0 MCP configuration
  • Enhanced troubleshooting for dropdown/LOV debugging scenarios

What's New in 9.0.0

Alignment & Workflow Integration

✅ Complete System Alignment

  • Fully aligned with sar-test-mcp v9.0.0 and openapi-mcp v9.0.0
  • Integrated into updated 13-phase (updated to 15-phase in v12.0.0) test generation workflow
  • Used only when code analysis confidence <95% (following recommendCaptureStrategy)

📚 Documentation Updates

  • Updated examples to reflect code-first approach with browser fallback
  • Clarified when browser automation should be used
  • Enhanced environment variable documentation

🔐 Default Credentials

  • Environment variables work seamlessly with new workflow
  • Automatic authentication reduces manual steps
  • Streamlined browser capture sessions

What's New in 8.0.0

Documentation & Setup

📚 Complete Documentation Overhaul

  • Comprehensive README with accurate feature descriptions
  • Clear integration instructions for VS Code, Cursor, Claude Desktop, and local development
  • Detailed troubleshooting guide
  • Complete tool reference with examples

🔐 Default Credentials Support (from 7.0.0)

  • Configure default server URL, username, and password via environment variables
  • Automatic authentication without passing credentials in every tool call
  • Streamlined browser automation workflow

Features

🎯 Browser Automation

  • 17 powerful tools for complete browser control
  • Headless or visible mode for debugging
  • Session management with isolated browser contexts
  • HTTP traffic capture with full request/response payloads

📋 Form Interactions

  • Fill text inputs, select dropdowns, check boxes
  • Multi-field form filling with fillForm
  • Form field discovery with getFormFields
  • Form submission with validation

🔍 API Capture

  • Intercept all HTTP requests/responses
  • Filter by URL pattern or method
  • Capture payloads and headers
  • Track request duration and timestamps

📸 Debugging Tools

  • Take screenshots (full page or viewport)
  • Execute JavaScript in page context
  • Get page info (title, URL, visible elements)
  • Wait for selectors or modals

Configuration

Environment Variables:

  • IFS_USERNAME - Default IFS Cloud username for authentication
  • IFS_PASSWORD - Default IFS Cloud password for authentication
  • HTTP_USERNAME - HTTP Basic/NTLM authentication username
  • HTTP_PASSWORD - HTTP Basic/NTLM authentication password
  • DEFAULT_SERVER_URL - Default IFS Cloud server URL
  • DEFAULT_USERNAME - Legacy default username (use IFS_USERNAME instead)
  • DEFAULT_PASSWORD - Legacy default password (use IFS_PASSWORD instead)
  • BROWSER_HEADLESS - Run browser in headless mode (true/false)
  • MAX_CAPTURE_SIZE_MB - Max response body size to capture
  • MAX_SESSIONS - Maximum concurrent browser sessions

Security

  • Header redaction (Authorization, Cookie, etc.)
  • Body redaction for passwords and tokens
  • Session isolation with fresh browser contexts
  • Audit logging for all operations
  • Configurable domain allowlist

Use Cases

  1. Browser-Based Test Generation: When code analysis confidence is <95%
  2. API Discovery: Navigate IFS Cloud pages and capture API calls
  3. Complex UI Patterns: Handle dynamic forms and modals
  4. Verification: Validate code analysis results with actual browser behavior
  5. Debugging: Capture HTTP traffic to debug API issues

Prerequisites

  • Node.js v20.0.0 or higher
  • npm or pnpm package manager
  • Playwright browsers (see installation below)

Package Information

This package is fully bundled - all internal dependencies are included.

| Property | Value | |----------|-------| | Bundle Size | ~63 KB | | Node.js | ≥20.0.0 | | Module Type | ESM | | TypeScript | Included |

Peer Dependencies

The following dependencies are required and must be installed separately:

# Required: Install Playwright
npm install playwright
npx playwright install chromium

# Auto-installed when using npx
@modelcontextprotocol/sdk ^1.0.0

Note: Playwright browsers (~200MB) need to be installed separately. Run npx playwright install chromium after installation.

Integration Options

Choose the integration method that works best for your workflow:

Option 1: VS Code Integration

Integrate the MCP server into VS Code to use HTTP capture tools directly in your editor.

Step 1: Create the MCP configuration folder

In your project root directory, create a .vscode folder:

mkdir .vscode

Step 2: Create the MCP configuration file

Inside the .vscode folder, create a file named mcp.json with the following content:

{
  "servers": {
    "http-capture": {
      "command": "npx",
      "args": [
        "-y",
        "@dilina0914/[email protected]"
      ],
      "env": {
        "BROWSER_HEADLESS": "true",
        "LOG_LEVEL": "info",
        "MAX_CAPTURE_SIZE_MB": "10"
      }
    }
  }
}

Step 3: Configure environment variables

| Variable | Description | Required | Default | |----------|-------------|----------|---------| | BROWSER_HEADLESS | Run browser in headless mode | No | true | | IFS_USERNAME | Default IFS Cloud username for authentication | No | - | | IFS_PASSWORD | Default IFS Cloud password for authentication | No | - | | HTTP_USERNAME | HTTP Basic/NTLM authentication username | No | - | | HTTP_PASSWORD | HTTP Basic/NTLM authentication password | No | - | | DEFAULT_SERVER_URL | Default IFS Cloud server URL for browser automation | No | - | | LOG_LEVEL | Logging level (debug, info, warn, error) | No | info | | MAX_CAPTURE_SIZE_MB | Max response body size to capture in MB | No | 10 | | MAX_SESSIONS | Maximum concurrent browser sessions | No | 5 | | AUDIT_LOG_ENABLED | Enable audit logging | No | true | | AUDIT_LOG_DIR | Audit log directory | No | ./logs/audit |

Note: Setting IFS_USERNAME, IFS_PASSWORD, HTTP_USERNAME, HTTP_PASSWORD allows automatic authentication without passing credentials in every tool call. Use IFS_* variables for Keycloak/IFS Cloud auth and HTTP_* variables for HTTP Basic/NTLM auth.

Step 4: Restart VS Code

Close and reopen VS Code to load the MCP server configuration.

Option 2: Cursor IDE Integration

Cursor IDE has built-in support for MCP servers, making integration straightforward.

Step 1: Open Cursor Settings

  1. Open Cursor IDE
  2. Go to Settings (File > Preferences > Settings or Ctrl/Cmd + ,)
  3. Search for "MCP" or navigate to the MCP configuration section

Step 2: Add MCP Server Configuration

In the MCP settings, add a new server with the following configuration:

{
  "mcpServers": {
    "http-capture": {
      "command": "npx",
      "args": [
        "-y",
        "@dilina0914/[email protected]"
      ],
      "env": {
        "BROWSER_HEADLESS": "true",
        "IFS_USERNAME": "your_username",
        "IFS_PASSWORD": "your_password",
        "HTTP_USERNAME": "http_basic_user",
        "HTTP_PASSWORD": "http_basic_pass",
        "DEFAULT_SERVER_URL": "https://your-ifs-cloud-server.com",
        "LOG_LEVEL": "info",
        "MAX_CAPTURE_SIZE_MB": "10"
      }
    }
  }
}

With default credentials configured, the openUrl tool can automatically handle authentication and the loginIfsCloud tool can log in without passing credentials each time.

Example with visible browser (for debugging):

{
  "mcpServers": {
    "http-capture": {
      "command": "npx",
      "args": ["-y", "@dilina0914/[email protected]"],
      "env": {
        "BROWSER_HEADLESS": "false",
        "LOG_LEVEL": "debug"
      }
    }
  }
}

Step 3: Save and Restart

Save the configuration and restart Cursor IDE to activate the MCP server.

Option 3: Claude Desktop Integration

Add to your Claude Desktop configuration file:

Windows: %APPDATA%\Claude\claude_desktop_config.json macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "http-capture": {
      "command": "npx",
      "args": ["-y", "@dilina0914/[email protected]"],
      "env": {
        "BROWSER_HEADLESS": "true",
        "LOG_LEVEL": "info"
      }
    }
  }
}

Option 4: Local Development

Run the server directly for development or testing.

Step 1: Install the package

npm install @dilina0914/http-capture-mcp

Step 2: Install Playwright browsers

npx playwright install chromium

Step 3: Configure environment variables

Windows (PowerShell):

$env:BROWSER_HEADLESS = "true"
$env:LOG_LEVEL = "info"
$env:MAX_CAPTURE_SIZE_MB = "10"

Windows (Command Prompt):

set BROWSER_HEADLESS=true
set LOG_LEVEL=info
set MAX_CAPTURE_SIZE_MB=10

Linux/macOS:

export BROWSER_HEADLESS="true"
export LOG_LEVEL="info"
export MAX_CAPTURE_SIZE_MB="10"

Step 4: Run the server

npx @dilina0914/http-capture-mcp

Quick Troubleshooting

Browser Not Found

Error: browserType.launch: Executable doesn't exist

Solution:

  • Install Playwright browsers: npx playwright install chromium
  • Ensure you have sufficient disk space
  • On Linux, install required dependencies: npx playwright install-deps

Page Not Loading

Error: Navigation timeout or page not responding

Solution:

  • Check the URL is correct and accessible
  • Increase timeout if the page loads slowly
  • Verify network connectivity
  • Check if the site blocks automated browsers

Session Not Found

Error: Session not found: <sessionId>

Solution:

  • Ensure you're using the correct session ID from openUrl
  • Check if the session was closed or timed out
  • Use listSessions to see active sessions

Selector Not Found

Error: Element not found or Timeout waiting for selector

Solution:

  • Verify the CSS selector is correct
  • Use getPageInfo to see visible elements on the page
  • Wait for the element to appear with waitForSelector
  • Try alternative selectors (text, data attributes, etc.)

Memory Issues

Error: Out of memory or browser crashes

Solution:

  • Reduce MAX_CAPTURE_SIZE_MB to capture smaller responses
  • Close unused sessions with closeBrowser
  • Reduce MAX_SESSIONS limit
  • Restart the server periodically

Environment Variable Issues

Error: Configuration not applied

Solution:

  • Restart your IDE after setting environment variables
  • For VS Code/Cursor: Ensure variables are in the mcp.json file
  • Verify the JSON syntax in your configuration file

What's Included

MCP Tools (20 total)

Session Management

| Tool | Description | |------|-------------| | openUrl | Opens URL and starts capturing HTTP traffic. Auto-selects IFS Cloud tiles on landing pages. | | closeBrowser | Closes browser session and clears captured data | | listSessions | Lists all active capture sessions | | clearCapturedRequests | Clears captured requests for a session |

Authentication & Navigation

| Tool | Description | |------|-------------| | loginIfsCloud | Logs into IFS Cloud with Keycloak authentication and auto-selects IFS Cloud tile | | searchNavigation | Searches for pages in IFS Cloud navigation and returns results with paths | | navigateToPage | Navigates to a specific page with disambiguation support when multiple pages have same name |

Page Interaction

| Tool | Description | |------|-------------| | click | Clicks an element by CSS selector or text content | | fill | Fills an input field with text | | type | Types text with keyboard events (useful for autocomplete) | | selectOption | Selects option in a dropdown/select element | | check | Checks a checkbox or radio button | | uncheck | Unchecks a checkbox | | pressKey | Presses a keyboard key (Enter, Tab, Escape, etc.) | | waitForSelector | Waits for an element to appear on the page | | waitForModal | Waits for a modal/dialog to appear |

Form Handling

| Tool | Description | |------|-------------| | fillForm | Fills multiple form fields at once | | getFormFields | Gets all form fields in a container | | submitForm | Submits a form by clicking submit button or pressing Enter |

Data Capture

| Tool | Description | |------|-------------| | getCapturedRequests | Gets all captured HTTP requests with filters | | getPageInfo | Gets page URL, title, and visible elements | | screenshot | Takes a screenshot of the page | | evaluate | Executes JavaScript in the page context |

Captured Request Data

For each intercepted HTTP request, the following data is captured:

| Field | Description | |-------|-------------| | method | HTTP method (GET, POST, PUT, DELETE, etc.) | | url | Full request URL | | requestHeaders | Request headers (sensitive headers redacted) | | requestBody | Request payload (for POST/PUT/PATCH) | | responseStatus | HTTP status code | | responseHeaders | Response headers | | responseBody | Response body (up to MAX_CAPTURE_SIZE_MB) | | duration | Request duration in milliseconds | | timestamp | ISO timestamp of the request |

Tool Examples

Open URL and Capture Traffic

{
  "tool": "openUrl",
  "arguments": {
    "url": "https://example.com/login",
    "waitForNetworkIdle": true
  }
}

Response:

{
  "sessionId": "session-abc123",
  "pageTitle": "Login - Example",
  "pageUrl": "https://example.com/login",
  "capturedRequests": 5
}

Click Button and Capture API

{
  "tool": "click",
  "arguments": {
    "sessionId": "session-abc123",
    "selector": "#submit-button"
  }
}

Fill a Form

{
  "tool": "fillForm",
  "arguments": {
    "sessionId": "session-abc123",
    "containerSelector": "#loginForm",
    "fieldsJson": "[{\"selector\": \"#username\", \"value\": \"[email protected]\"}, {\"selector\": \"#password\", \"value\": \"secret\", \"type\": \"password\"}]"
  }
}

Select Dropdown Option

{
  "tool": "selectOption",
  "arguments": {
    "sessionId": "session-abc123",
    "selector": "#country",
    "value": "US"
  }
}

Get Captured API Requests

{
  "tool": "getCapturedRequests",
  "arguments": {
    "sessionId": "session-abc123",
    "filterUrl": "api",
    "filterMethod": "POST"
  }
}

Response:

{
  "requests": [
    {
      "method": "POST",
      "url": "https://example.com/api/login",
      "requestHeaders": { "Content-Type": "application/json" },
      "requestBody": { "username": "[email protected]", "password": "[REDACTED]" },
      "responseStatus": 200,
      "responseBody": { "token": "jwt-token-here", "user": { "id": 123 } },
      "duration": 245
    }
  ]
}

Take Screenshot

{
  "tool": "screenshot",
  "arguments": {
    "sessionId": "session-abc123",
    "path": "C:\\screenshots\\login-page.png",
    "fullPage": true
  }
}

Get Page Info

{
  "tool": "getPageInfo",
  "arguments": {
    "sessionId": "session-abc123"
  }
}

Response:

{
  "url": "https://example.com/dashboard",
  "title": "Dashboard - Example",
  "buttons": [
    { "text": "Submit", "selector": "#submit-btn" },
    { "text": "Cancel", "selector": "#cancel-btn" }
  ],
  "inputs": [
    { "name": "search", "type": "text", "selector": "#search-input" }
  ],
  "links": [
    { "text": "Home", "href": "/home" }
  ]
}

IFS Cloud Authentication Examples

Scenario 1: Open URL with Auto-Login (Environment Variables)

When IFS_USERNAME and IFS_PASSWORD are set in environment variables:

{
  "tool": "openUrl",
  "arguments": {
    "url": "https://your-ifs-server.com/main/ifsapplications/web/page/SomeModule/SomePage",
    "autoSelectIfsCloudTile": true
  }
}

What happens:

  1. Browser opens the URL
  2. If redirected to Keycloak login, credentials from env vars are used automatically
  3. After login, if landing on application selection page, IFS Cloud tile is automatically clicked
  4. You're taken directly to the intended page

Scenario 2: Explicit Login with loginIfsCloud Tool

For cases where you need explicit control over authentication:

{
  "tool": "openUrl",
  "arguments": {
    "url": "https://your-ifs-server.com/auth/realms/your-realm/protocol/openid-connect/auth"
  }
}

Then authenticate:

{
  "tool": "loginIfsCloud",
  "arguments": {
    "sessionId": "session-abc123",
    "username": "your_username",
    "password": "your_password",
    "autoSelectTile": true
  }
}

Response:

{
  "success": true,
  "message": "Logged in successfully and selected IFS Cloud tile",
  "currentUrl": "https://your-ifs-server.com/main/ifsapplications/web/",
  "capturedRequests": 25,
  "tileSelected": true
}

Scenario 3: HTTP Basic/NTLM Authentication

For servers requiring HTTP Basic or NTLM authentication before reaching Keycloak:

{
  "tool": "openUrl",
  "arguments": {
    "url": "https://your-ifs-server.com/main/ifsapplications/web/page/SomeModule/SomePage",
    "httpUsername": "http_basic_user",
    "httpPassword": "http_basic_pass",
    "autoSelectIfsCloudTile": true
  }
}

Or use environment variables HTTP_USERNAME and HTTP_PASSWORD:

{
  "tool": "openUrl",
  "arguments": {
    "url": "https://your-ifs-server.com/main/ifsapplications/web/page/SomeModule/SomePage",
    "autoSelectIfsCloudTile": true
  }
}

Scenario 4: Landing Page Without Auto-Selection

If you want to manually select the application tile:

{
  "tool": "openUrl",
  "arguments": {
    "url": "https://your-ifs-server.com/",
    "autoSelectIfsCloudTile": false
  }
}

Then manually navigate:

{
  "tool": "click",
  "arguments": {
    "sessionId": "session-abc123",
    "selector": "[title='IFS Cloud']"
  }
}

Scenario 5: Combined HTTP Auth + IFS Cloud Login

For complex authentication scenarios:

{
  "tool": "openUrl",
  "arguments": {
    "url": "https://your-ifs-server.com/",
    "httpUsername": "http_user",
    "httpPassword": "http_pass"
  }
}
{
  "tool": "loginIfsCloud",
  "arguments": {
    "sessionId": "session-abc123",
    "username": "ifs_user",
    "password": "ifs_pass",
    "autoSelectTile": true
  }
}

Credential Priority

Credentials are resolved in the following order:

  1. Tool Arguments: httpUsername/httpPassword or username/password passed directly to tools
  2. Environment Variables:
    • IFS_USERNAME / IFS_PASSWORD for IFS Cloud authentication
    • HTTP_USERNAME / HTTP_PASSWORD for HTTP Basic/NTLM
  3. Legacy Variables: DEFAULT_USERNAME / DEFAULT_PASSWORD (deprecated, use IFS_* instead)

Best Practice: Use environment variables for credentials to avoid hardcoding them in your code.

IFS Cloud Navigation Examples

Scenario 1: Search for a Page

Search for pages in the navigation and see all available results:

{
  "tool": "searchNavigation",
  "arguments": {
    "sessionId": "session-abc123",
    "searchTerm": "Inventory Part"
  }
}

Response:

{
  "success": true,
  "resultsFound": 3,
  "results": [
    {
      "pageName": "Inventory Part",
      "navigationPath": "Inventory/Inventory Part",
      "index": 0,
      "selector": ".menu-item:nth-of-type(1)"
    },
    {
      "pageName": "Inventory Part Availability",
      "navigationPath": "Inventory/Inventory Part/Availability",
      "index": 1,
      "selector": ".menu-item:nth-of-type(2)"
    },
    {
      "pageName": "Sales Part",
      "navigationPath": "Sales/Sales Part",
      "index": 2,
      "selector": ".menu-item:nth-of-type(3)"
    }
  ],
  "message": "Found 3 result(s) for \"Inventory Part\""
}

Scenario 2: Navigate to Page (Single Result)

When there's only one matching page:

{
  "tool": "navigateToPage",
  "arguments": {
    "sessionId": "session-abc123",
    "pageName": "Customer Order"
  }
}

Response:

{
  "success": true,
  "selectedPage": "Customer Order",
  "navigationPath": "Sales/Customer Order",
  "pageUrl": "https://your-ifs-server.com/main/ifsapplications/web/page/CustomerOrder/Form",
  "message": "Navigated to \"Customer Order\" (Sales/Customer Order)"
}

Scenario 3: Navigate with Disambiguation (Multiple Results)

When multiple pages have the same name, use navigation path to select the correct one:

{
  "tool": "navigateToPage",
  "arguments": {
    "sessionId": "session-abc123",
    "pageName": "Part",
    "navigationPath": "Inventory/Inventory Part"
  }
}

Response:

{
  "success": true,
  "selectedPage": "Inventory Part",
  "navigationPath": "Inventory/Inventory Part",
  "pageUrl": "https://your-ifs-server.com/main/ifsapplications/web/page/InventoryPart/Form",
  "message": "Navigated to \"Inventory Part\" (Inventory/Inventory Part). Note: 3 pages found with this name."
}

Without disambiguation path:

{
  "tool": "navigateToPage",
  "arguments": {
    "sessionId": "session-abc123",
    "pageName": "Part"
  }
}

This will:

  • Select the first result (index 0)
  • Log a warning about multiple results
  • Return information about all available results

Scenario 4: Navigate by Index

When you know the result index:

{
  "tool": "navigateToPage",
  "arguments": {
    "sessionId": "session-abc123",
    "pageName": "Part",
    "resultIndex": 2
  }
}

This selects the 3rd result (0-based index).

Scenario 5: Complete Navigation Workflow

// 1. Login to IFS Cloud
await loginIfsCloud({
  sessionId: "session-abc123"
});

// 2. Search to see what's available
const searchResults = await searchNavigation({
  sessionId: "session-abc123",
  searchTerm: "Inventory"
});

console.log(`Found ${searchResults.resultsFound} results`);
searchResults.results.forEach((r, i) => {
  console.log(`${i}: ${r.pageName} (${r.navigationPath})`);
});

// 3. Navigate to the correct page
await navigateToPage({
  sessionId: "session-abc123",
  pageName: "Inventory Part",
  navigationPath: "Inventory/Inventory Part"
});

// 4. Continue with your test actions
await click({
  sessionId: "session-abc123",
  selector: "#new-button"
});

Scenario 6: Handling Search Failures

If search field not visible, you may need to open the navigator panel first:

// 1. Open navigator panel (varies by IFS Cloud version)
await click({
  sessionId: "session-abc123",
  selector: "[title='Navigator'], .navigator-toggle, #nav-toggle"
});

// 2. Wait for panel to appear
await waitForSelector({
  sessionId: "session-abc123",
  selector: "input[placeholder*='Search']"
});

// 3. Now search
await searchNavigation({
  sessionId: "session-abc123",
  searchTerm: "Your Page"
});

Disambiguation Best Practices

1. Use Navigation Path When Possible:

{
  "navigationPath": "Inventory/Inventory Part"
}

2. If You Don't Know the Exact Path:

First search to see available options:

{
  "tool": "searchNavigation",
  "arguments": {
    "searchTerm": "Part"
  }
}

Then use the path from the results:

{
  "tool": "navigateToPage",
  "arguments": {
    "pageName": "Part",
    "navigationPath": "Inventory/Inventory Part"  // From search results
  }
}

3. Partial Path Matching:

You can use partial paths - the tool will find the best match:

{
  "navigationPath": "Inventory"  // Will match "Inventory/Inventory Part"
}
{
  "navigationPath": "Sales/Part"  // Will match "Sales/Sales Part"
}

Security Features

  • Domain Allowlist: Configurable allowed domains (via security.json)
  • Header Redaction: Automatic removal of sensitive headers (Authorization, Cookie, etc.)
  • Body Redaction: Pattern-based redaction of passwords and tokens
  • Session Isolation: Fresh browser context per session
  • Audit Logging: Complete audit trail of all operations
  • Request Size Limits: Configurable max capture size to prevent memory issues

Use Cases

  1. API Discovery: Navigate to Cloud ERP pages and capture API calls
  2. Test Recording: Record user interactions and capture API traffic for test generation
  3. Form Testing: Automate form filling and capture form submissions
  4. Integration Testing: Verify API payloads and responses
  5. Debugging: Capture HTTP traffic to debug API issues

License

MIT

Links

  • GitHub Repository: https://github.com/dilinaweerasinghe/integration-testing-mcp
  • npm Package: https://www.npmjs.com/package/@dilina0914/http-capture-mcp
  • Issues: https://github.com/dilinaweerasinghe/integration-testing-mcp/issues

Support

Open an issue on the GitHub repository for support.