Model Context Protocol server management and tool integration
65
51%
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Advisory
Suggest reviewing before use
Optimize this skill with Tessl
npx tessl skill review --optimize ./src/skills/bundled/mcp/SKILL.mdManage Model Context Protocol (MCP) servers, external tools, and AI integrations.
/mcp list List configured MCP servers
/mcp status Check server connection status
/mcp add <name> <command> Add new MCP server
/mcp remove <name> Remove MCP server
/mcp restart <name> Restart server/mcp tools List available tools
/mcp tools <server> Tools from specific server
/mcp call <server> <tool> [args] Call a tool directly
/mcp resources <server> List server resources/mcp config <server> View server config
/mcp config <server> set <key> <value> Update config
/mcp logs <server> View server logsimport { createMCPClient } from 'clodds/mcp';
const mcp = createMCPClient({
// Transport
transport: 'stdio', // 'stdio' | 'sse'
// Server command
command: 'npx',
args: ['-y', '@modelcontextprotocol/server-filesystem'],
// Options
timeout: 30000,
retries: 3,
});// Connect
await mcp.connect();
// Check status
const status = mcp.getStatus();
console.log(`Connected: ${status.connected}`);
console.log(`Server: ${status.serverInfo?.name}`);
console.log(`Version: ${status.serverInfo?.version}`);
// Disconnect
await mcp.disconnect();// Get available tools
const tools = await mcp.listTools();
for (const tool of tools) {
console.log(`${tool.name}: ${tool.description}`);
console.log(` Input schema: ${JSON.stringify(tool.inputSchema)}`);
}// Call a tool
const result = await mcp.callTool({
name: 'read_file',
arguments: {
path: '/path/to/file.txt',
},
});
console.log(`Result: ${JSON.stringify(result)}`);// Get available resources
const resources = await mcp.listResources();
for (const resource of resources) {
console.log(`${resource.uri}: ${resource.name}`);
console.log(` Type: ${resource.mimeType}`);
}
// Read a resource
const content = await mcp.readResource('file:///path/to/file.txt');
console.log(content);// Get available prompts
const prompts = await mcp.listPrompts();
for (const prompt of prompts) {
console.log(`${prompt.name}: ${prompt.description}`);
}
// Get prompt content
const prompt = await mcp.getPrompt('code-review', {
code: 'function add(a, b) { return a + b; }',
});
console.log(prompt.messages);import { createMCPRegistry } from 'clodds/mcp';
const registry = createMCPRegistry({
configPath: './mcp-servers.json',
});
// Add server
registry.addServer({
name: 'filesystem',
command: 'npx',
args: ['-y', '@modelcontextprotocol/server-filesystem', '/home/user'],
env: {},
});
// List servers
const servers = registry.listServers();
// Get server
const server = registry.getServer('filesystem');
// Remove server
registry.removeServer('filesystem');
// Start all servers
await registry.startAll();
// Stop all servers
await registry.stopAll();| Server | Purpose | Install |
|---|---|---|
| filesystem | File operations | @modelcontextprotocol/server-filesystem |
| github | GitHub API | @modelcontextprotocol/server-github |
| postgres | Database queries | @modelcontextprotocol/server-postgres |
| brave-search | Web search | @modelcontextprotocol/server-brave-search |
| puppeteer | Browser automation | @modelcontextprotocol/server-puppeteer |
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/home/user"],
"env": {}
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "ghp_..."
}
}
}
}# List MCP servers
clodds mcp list
# Add MCP server
clodds mcp add filesystem "npx -y @modelcontextprotocol/server-filesystem /home"
# Test server connection
clodds mcp test filesystem
# Remove server
clodds mcp remove filesystem2a8c94e
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.