A TypeScript test client for Model Context Protocol (MCP) servers that provides a convenient way to test MCP functionality in your test suites.
Take a look, play and have fun with this.
Stars are welcome 😊
npm install --save-dev @codelytv/mcp-client
import { McpClient } from '@codelytv/mcp-client';
const mcpClient = new McpClient("stdio", [
"npx",
"ts-node",
"./src/app/mcp/server.ts",
]);
await mcpClient.connect();
// List available tools
const tools = await mcpClient.listTools();
console.log('Available tools:', tools.names());
// Call a tool
const response = await mcpClient.callTool('search-course-by-id', { id: 'course-123' });
// List resources
const resources = await mcpClient.listResources();
console.log('Available resources:', resources.uris());
// Read a resource
const resource = await mcpClient.readResource('courses://all');
await mcpClient.disconnect();
const mcpClient = new McpClient("http", ["http://localhost:3000/mcp"]);
The main client class for interacting with MCP servers.
new McpClient(transport: "stdio" | "http", args: string[])
connect()
- Connect to the MCP serverdisconnect()
- Disconnect from the MCP serverlistTools()
- List available toolscallTool(name: string, args?: Record<string, unknown>)
- Call a toollistResources()
- List available resourcesreadResource(uri: string)
- Read a resourcelistResourceTemplates()
- List resource templatescompleteResourceTemplateParam(uri: string, paramName: string, textToComplete: string)
- Complete resource template parameterslistPrompts()
- List available promptsgetPrompt(name: string, args?: Record<string, unknown>)
- Get a prompt
Publishing this package we are committing ourselves to the following code quality standards:
- 🤝 Respect Semantic Versioning: No breaking changes in patch or minor versions
- 🤏 No surprises in transitive dependencies: Use the bare minimum dependencies needed to meet the purpose
- 🎯 One specific purpose to meet without having to carry a bunch of unnecessary other utilities
- ✅ Tests as documentation and usage examples
- 📖 Well documented ReadMe showing how to install and use
- ⚖️ License favoring Open Source and collaboration
See LICENSE