Skip to content

Latest commit

 

History

History

Folders and files

README.md

Agent Plugins Conformance — Core

A fixture plugin for collecting evidence about a client's native Agent Plugins support.

Install this fixture alongside Agent Plugins Conformance, whose run-conformance skill collects observations and saves the results. See that plugin's run instructions and report documentation.

Node.js 22 or newer must be available as node on the client's executable search path. The committed MCP bundle includes the official MCP SDK and requires no dependency installation or build.

The command-token check includes POSIX and Windows servers. Only the server for the current platform is expected to run; the other may produce a startup error.

Optional HTTP setup

To include checks for MCP servers using Streamable HTTP or legacy HTTP+SSE, start the bundled server in a separate terminal before the client loads the plugin:

node '/absolute/path/to/agent-plugins-conformance-core/dist/serve-http.mjs'

Replace the path with a downloaded or installed copy of this plugin; the command needs no build or dependency installation. Wait for the ready message before loading the plugin. The server listens on 127.0.0.1:43187 and 127.0.0.1:43189. Leave it running during collection, then press Ctrl-C to stop it. CI can launch the same command before starting the client and terminate the process afterward.

Coverage

Case IDs What the check establishes Specification
skills.discovery.immediate-children The agent reports the expected markers for both valid immediate-child skills loaded through the client and that the nested conformance-nested reference was not advertised as a separate skill. Discovery depends on that account. §6.1, §7.1
mcp.stdio.tool-availability.cwd-omitted, mcp.stdio.tool-availability.cwd-plugin-relative, mcp.stdio.tool-availability.cwd-plugin-root, mcp.stdio.tool-availability.cwd-plugin-data Each server returned a valid observation. §6.1, §7.2.1
mcp.stdio.cwd.omitted Omitted cwd uses the package root. §7.2.1
mcp.stdio.cwd.plugin-relative, mcp.stdio.cwd.plugin-root Relative and root-placeholder cwd resolve to probe-workdir. §7.2.1
mcp.stdio.cwd.plugin-data Data-placeholder cwd matches the data path resolved by the probe. §7.2.1
mcp.stdio.env.plugin-root Supplied PLUGIN_ROOT matches the independently determined package root. §9.1
mcp.stdio.env.plugin-data-absolute Supplied PLUGIN_DATA is an absolute path. This check does not exercise writability, storage dedication, or persistence across updates. §9.1
filesystem.data.writable The default server can create, write, and close a small temporary file directly in the supplied PLUGIN_DATA directory. §9.1
filesystem.data.consistent-within-plugin Servers using omitted and data-rooted working directories resolve PLUGIN_DATA to the same filesystem path. §9.1
mcp.stdio.env.configured-value The configured value reaches the subprocess. §9.1
mcp.stdio.env.configured-precedence Configured environment values replace conflicting base-environment values. §9.1
mcp.stdio.args.preservation-and-expansion Argument boundaries, including spaces and an empty argument, are preserved; recognized placeholders expand and unknown placeholder-like text stays literal. §7.2.1, §9.2
mcp.stdio.command.single-token A command path containing a space is preserved as a single executable token. §7.2.1
mcp.stdio.command.plugin-relative-resolution Plugin-relative commands resolve against the plugin root, independently of the configured working directory. §7.2.1
mcp.stdio.env.expansion Repeated recognized placeholders expand in environment values and unknown placeholder-like text stays literal. §9.2
mcp.streamable-http.tool-availability The client exposes the HTTP tool and it returns a valid observation despite a conflicting, mixed-case configured Accept header. A completed discovery or call attempt with no observation fails this check only when the reporter confirms that the local fixture is healthy. §6.1, §7.2.1
mcp.streamable-http.url.literal-route-and-query The configured URL path and query are preserved literally. §7.2.1
mcp.streamable-http.headers.literal-value Configured header values preserve placeholder-like text and spaces literally. §7.2.1
mcp.streamable-http.headers.cross-origin-redirect Configured headers are not forwarded to another origin without authorization. §7.2.1
mcp.sse.tool-availability The client exposes the legacy HTTP+SSE tool and it returns a valid observation. §6.1, §7.2.1
mcp.sse.url.literal-route-and-query The configured URL path and query are preserved literally. §7.2.1
mcp.sse.headers.literal-value The initial connection preserves the configured header value literally. §7.2.1
mcp.sse.headers.literal-post-value Message requests to the configured origin preserve the configured header value literally. §7.2.1
mcp.sse.headers.generated-precedence A client-generated Accept header takes precedence over a conflicting configured value. §7.2.1
mcp.sse.headers.cross-origin-redirect Configured headers are not forwarded to another origin through an HTTP redirect without authorization. §7.2.1
mcp.sse.headers.cross-origin-endpoint Configured headers are not forwarded to another origin through an SSE endpoint event without authorization. §7.2.1

Legacy HTTP+SSE support is optional. Missing or inconclusive SSE evidence remains not_verified, even when the helper is running. An explicit native refusal to follow a cross-origin redirect or endpoint event can establish header protection.