MCP - 完整API参考
管理模型上下文协议(MCP)服务器、外部工具和AI集成。
聊天命令
服务器管理
/mcp list 列出配置的MCP服务器
/mcp status 检查服务器连接状态
/mcp add <name> <command> 添加新的MCP服务器
/mcp remove <name> 移除MCP服务器
/mcp restart <name> 重启服务器
工具交互
/mcp tools 列出可用工具
/mcp tools <server> 特定服务器的工具
/mcp call <server> <tool> [args] 直接调用工具
/mcp resources <server> 列出服务器资源
配置
/mcp config <server> 查看服务器配置
/mcp config <server> set <key> <value> 更新配置
/mcp logs <server> 查看服务器日志
TypeScript API参考
创建MCP客户端
import { createMCPClient } from 'clodds/mcp';
const mcp = createMCPClient({
// 传输
transport: 'stdio', // 'stdio' | 'sse'
// 服务器命令
command: 'npx',
args: ['-y', '@modelcontextprotocol/server-filesystem'],
// 选项
timeout: 30000,
retries: 3,
});
连接到服务器
// 连接
await mcp.connect();
// 检查状态
const status = mcp.getStatus();
console.log(`已连接: ${status.connected}`);
console.log(`服务器: ${status.serverInfo?.name}`);
console.log(`版本: ${status.serverInfo?.version}`);
// 断开连接
await mcp.disconnect();
列出工具
// 获取可用工具
const tools = await mcp.listTools();
for (const tool of tools) {
console.log(`${tool.name}: ${tool.description}`);
console.log(` 输入模式: ${JSON.stringify(tool.inputSchema)}`);
}
调用工具
// 调用工具
const result = await mcp.callTool({
name: 'read_file',
arguments: {
path: '/path/to/file.txt',
},
});
console.log(`结果: ${JSON.stringify(result)}`);
列出资源
// 获取可用资源
const resources = await mcp.listResources();
for (const resource of resources) {
console.log(`${resource.uri}: ${resource.name}`);
console.log(` 类型: ${resource.mimeType}`);
}
// 读取资源
const content = await mcp.readResource('file:///path/to/file.txt');
console.log(content);
列出提示
// 获取可用提示
const prompts = await mcp.listPrompts();
for (const prompt of prompts) {
console.log(`${prompt.name}: ${prompt.description}`);
}
// 获取提示内容
const prompt = await mcp.getPrompt('code-review', {
code: 'function add(a, b) { return a + b; }',
});
console.log(prompt.messages);
MCP注册表
import { createMCPRegistry } from 'clodds/mcp';
const registry = createMCPRegistry({
configPath: './mcp-servers.json',
});
// 添加服务器
registry.addServer({
name: 'filesystem',
command: 'npx',
args: ['-y', '@modelcontextprotocol/server-filesystem', '/home/user'],
env: {},
});
// 列出服务器
const servers = registry.listServers();
// 获取服务器
const server = registry.getServer('filesystem');
// 移除服务器
registry.removeServer('filesystem');
// 启动所有服务器
await registry.startAll();
// 停止所有服务器
await registry.stopAll();
流行的MCP服务器
| 服务器 | 用途 | 安装 |
|---|---|---|
| filesystem | 文件操作 | @modelcontextprotocol/server-filesystem |
| github | GitHub API | @modelcontextprotocol/server-github |
| postgres | 数据库查询 | @modelcontextprotocol/server-postgres |
| brave-search | 网页搜索 | @modelcontextprotocol/server-brave-search |
| puppeteer | 浏览器自动化 | @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_..."
}
}
}
}
CLI命令
# 列出MCP服务器
clodds mcp list
# 添加MCP服务器
clodds mcp add filesystem "npx -y @modelcontextprotocol/server-filesystem /home"
# 测试服务器连接
clodds mcp test filesystem
# 移除服务器
clodds mcp remove filesystem
最佳实践
- 使用官方服务器 — 从经过充分测试的MCP服务器开始
- 限制文件访问 — 将文件系统服务器限制在特定目录
- 保护凭据 — 使用环境变量存储令牌,而不是命令参数
- 监控日志 — 检查服务器日志以查找错误
- 超时处理 — 为慢速操作设置适当的超时