Activity Log for MCP
AI agents are starting to talk to WordPress sites directly. Claude Desktop, ChatGPT custom GPTs, and a growing list of MCP clients can connect to your site, browse content, place orders, edit posts, or call any custom tool you expose. The Model Context Protocol (MCP) is the open standard that makes this possible. The problem: by default, you can’t see any of it. Requests come in, things change, and there’s no record of what an agent actually did, when it did it, or which user it acted as. Activity Log for MCP records every MCP request the moment it hits your site. You see the route, the ability that was called, the user it acted as, the request body, the response, and whether it succeeded. Everything is browsable in a clean React admin page that feels like the rest of WordPress. If you’re running an AI integration, debugging a custom MCP server, or just want a paper trail before letting agents touch your data — this is the visibility layer. What you get A real-time log of every MCP request, with filters for date range, ability name, and user. Click any row to inspect the full request and response, copy bodies to your clipboard, or trace a single agent session end-to-end. Sortable columns, configurable per-page counts (10 to 500), and full-text search across request and response bodies. Export to CSV when you need to share findings or feed them into another tool. The whole interface is built with @wordpress/components so it inherits the WordPress design language — no jarring custom UI to learn. Built for both halves of the audience If you’re a site owner: install, activate, and click into Tools → MCP Logs. There’s no setup screen and no configuration — the plugin starts logging the moment an MCP client makes a request. If you’re a developer: there’s a full REST API for every admin feature, authenticated via WordPress Application Passwords or WooCommerce API keys. The plugin is also itself MCP-aware — it registers an MCP server with seven abilities, so an AI agent can introspect its own activity log programmatically. Source ships under src/ and builds with npm run build. Why you’d want this Debug a custom MCP integration without tailing server logs Audit AI agent activity on production sites before something goes wrong Review per-tool error rates to spot which abilities are flaky Trace a single agent session end-to-end when something breaks Export logs for compliance reviews or external analysis Let an AI agent monitor its own activity through the MCP server REST API Every admin feature is exposed under /wp-json/activity-log-for-mcp/v1/: GET /requests — list with filters, sort, and pagination GET /stats — totals, success rate, and calls per ability GET /sessions/{id} — every request in a session, in order GET /search — full-text across routes, abilities, and bodies GET /errors — recent failed executions and HTTP errors GET /tool-performance — per-ability call count, error rate, and unique users GET /filters — distinct ability names and users for dropdowns GET /export-csv — server-side streamed CSV download DELETE /requests — clear all logs DELETE /retention — delete logs older than a given date MCP abilities The plugin registers itself as an MCP server (activity-log-for-mcp-server) with seven abilities agents can call directly: get-activity — paginated log retrieval with filters get-stats — summary metrics with optional date range get-activity-by-session — full session trace, with optional body exclusion for lighter payloads search-activity — full-text search across stored requests and responses analyze-errors — recent errors with full details get-tool-performance — per-ability performance metrics clear-old-logs — date-based retention cleanup Privacy and data handling All data stays in your WordPress database — nothing is sent anywhere. Logs live in a custom table named {prefix}alfmcp_requests. You control retention and can clear everything from the admin UI or via REST. There’s no telemetry, no third-party calls, no external dependencies at runtime. Disclaimer Activity Log for MCP is not affiliated with, endorsed by, or sponsored any AI provider or the Model Context Protocol project. “MCP” and “Model Context Protocol” are referenced solely to describe the open protocol that this plugin observes. Privacy Policy Activity Log for MCP records REST API requests that contain the Mcp-Session-Id header. Logged data includes request routes, methods, headers, bodies, response data, user IDs, and timestamps. All data is stored in your WordPress database and is never transmitted to external services.
Top keywords
- mcp16×2.22%
- request8×1.11%
- wordpress7×0.97%
- activity6×0.83%
- agent6×0.83%
- ai6×0.83%
- custom6×0.83%
- data6×0.83%
- log6×0.83%
- logs6×0.83%
- requests6×0.83%
- abilities5×0.69%
AJ Agent Crawl Optimizer
AJ Agent Crawl Optimizer is a thin compatibility layer that teaches your site to speak the languages AI agents already use to discover and consume web content. It publishes machine-readable manifests at well-known URLs, serves clean Markdown when an AI requests it, and declares your AI-usage preferences — all without changing anything for human visitors. Each capability is a separate toggle under Settings → AJ Agent Crawl Optimizer and ships opt-in (everything starts off). On first activation, a one-time Quick Setup wizard suggests sensible defaults based on your environment (for example, it skips JSON-LD when an SEO plugin is detected so you don’t get duplicate structured data). Discovery — help agents find what your site offers API Catalog (RFC 9727) — /.well-known/api-catalog linkset advertising your REST API, plus a Link: rel="api-catalog" header on every response so agents discover it from any URL. MCP Server Card (SEP-1649 draft) — /.well-known/mcp/server-card.json describing the site to MCP-aware agents. Agent Skills Index (RFC v0.2.0) — /.well-known/agent-skills/index.json listing six skills (search, posts, pages, media, categories, tags) plus per-skill SKILL.md artifacts with verifiable sha256 digests. llms.txt (per llmstxt.org) — /llms.txt curated, LLM-readable index of your top pages and recent posts, with a Discovery section auto-linking every other plugin endpoint. IndexNow — non-blocking ping to Bing and Yandex on every post publish so search engines re-crawl within minutes. Presentation — format content for agents Markdown Negotiation — when a request includes Accept: text/markdown, the page is served as clean Markdown with X-Markdown-Tokens for context budgeting. Browsers (which send text/html) are completely unaffected. JSON-LD Schema — Schema.org structured data: WebSite, Organization, Article, BreadcrumbList, and auto-detected FAQPage. Logo resolved from your theme’s custom logo or site icon. OpenAPI 3.0.3 — /?format=openapi returns a complete spec generated dynamically from rest_get_server(), including plugin-registered REST routes. WebMCP Tools — registers four tools (search, posts, pages, site info) via navigator.modelContext.provideContext() for browsers that support the W3C WebMCP draft. Declarations Content-Signals — appends a Content-Signal: ai-train=no, search=yes, ai-input=no directive to robots.txt declaring your AI-usage preferences (per contentsignals.org). Composes with Yoast/Rank Math/AIOSEO — their additions are preserved, our line lands at the very end. Why use it No conflicts with your SEO plugin. JSON-LD auto-suppresses when Yoast SEO, Rank Math, All in One SEO, SEOPress, The SEO Framework, Slim SEO, Squirrly SEO, Schema Pro, or SASWP is active. Multisite-aware. Every endpoint also resolves at /{subsite}/... paths automatically. Cached. OpenAPI is cached for a day, llms.txt for an hour, with proper invalidation on plugin activation, theme switch, post changes, and setting toggles. Performance-conscious. Markdown handler runs at PHP_INT_MAX priority so it doesn’t break object-cache flushes or Query Monitor. IndexNow pings are non-blocking. Extensible. Nine filter hooks let you customize skills, schemas, capabilities, and content. See “For Developers” below. Accessible. Score-card SVG has dynamic aria-label, copy buttons announce success via aria-live, decorative arrows hidden from screen readers via CSS pseudo-elements. For developers The plugin exposes nine filter hooks for extension. Examples: add_filter( 'ajaco_required_capability', function () { return 'edit_posts'; } ); Delegate plugin access to a non-admin role. add_filter( 'ajaco_skill_definitions', function ( $skills ) { return $skills + [ 'products' => [ 'type' => 'information-retrieval', 'description' => 'WooCommerce products', 'endpoint' => rest_url( 'wc/v3/products' ) ] ]; } ); Register custom skills that ship in the Agent Skills Index and are served as SKILL.md artifacts with verifiable sha256 digests. add_filter( 'ajaco_content_signal', function () { return 'ai-train=yes, search=yes, ai-input=yes'; } ); Customize the Content-Signal directive (e.g. permit AI training). Other hooks: ajaco_api_catalog_linkset, ajaco_mcp_server_card, ajaco_json_ld_graph, ajaco_openapi_spec, ajaco_llms_txt_content, ajaco_active_seo_plugin. The settings page’s Help tab → For Developers lists all of them with descriptions. External services This plugin connects to one external service, and only when the corresponding feature is explicitly enabled by the site administrator. IndexNow (api.indexnow.org) What it is and what it’s used for: IndexNow is an open protocol (originally from Microsoft Bing and Yandex) that lets sites notify search engines the moment a URL is published or updated, so search engines can re-crawl within minutes instead of days. When data is sent: only when the IndexNow feature toggle is turned on AND an IndexNow API Key is configured on the settings page. In that case, every time a post of a public post type transitions to the publish status, the plugin fires a single non-blocking HTTPS POST to https://api.indexnow.org/indexnow. What data is sent: the request body is a JSON document containing exactly three fields — your site’s host (e.g. example.com), your IndexNow API key (which you generated yourself at Bing Webmaster Tools), and the permalink URL of the post that was just published. No visitor information, IP addresses, user-agents, or post content is sent. If the IndexNow feature toggle is off (the default), the plugin makes no outbound network requests of any kind. This service is provided by Microsoft (Bing) and the IndexNow project. Their terms and privacy policies apply: IndexNow protocol documentation: https://www.indexnow.org/documentation IndexNow FAQ and terms: https://www.indexnow.org/faq Microsoft Bing Webmaster Guidelines : https://www.bing.com/webmasters/help/webmaster-guidelines-30fba23a Microsoft Privacy Statement: https://www.microsoft.com/en-us/privacy/privacystatement Privacy AJ Agent Crawl Optimizer stores data only on your own server — there is no telemetry, no analytics, and no third-party logging. Specifically: Local data Plugin option rows in the WordPress options table store toggle states and the IndexNow API Key (stored as plain text — keep your database secure). Transients cache the OpenAPI document and llms.txt body. These are deleted on plugin uninstall. No request data, IP addresses, User-Agents, or visitor information is recorded by the plugin. Outbound network calls The plugin makes exactly one outbound HTTP request, and only when explicitly enabled: IndexNow — when the IndexNow toggle is on and a key is configured, the plugin sends a non-blocking POST to https://api.indexnow.org/indexnow on every post publish. The payload contains the site host, the IndexNow key, and the URL of the published post (no visitor data). If the IndexNow toggle is off (the default), the plugin makes zero outbound network requests. All other features (manifests, JSON-LD, robots.txt) only respond to incoming HTTP requests; they never call out. Cookies The plugin does not set any cookies. Uninstall When the plugin is deleted (not just deactivated), all plugin options, the IndexNow key, and all transients are removed from the database. Multisite networks have every site cleaned in turn.