Skip to content

Add WebMCP adapter experiment#223

Closed
Jameswlepage wants to merge 89 commits intoWordPress:developfrom
Jameswlepage:feature/webmcp-adapter
Closed

Add WebMCP adapter experiment#223
Jameswlepage wants to merge 89 commits intoWordPress:developfrom
Jameswlepage:feature/webmcp-adapter

Conversation

@Jameswlepage
Copy link
Copy Markdown
Contributor

@Jameswlepage Jameswlepage commented Feb 10, 2026

Summary

  • add a new webmcp-adapter experiment that registers layered WebMCP tools for WordPress abilities in wp-admin
  • wire the experiment into default registration and webpack build entries
  • add experiment docs and integration tests for settings, hooks, and tool-name filtering

Validation

  • vendor/bin/phpcs --standard=phpcs.xml.dist includes/Experiments/WebMCP/WebMCP.php tests/Integration/Includes/Experiments/WebMCP/WebMCPTest.php includes/Experiment_Loader.php
  • npx wp-scripts lint-js src/experiments/webmcp-adapter/index.js
  • vendor/bin/phpstan analyse --memory-limit=1G includes/Experiments/WebMCP/WebMCP.php includes/Experiment_Loader.php
  • npm run build

Notes

  • local integration PHPUnit execution is environment-dependent (wp-env/Docker not available in this run), so PHP integration tests were added/updated but not executed end-to-end here.

Jameswlepage and others added 30 commits November 27, 2025 14:18
Register settings on admin_init hook instead of calling register_settings()
directly during init. This ensures proper WordPress Settings API integration
and prevents the duplicate "Settings saved" admin notices.
Add MCP server manager and admin page for configuring Model Context Protocol
servers. Includes bootstrap integration and webpack entry point for the admin UI.
- Add support for media modal sidebar and attachment edit screens
- Convert image references to data URIs for consistent AI client handling
- Add new media.ts entry for DOM-based integration outside block editor
- Simplify frontend by removing client-side base64 detection
- Add MCP metadata to ability for external tool exposure
- Support all taxonomy columns (categories, tags, custom taxonomies)
- Add DOM observer for dynamic inline edit row mounting
- Simplify AI client call to use generate_text instead of generate_texts
- Add MCP metadata to ability for external tool exposure
- Prevent duplicate mount point rendering
- Add 8-second request timeout to avoid browser/apiFetch 20s timeout
- Add inline styles for ghost text overlay positioning
- Refactor keyboard hint component for cleaner rendering
- Add MCP metadata to ability for external tool exposure
- Update docs with timeout behavior note
Add MCP tool metadata with public visibility and category assignments
for external tool exposure via Model Context Protocol.
Add new experiment for AI-assisted comment moderation with ability
to analyze and suggest moderation actions for comments. Includes
experiment registration and React-based admin UI.
Add entry points for:
- admin/mcp-server admin page
- experiments/alt-text-generation-media for media modal integration
- experiments/comment-moderation for comment moderation UI
Refactor AI request logging as a proper experiment extending Abstract_Experiment.
Provides observability and cost tracking for AI API requests with:
- Custom database table for log storage
- Token usage and cost estimation
- Configurable retention period
- Admin UI under Settings → AI Request Logs
- REST API for log management
Refactor MCP server management as a proper experiment extending
Abstract_Experiment. Removes standalone MCP infrastructure from
includes/MCP/ and bootstrap.php in favor of the experiments pattern.
Add AI-powered reply suggestion modal to comment moderation experiment.
Allows generating contextual reply drafts for comments directly from
the moderation interface.
Add register_settings method to Type_Ahead ability for configuration
options including mode, delay, confidence threshold, and max words.
Update MCP server admin interface components and add webpack entry
for ai-request-logs admin page.
Add reusable SCSS partial for consistent DataViews table styling across
admin pages. Includes header styling, cell padding, row borders,
alternating backgrounds, hover states, and pagination layout.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
- Fix DataViews search and pagination using filterSortAndPaginate utility
- Add proper spacing between cards (exposed abilities, test connection)
- Fix card body layout to not stretch buttons full width
- Import shared DataViews styling for consistent table appearance
- Clean up ConfigGenerator spacing between form elements

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
- Import shared DataViews styling for consistent table appearance
- Update LogsTable component with improved field definitions
- Simplify styles by removing redundant DataViews overrides
- Minor cleanup to SettingsPanel, SummaryCards, and types

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
- Move AI request logging infrastructure to includes/Logging/
- Add AI_Request_Log_Manager for centralized log management
- Add Logging_HTTP_Client wrapper for provider requests
- Add Logging_Discovery_Strategy for ability registration
- Simplify AI_Request_Logging experiment to use new module
- Update bootstrap and helpers to support new architecture

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
- Fix Alt_Text_Generation minor adjustment
- Enhance Reply_Suggestion ability
- Update Type_Ahead ability configuration

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Add dataviews package for admin table components used in MCP server
and AI request logs pages.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Jameswlepage and others added 27 commits November 27, 2025 23:50
Remove max-width constraint on modal content to allow it to use the full available width for better readability of log details.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
- Add icon components for 9 new providers: Cloudflare, DeepSeek, Fal, Grok, Groq, HuggingFace, Ollama, OpenRouter, and Xai
- Update HTTP client to detect new providers from request hosts
- Update logs table to display icons for all supported providers
- Restructure MCP server toolbar layout with improved responsive design
- Overhaul writing assistant sidebar with DataViews grid layout, popover controls, and streamlined session management
- Fix type-ahead useEffect hook ordering for proper dependency handling
- Add error handling and REST visibility to Writing Suggestions PHP

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
- Add Provider_Credentials_UI and Provider_Metadata_Registry for managing provider credentials
- Add provider icons component with tooltip content
- Improve MCP server status cards and admin page
- Enhance AI request logs table with better filtering
- Update writing assistant sidebar styling
- Refactor Ollama provider integration

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Resolves merge conflicts and integrates:
- Provider credentials UI and metadata registry
- Provider icons with tooltip content
- Improved MCP server status cards
- Enhanced AI request logs with provider metadata
- Writing assistant sidebar improvements

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
- Add operation_pattern regex filter for filtering by request type (completions vs models)
- Add tokens_filter with predefined ranges (> 0, < 100, < 1K, > 5K, etc.)
- Fix tokens filtering with proper backend support for gt/lt comparisons
- Deduplicate filters in view state to prevent duplicate filter entries
- Redesign Provider/Model cell with two-row layout (icon+name, model)
- Replace black tooltip with white popover containing settings links
- Update cell text colors to match table gray (#757575)
- Add provider credentials and API key settings links to popover

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
- Add missing database indexes (provider, operation, composite indexes)
- Implement query result caching for filter options (1hr) and summary (5min)
- Optimize summary queries from 4 separate queries to 1 combined query
- Add batched cleanup with 5K row chunks to avoid table locks
- Implement size-based pruning with configurable max_rows limit (default 100K)
- Add cursor-based pagination for efficient deep page navigation
- Add /stats endpoint with table size monitoring and admin warnings
- Bump database schema version to 1.1.0

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
- Add request_preview and response_preview TEXT columns to store
  input/output content directly (previously only in JSON context)
- Add FULLTEXT index (ft_search) for fast search on MySQL 5.6+
- Search now covers: operation, error_message, request_preview,
  response_preview (was only operation and error_message)
- Automatically migrates existing data from context JSON to new columns
- Falls back to LIKE search if FULLTEXT not available
- Bump schema version to 1.2.0

This enables searching through actual AI prompts and responses,
including image generation prompts and text completions.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Remove enableGlobalSearch from operation field to prevent DataViews
from doing client-side filtering. The search is already properly
sent to the API via the view.search parameter, but enableGlobalSearch
was causing DataViews to also filter the already-fetched results
client-side, which didn't include the new searchable columns.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
- Add blueprint.json for WordPress Playground demo
- Add Playground Demo badge to README.md

Closes WordPress#79

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Update blueprint URL and plugin source to use Jameswlepage/ai fork
until merged to upstream WordPress/ai.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
The blueprint now fetches from wordpress.org/plugins which will work
once the plugin is published to WPORG. This is the intended final
configuration for the demo badge.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
- Add FLUX.2 Dev, Pro, and Flex models (fal-ai/flux-2, flux-2-pro, flux-2-flex)
- Add FLUX.1 Schnell model
- Clean up model display names (remove redundant "(Fal.ai)" suffix)
@Jameswlepage
Copy link
Copy Markdown
Contributor Author

Added everything, be back soon

@Jameswlepage Jameswlepage deleted the feature/webmcp-adapter branch February 10, 2026 20:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant