模型上下文协议演示

一个演示模型上下文协议(MCP)服务器和客户端交互的Go实现,支持资源列表、描述和动作执行,并可集成DeepSeek LLM进行决策。

  • by Fov6363
  • Go
  • 本地部署
  • 更新于
在 GitHub 查看 Fov6363/MCPPractice

使用说明

MCP实践演示

此目录提供了模型上下文协议(MCP)服务器和客户端对的最小Go实现,因此您可以看到交互是如何端到端工作的。

结构

  • cmd/server:HTTP JSON-RPC服务器,它公开了一些演示资源和操作。
  • cmd/client:CLI连接到服务器,列出资源,描述一个资源,然后执行几个操作。

运行演示

cd McpPractice

# Start the MCP server
GO111MODULE=on go run ./cmd/server

In a second terminal run the client,传入一个目标指令:

cd McpPractice
GO111MODULE=on go run ./cmd/client -goal "我想知道现在几点"

客户端会先调用 listResources 收集 MCP 服务端暴露的能力,然后根据 -goal 自动规划要使用的资源和 action;如果配置了 DeepSeek,会让 LLM 决策最合适的资源,否则使用本地启发式。规划结果再驱动后续的 describeResource 与 performAction 调用,模拟真实 MCP Client 的工作流。

要将客户端指向其他端点,请使用 -endpoint=http://host:port/rpc.

可选:调用 DeepSeek LLM

客户端可以把资源详情发给 DeepSeek 模型生成中文摘要,并用 LLM 决策应该调用哪个资源/action。步骤:

export DEEPSEEK_API_KEY=sk-xxxx   # 你的 DeepSeek Key
cd McpPractice
GO111MODULE=on go run ./cmd/client -goal "帮我获取当前时间" -llm-model=deepseek-chat

如果没有设置 DEEPSEEK_API_KEY,客户端会跳过 LLM 摘要与 LLM Planner,改用内置启发式(例如 goal 包含 “时间” 时自动选择 time 资源)。