Skip to content

Commit f5c3b89

Browse files
Add optional Streamable HTTP conformance checks
Ship a standalone HTTP fixture with core so users and CI can opt into HTTP checks by starting it before client loading. Observe the configured URL and header values through the native MCP tool while leaving other checks usable without the server. Record unsuccessful collection attempts separately from returned observations. The reporter independently checks fixture health when recording an HTTP error: a healthy fixture makes native tool unavailability fail, while unavailable health and unattempted checks remain not verified. Retain only the latest outcome for each component.
1 parent 45a0329 commit f5c3b89

22 files changed

Lines changed: 20018 additions & 69 deletions

‎.gitattributes‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
* text=auto eol=lf
22
plugins/*/dist/probe.mjs linguist-generated=true
3+
plugins/*/dist/serve-http.mjs linguist-generated=true
34
plugins/*/THIRD_PARTY_NOTICES.md linguist-generated=true
45
plugins/*/LICENSE.md linguist-generated=true
56
plugins/*/LICENSES/*.txt linguist-generated=true

‎README.md‎

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,19 @@ Plugins for collecting evidence about client support for [Agent Plugins](https:/
44

55
## Run the checks
66

7-
Install these plugins through the client's Agent Plugins support:
7+
Node.js 22 or newer must be available as `node` on the client's executable search path, and the agent must be able to execute commands. The packaged plugins require no build or dependency installation. Each directory below is an installable plugin; the repository root is the development project.
8+
9+
To include the optional Streamable HTTP checks, follow the [Core fixture's HTTP setup](plugins/agent-plugins-conformance-core/#optional-http-setup) **before the client loads the plugins**. This starts a bundled local server in a separate terminal; CI can launch the same command. Without the server, HTTP checks remain `not_verified` and the agent continues collecting the other checks.
10+
11+
Install and load these plugins through the client's Agent Plugins support:
812

913
| Plugin directory | Purpose |
1014
| --- | --- |
1115
| [`plugins/agent-plugins-conformance`](plugins/agent-plugins-conformance/) | The `run-conformance` skill and JSON reporting tools |
12-
| [`plugins/agent-plugins-conformance-core`](plugins/agent-plugins-conformance-core/) | Fixtures for skill discovery and stdio MCP behavior |
16+
| [`plugins/agent-plugins-conformance-core`](plugins/agent-plugins-conformance-core/) | Fixtures for skill discovery, stdio MCP behavior, and optional Streamable HTTP checks |
1317
| [`plugins/agent-plugins-conformance-recovery`](plugins/agent-plugins-conformance-recovery/) | Fixtures for valid skill and MCP availability alongside invalid configuration |
1418
| [`plugins/agent-plugins-conformance-invalid-mcp`](plugins/agent-plugins-conformance-invalid-mcp/) | A valid skill alongside a malformed MCP document |
1519

16-
Node.js 22 or newer must be available as `node` on the client's executable search path, and the agent must be able to execute commands. The packaged plugins require no build or dependency installation. Each directory above is an installable plugin; the repository root is the development project.
17-
1820
Then ask the agent:
1921

2022
> Run the run-conformance skill from Agent Plugins Conformance and save the JSON report to /tmp/agent-plugins-conformance/report.json.

‎plugins/agent-plugins-conformance-core/README.md‎

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,23 @@
11
# Agent Plugins Conformance — Core
22

3-
A fixture plugin for testing skill discovery and stdio MCP behavior through a client's native [Agent Plugins](https://agent-plugins.org/) support.
3+
A fixture plugin for collecting evidence about a client's native [Agent Plugins](https://agent-plugins.org/) support.
44

55
Install this fixture alongside [Agent Plugins Conformance](../agent-plugins-conformance/), whose `run-conformance` skill collects observations and saves the results. See that plugin's [run instructions](../agent-plugins-conformance/#run-through-a-client) and [report documentation](../agent-plugins-conformance/#read-the-results).
66

77
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.
88

9+
## Optional HTTP setup
10+
11+
To include the Streamable HTTP checks, start the bundled server in a separate terminal **before the client loads the plugin**:
12+
13+
```sh
14+
node '/absolute/path/to/agent-plugins-conformance-core/dist/serve-http.mjs'
15+
```
16+
17+
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`. 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.
18+
19+
The collection skill uses the HTTP tool when the client exposes it and records a collection error when a completed discovery or call attempt is unsuccessful. It does not start the server or ask you to start it. The reporter checks the local fixture's health when an HTTP collection error is recorded: confirmed health makes the availability check fail, while unavailable or inconclusive health leaves HTTP checks `not_verified`. Collection continues for the other fixture skills and MCP tools.
20+
921
## Coverage
1022

1123
| Case IDs | What the check establishes |
@@ -22,5 +34,6 @@ Node.js 22 or newer must be available as `node` on the client's executable searc
2234
| `mcp.stdio.env.configured-value` | The configured value reaches the subprocess. The fixture does not arrange a conflicting inherited value, so it does not establish override behavior. |
2335
| `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. |
2436
| `mcp.stdio.env.expansion` | Repeated recognized placeholders expand in environment values and unknown placeholder-like text stays literal. |
25-
26-
This plugin exercises valid stdio configurations; invalid configuration handling, failure isolation, and remote MCP transports are outside its coverage.
37+
| `mcp.streamable-http.tool-availability` | The client exposes the HTTP tool and it returns a valid observation. A recorded discovery or call error fails this check only when the reporter can confirm that the local fixture is healthy. |
38+
| `mcp.streamable-http.url.literal-route-and-query` | The tool request reaches `/conformance/mcp` with the single decoded query pair `value=$APC_HTTP_VALUE`, preserving the placeholder-like text literally. |
39+
| `mcp.streamable-http.headers.literal-value` | The tool request includes `x-apc-fixture` with the literal value `${PLUGIN_ROOT}\|${PLUGIN_DATA}\|fixture value with spaces`. |

‎plugins/agent-plugins-conformance-core/THIRD_PARTY_NOTICES.md‎

Lines changed: 80 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)