VSCode使用Claude Code(MCP服务)

文章目录


前言

什么是模型上下文协议(MCP)?

MCP(模型上下文协议)是一种用于将人工智能应用程序连接到外部系统的开源标准。

借助MCP,像Claude或ChatGPT这样的AI应用程序可以连接到数据源(如本地文件、数据库)、工具(如搜索引擎、计算器)和工作流程(如专门的提示)------从而使它们能够访问关键信息并执行任务。

将MCP视为人工智能应用的USB-C端口。正如USB-C为电子设备连接提供了标准化方式,MCP也为人工智能应用与外部系统的连接提供了标准化方式。


一、使用MCP

之前的Claude Code使用(智谱)的时候,我们安装了智谱提供的4种MCP服务,这里我们就来使用它。

1.命令行

bash 复制代码
# mcp服务列表
claude mcp list
# 获取服务详情
claude mcp get github
# 删除服务
claude mcp remove github

使用VSCode命令行执行即可,可以看到智谱的4种MCP服务都有了

2.mcp使用

mcp命令执行用插件更方便一些,看个人习惯

2.1 mcp

bash 复制代码
/mcp

这里我们使用web-reader,具体介绍请参考官方网站

2.2 Web-reader

2.2.1 View tools(介绍)


2.2.2 Reconnect(使用)

Web-reader主要作用是抓取网页,这里以https://www.baidu.com/为例

直接输入百度网址,程序会自动转换成适合工具的参数,回车即可

二、搭建MCP服务

官方案例

这里我们使用Go开发一个自己的MCP服务

1.main.go

go 复制代码
package main
import (
 "context"
 "errors"
 "fmt"
 "os"
 "github.com/mark3labs/mcp-go/mcp"
 "github.com/mark3labs/mcp-go/server"
)
func main() {
 s := server.NewMCPServer(
  "MCP Server",
  "1.0.0",
 )
 // 添加工具
 {
  calculatorTool := mcp.NewTool("calculate",
   mcp.WithDescription("执行基本的算术运算"),
   mcp.WithString("operation",
    mcp.Required(),
    mcp.Description("要执行的算术运算类型"),
    mcp.Enum("add", "subtract", "multiply", "divide"), // 保持英文
   ),
   mcp.WithNumber("x",
    mcp.Required(),
    mcp.Description("第一个数字"),
   ),
   mcp.WithNumber("y",
    mcp.Required(),
    mcp.Description("第二个数字"),
   ),
  )
  s.AddTool(calculatorTool, func(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
   args, ok := request.Params.Arguments.(map[string]interface{})
   if !ok {
    return nil, errors.New("invalid arguments type")
   }
   op, ok := args["operation"].(string)
   if !ok {
    return nil, errors.New("operation must be a string")
   }
   xFloat, ok := args["x"].(float64)
   if !ok {
    return nil, errors.New("x must be a number")
   }
   yFloat, ok := args["y"].(float64)
   if !ok {
    return nil, errors.New("y must be a number")
   }
   var result float64
   switch op {
   case "add":
    result = xFloat + yFloat
   case "subtract":
    result = xFloat - yFloat
   case "multiply":
    result = xFloat * yFloat
   case "divide":
    if yFloat == 0 {
     return nil, errors.New("不允许除以零")
    }
    result = xFloat / yFloat
   }
    fmt.Printf("计算结果: %f\n", result)
   return mcp.FormatNumberResult(result), nil
  })
 }
 // 添加资源
 {
  // 静态资源示例 - 暴露一个 README 文件
  resource := mcp.NewResource(
   "docs://readme",
   "项目说明文档",
   mcp.WithResourceDescription("项目的 README 文件"),
   mcp.WithMIMEType("text/markdown"),
  )
  // 添加资源及其处理函数
  s.AddResource(resource, func(ctx context.Context, request mcp.ReadResourceRequest) ([]mcp.ResourceContents, error) {
   content, err := os.ReadFile("README.md")
   if err != nil {
    return nil, err
   }
   return []mcp.ResourceContents{
    mcp.TextResourceContents{
     URI:      "docs://readme",
     MIMEType: "text/markdown",
     Text:     string(content),
    },
   }, nil
  })
 }
 // 添加提示词
 {
  // 简单问候提示
  s.AddPrompt(mcp.NewPrompt("greeting",
   mcp.WithPromptDescription("一个友好的问候提示"),
   mcp.WithArgument("name",
    mcp.ArgumentDescription("要问候的人的名字"),
   ),
  ), func(ctx context.Context, request mcp.GetPromptRequest) (*mcp.GetPromptResult, error) {
   name := request.Params.Arguments["name"]
   if name == "" {
    name = "朋友"
   }
   return mcp.NewGetPromptResult(
    "友好的问候",
    []mcp.PromptMessage{
     mcp.NewPromptMessage(
      mcp.RoleAssistant,
      mcp.NewTextContent(fmt.Sprintf("你好,%s!今天有什么可以帮您的吗?", name)),
     ),
    },
   ), nil
  })
 }
    // 创建基于 HTTP 的服务器实例
    fmt.Printf("Mcp server started on http://localhost:8080\n")
    httpServer := server.NewStreamableHTTPServer(s)
    // 启动服务器,监听指定端口(如 :8080)
    err := httpServer.Start(":8080")
    if err != nil {
        panic(err)
    }
}

2.添加MCP服务

bash 复制代码
claude mcp add --transport http mcp-server http://localhost:8080/mcp --header "X-API-Key: API-Key"

3.启动MCP服务

4.访问MCP服务

4.1 mcp

我们自己的MCP服务已经加载出来了

4.2 mcp-server

4.2.1 View tools(介绍)

这是一个计算器工具,一共3个参数,第一个是算术运算符,第二个是数值x,第三个是数值y

4.2.2 Reconnect(使用)

MCP流程:连接mcp-server》输入参数》思考》调用工具》计算

到这里我们的MCP服务就搭建成功了。

三、扩展

1.MCP服务核心功能

MCP通过三个构建模块提供功能:

特性 解释 示例 谁控制它
Tools 你的大型语言模型(LLM)可以主动调用的函数,并根据用户请求决定何时使用它们。这些工具可以写入数据库、调用外部应用程序编程接口(API)、修改文件或触发其他逻辑。 搜索航班--发送消息--创建日历事件 Model
Resources 被动数据源,提供对上下文信息的只读访问,如文件内容、数据库模式或API文档。 检索文档--访问知识库--查看日历 Application
Prompts 预先构建的指令模板,指示模型使用特定的工具和资源进行工作。 计划一次度假--总结我的会议内容--起草一封电子邮件 User

这几个知识点是必须要知道的

2.MCP服务

更多MCP服务请参考Github


总结

回到顶部
官方网站
官方文档
Claude Code使用MCP

其实呢,MCP是个服务端和客户端架构,我们只用到了服务端,使用Claude Code来代替客户端了,官方案例里面有很多客户端介绍,有需要的小伙伴可以自己了解下。

相关推荐
shengnan_wsn2 小时前
【一】【ai基础】【大模型和智能体初识】
ai
nimadan122 小时前
**AI仿真人剧制作工具2025推荐,解锁沉浸式内容创作新范
ai
孟健2 小时前
OpenClaw 2.6 调教实录:从崩溃 4671 次到省 50% token
aigc·openai·ai编程
jun_bai4 小时前
VSCode使用
ide·vscode·编辑器
阿沐的硅基世界4 小时前
OpenClaw记忆层详解
ai
___波子 Pro Max.5 小时前
AI与AGI的区别及未来展望
ai·agi
kali-Myon5 小时前
2025春秋杯网络安全联赛冬季赛-day2
python·安全·web安全·ai·php·pwn·ctf
猫头虎5 小时前
OpenClaw-VSCode:在 VS Code 里玩转 OpenClaw,远程管理+SSH 双剑合璧
ide·vscode·开源·ssh·github·aigc·ai编程
Olamyh6 小时前
【 超越 ReAct:手搓 Plan-and-Execute (Planner) Agent】
python·ai
阿杰学AI6 小时前
AI核心知识92——大语言模型之 Self-Attention Mechanism(简洁且通俗易懂版)
人工智能·ai·语言模型·自然语言处理·aigc·transformer·自注意力机制