@mark1russell7/客户mcp
  ](https://nodejs.org/) 
程序系统的MCP服务器传输。将程序作为用于Claude集成的MCP工具公开。
目录
______________________________________________________________________
概述
客户端mcp 将程序系统与MCP(模型上下文协议)连接起来:
- 传输层 -连接
ProcedureServer通过stdio联系克劳德 - 动态注册 -程序更改时自动刷新工具
- 工具筛选 -控制哪些程序作为MCP工具公开
- 调试模式 -记录MCP连接故障排除
______________________________________________________________________
安装
npm install @mark1russell7/client-mcp______________________________________________________________________
建筑
系统概述
graph TB
subgraph "Claude Layer"
Claude[Claude Desktop / Code]
end
subgraph "MCP Protocol"
ListTools[ListToolsRequest]
CallTool[CallToolRequest]
end
subgraph "client-mcp"
Transport[McpServerTransport]
ToolMap[Tool Mapper]
end
subgraph "Procedure Layer"
Server[ProcedureServer]
Registry[PROCEDURE_REGISTRY]
end
subgraph "Procedures"
FS[fs.read]
Git[git.commit]
Shell[shell.run]
More[...]
end
Claude -->|stdio| ListTools
Claude -->|stdio| CallTool
ListTools --> Transport
CallTool --> Transport
Transport --> ToolMap
ToolMap --> Registry
Transport --> Server
Server --> FS
Server --> Git
Server --> Shell
Server --> More请求流
sequenceDiagram
participant Claude as Claude
participant MCP as McpServerTransport
participant Server as ProcedureServer
participant Registry as PROCEDURE_REGISTRY
participant Handler as Procedure Handler
Note over Claude,Handler: Tool Discovery
Claude->>MCP: ListToolsRequest
MCP->>Registry: getAll()
Registry-->>MCP: Procedure[]
MCP->>MCP: Convert to MCP tools
MCP-->>Claude: ListToolsResponse (tools[])
Note over Claude,Handler: Tool Execution
Claude->>MCP: CallToolRequest (fs.read)
MCP->>Server: handle({ path: ["fs", "read"], input })
Server->>Registry: get(["fs", "read"])
Registry-->>Server: Procedure
Server->>Handler: handler(input, ctx)
Handler-->>Server: Result
Server-->>MCP: Response
MCP-->>Claude: CallToolResponse交通建筑
graph LR
subgraph "McpServerTransport"
Init[Initialize]
Connect[Connect stdio]
Register[Register handlers]
end
subgraph "MCP Handlers"
ListTools[tools/list]
CallTool[tools/call]
end
subgraph "Procedure System"
Server[ProcedureServer]
Convert[proceduresToMcpTools]
end
Init --> Connect
Connect --> Register
Register --> ListTools
Register --> CallTool
ListTools --> Convert
CallTool --> Server______________________________________________________________________
快速开始
import { ProcedureServer, PROCEDURE_REGISTRY } from "@mark1russell7/client";
import { McpServerTransport } from "@mark1russell7/client-mcp";
// Load procedures (via side-effect imports)
import "@mark1russell7/bundle-dev/register.js";
// Create procedure server
const server = new ProcedureServer({
autoRegister: true,
registry: PROCEDURE_REGISTRY,
});
// Create MCP transport
const mcp = new McpServerTransport(server, {
transport: "stdio",
serverInfo: { name: "my-server", version: "1.0.0" },
});
// Add transport and start
server.addTransport(mcp);
await server.start();______________________________________________________________________
API 参考
McpServerTransport
MCP集成的主要传输类。
interface McpServerTransportOptions {
transport: "stdio" | "sse"; // Transport type
serverInfo: {
name: string; // Server name
version: string; // Server version
};
filter?: McpToolFilter; // Tool filtering options
debug?: boolean; // Enable debug logging
}
class McpServerTransport {
constructor(server: ProcedureServer, options: McpServerTransportOptions);
// Get current transport state
getState(): {
connected: boolean;
toolCount: number;
lastRefresh: Date;
};
// Close the transport
close(): Promise;
}内置程序
| 路径 | 描述 |
|---|---|
mcp.serve | 以编程方式启动MCP服务器 |
mcp.list-tools | 列出可用的带过滤功能的MCP工具 |
______________________________________________________________________
工具筛选
控制哪些程序作为MCP工具公开:
interface McpToolFilter {
includeTags?: string[]; // Only include these tags
excludeTags?: string[]; // Exclude these tags
excludeInternal?: boolean; // Exclude internal procedures
pathPrefix?: string[]; // Only include procedures with this prefix
}
const mcp = new McpServerTransport(server, {
transport: "stdio",
filter: {
includeTags: ["public"],
excludeInternal: true,
pathPrefix: ["api"],
},
});过滤示例
graph TB
subgraph "All Procedures"
FS[fs.read]
Git[git.commit]
Internal[_internal.debug]
API[api.users.list]
end
subgraph "Filter: excludeInternal"
F1[fs.read]
F2[git.commit]
F3[api.users.list]
end
subgraph "Filter: pathPrefix api"
F4[api.users.list]
end
FS --> F1
Git --> F2
API --> F3
API --> F4______________________________________________________________________
Claude桌面设置
配置文件位置
窗户: %APPDATA%\Claude\claude_desktop_config.json macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
基本配置
{
"mcpServers": {
"my-server": {
"command": "npx",
"args": ["@mark1russell7/impl-mcp-dev"]
}
}
}使用自定义捆绑包
{
"mcpServers": {
"dev-tools": {
"command": "node",
"args": ["C:/Users/me/git/impl-mcp-dev/dist/server.js"],
"env": {
"MCP_BUNDLES": "@mark1russell7/bundle-mcp",
"MCP_DEBUG": "true"
}
}
}
}______________________________________________________________________
整合
动态工具注册
当程序注册或注销时,传输会自动刷新MCP工具:
// Tools are automatically updated when procedures change
PROCEDURE_REGISTRY.register(newProcedure); // → MCP tools refresh
PROCEDURE_REGISTRY.unregister(oldPath); // → MCP tools refresh调试模式
启用调试日志以进行故障排除:
const mcp = new McpServerTransport(server, {
transport: "stdio",
debug: true, // Logs to stderr
});其他套餐
graph TB
subgraph "Implementation"
ImplMCP[impl-mcp-dev
Ready-to-run server]
end
subgraph "Transport"
ClientMCP[client-mcp
McpServerTransport]
end
subgraph "Core"
MCP[mcp
Types & utilities]
Client[client
ProcedureServer]
end
ImplMCP --> ClientMCP
ClientMCP --> MCP
ClientMCP --> Client______________________________________________________________________
需求
- Node.js >= 20
- 依赖关系:
- @mark1russell7/client - @mark1russell7/mcp - @modelcontextprotocol/sdk
______________________________________________________________________
许可证
麻省理工学院
