Discover what an MCP server offers
You inspect the negotiated catalog for tools, prompts, resources, templates, and capabilities. Your app uses server-owned identifiers instead of guessing them.
Unit example (nearest native match)
See the idea in context
AxMCPClient mcp = new AxMCPClient(new AxMCPStreamableHTTPTransport(endpoint), Map.of("namespace", "inventory"));
AxGen program = new AxGen(Ax.s("request:string -> answer:string"), Map.of("mcp", mcp));
OpenAICompatibleClient llm = new OpenAICompatibleClient(Map.of(
"api_key", key, "model", "gpt-5.4-mini"));
try {
AxMCPClient.CatalogSnapshot catalog = mcp.inspectCatalog();
System.out.println(Json.stringify(Map.of(
"tools", catalog.tools().stream().map(tool -> tool.get("name")).toList(),
"resources", catalog.resources(),
"resourceTemplates", catalog.resourceTemplates())));
System.out.println(Json.stringify(program.forward(
llm, Map.of("request", "Reindex inventory."))));
} finally {
mcp.close();
}Run itIn your own project
// Gradle (build.gradle):
implementation 'dev.axllm:ax:22.0.4'
// Maven (pom.xml):
<dependency>
<groupId>dev.axllm</groupId>
<artifactId>ax</artifactId>
<version>22.0.4</version>
</dependency>
import dev.axllm.ax.Ax;
var llm = Ax.ai("openai", Map.of("apiKey", System.getenv("OPENAI_API_KEY")));
var classify = Ax.ax("review:string -> sentiment:class \"positive, negative, neutral\"");Set OPENAI_APIKEY in your environment before running provider-backed code.
From a clone of the ax repo:
npm run example -- java src/examples/java/mcp/NativeMCPToolsExample.javaActive practice
Answer 2 in a row to learn this · attempt 1