@4ourlab/mcp-client-claude
v1.0.0
Published
MCP (Model Context Protocol) implementation for Claude models
Maintainers
Readme
@4ourlab/mcp-client-claude
A MCP (Model Context Protocol) implementation for Claude models that allows connecting and using multiple MCP servers through Anthropic's Claude API.
This implementation is based on the official Model Context Protocol documentation.
Features
- 🔗 Connect to multiple MCP servers
- 🤖 Integration with Anthropic Claude API
- 📝 Support for custom system prompts
- 🔧 Complete TypeScript interface
- 🛠️ Included usage examples
Supported Models
This client has been tested with the following Claude models:
claude-3-5-sonnet-20241022claude-sonnet-4-20250514
Installation
npm install @4ourlab/mcp-client-claudeBasic Usage
import { MCPClient } from '@4ourlab/mcp-client-claude';
const mcpClient = new MCPClient(
"your-anthropic-api-key",
"claude-3-5-sonnet-20241022", // or any other supported model
"./path/to/mcpServer.json",
"Optional system prompt"
);
try {
await mcpClient.connectToServers();
const response = await mcpClient.processQuery("Your query here");
console.log(response);
} finally {
await mcpClient.cleanup();
}MCP Server Configuration
Create an mcpServer.json file with your server configuration:
{
"mcpServers": {
"weather": {
"command": "node",
"args": ["/path/to/mcpserver-weather/build/index.js"]
},
"mssql": {
"command": "dotnet",
"args": ["run", "--project", "/path/to/mcpserver-mssql.csproj"]
}
}
}Examples
Example 1: Interactive Chat
import { MCPClient } from '@4ourlab/mcp-client-claude';
async function main() {
const mcpClient = new MCPClient(
"your-api-key",
"claude-3-5-sonnet-20241022",
"./examples/mcpServer.json",
""
);
try {
await mcpClient.connectToServers();
await mcpClient.chatLoop();
} finally {
await mcpClient.cleanup();
process.exit(0);
}
}
main().catch(console.error);Example 2: Query Processing with JSON Response
import { MCPClient } from '@4ourlab/mcp-client-claude';
async function main() {
const systemPrompt = `
You are an intelligent assistant with access to tools. Use your knowledge and available tools to solve problems proactively.
For final responses, use JSON format:
{
"header": {
"success": true|false,
"usedTools": true|false,
"message": "error description when success=false"
},
"result": {
"your response content here"
}
}`;
const mcpClient = new MCPClient(
"your-api-key",
"claude-3-5-sonnet-20241022",
"./examples/mcpServer.json",
systemPrompt
);
try {
await mcpClient.connectToServers();
const response = await mcpClient.processQuery("What's the weather in Sacramento?");
console.log("\nResponse:\n" + cleanResponse(response));
} catch (error) {
console.error("Error in main:", error);
} finally {
await mcpClient.cleanup();
process.exit(0);
}
}
function cleanResponse(response) {
const content = response;
const json = content.match(/```json\n([\s\S]*?)\n```/)?.[1] || content.match(/\{[\s\S]*\}/)?.[0];
return json || response;
}
main().catch(console.error);API
MCPClient
Constructor
new MCPClient(apiKey: string, model: string, serverConfigPath: string, systemPrompt?: string)Methods
connectToServers(): Connect to all configured MCP serversprocessQuery(query: string): Process a query using available serverschatLoop(): Start an interactive chat loopcleanup(): Clean up connections and resources
Dependencies
@anthropic-ai/sdk: Official Anthropic Claude API client@modelcontextprotocol/sdk: Official MCP SDK
Development
Building the project
npm run buildDevelopment mode
npm run devLicense
MIT
