使用说明
主控程序
4D实现 模型上下文协议(MCP) 客户端库。
MCP是一种标准化协议,使应用程序能够通过基于JSON-RPC的结构化接口与AI模型和专用后端服务进行通信。
特性
- 连接到MCP服务器(本地和远程)
- 从MCP兼容服务调用工具和访问资源
- 在Claude Desktop和VSCode中配置的自动发现服务器
- 多种传输机制:StdIO和HTTP/SSE
- 同步(和异步)操作模式
依赖项
该组件需要:
用法
基础示例
// Create a transport for a local MCP server
var $transport:=cs.MCP.TransportStdIO.new("/opt/homebrew/bin/npx"; "-y"; "@modelcontextprotocol/server-github")
// Create client
var $client:=cs.MCP.Client.new($transport)
// Initialize connection
var $init : cs.MCP.InitializeResult:=$client.initialize()
If ($init.success)
// List available tools
var $tools : cs.MCP.ListToolsResult:=$client.listTools()
// Call a tool
var $result : cs.MCP.ToolCallResult:=$client.callTool("search_repositories"; {query: "4d language"})
// Get text result
var $text : Text:=$result.text()
End if
// Cleanup
$transport.close()
使用服务器注册表
注册表会自动从Claude Desktop和VSCode配置中发现MCP服务器:
// Load all discovered servers
cs.MCP.ServerRegistry.me.reload()
// List available servers
var $servers : Collection:=cs.MCP.ServerRegistry.me.listServers()
// Get a client for a specific server
var $client : cs.MCP.Client:=cs.MCP.ServerRegistry.me.getClient("github")
// Use the client...
var $tools : cs.MCP.ListToolsResult:=$client.listTools()
// Close when done
cs.MCP.ServerRegistry.me.closeClient("github")
手动服务器配置
// Create a stdio server config
var $config:=cs.MCP.ServerConfig.new("my-server"; "stdio")
$config.command:="/usr/local/bin/my-mcp-server"
$config.args:=["--option"; "value"]
$config.env:={API_KEY: "secret"}
// Create client from config
var $client:=$config.createClient()
HTTP传输
// Create HTTP transport for remote server
var $transport:=cs.MCP.TransportHttp.new("https://mcp.example.com/xxx")
// Create client
var $client:=cs.MCP.Client.new($transport)
// Initialize and use...
$client.initialize()
异步模式
进行中
// Define callback
var $callback:=Formula(handleResult($1))
// Call asynchronously
$client.listTools($callback)
api参考
客户
与MCP服务器交互的主要类。
| 方法 | 说明 |
|---|---|
initialize() |
协商协议版本和功能 |
listTools() |
获取可用工具 |
callTool(name; arguments) |
执行工具 |
listResources() |
获取可用资源 |
readResource(uri) |
阅读资源 |
listPrompts() |
获取可用提示 |
getPrompt(name; arguments) |
获得提示 |
ping() |
检查服务器连接 |
close() |
关闭连接 |
运输
| 类别 | 描述 |
|---|---|
TransportStdIO |
通过stdin/stdout进行本地进程通信 |
TransportHttp |
通过HTTP/SSE进行远程服务器通信 |
配置
| 类别 | 描述 |
|---|---|
ConfigLoader |
从Claude/VSCode加载服务器配置 |
ServerConfig |
表示服务器配置 |
ServerRegistry |
已发现服务器的注册表 |
配置文件
库从以下位置发现MCP服务器:
- 克劳德桌面版:
~/Library/Application Support/Claude/claude_desktop_config.json - VSCode用户:
~/Library/Application Support/Code/User/settings.json - VSCode工作区:
.vscode/settings.json - VSCode MCP:
.vscode/mcp.json
示例 .vscode/mcp.json:
{
"servers": {
"github": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "your-token"
}
}
}
}
许可证
麻省理工学院
