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来代替客户端了,官方案例里面有很多客户端介绍,有需要的小伙伴可以自己了解下。

相关推荐
垚森1 小时前
AI时代,让曾经的遗憾变成现实
ai
AlbertZein3 小时前
Agent任务实测:谁能稳定跑完,谁只是看起来很强?
aigc·openai·ai编程
莪_幻尘3 小时前
你的 AI Skill 越多越蠢?Token 上下文爆炸的求生指南
前端·ai编程
leonshi3 小时前
使用embedchain快速建立rag知识库,本地大模型
ai·rag·ollama
轻口味3 小时前
别被模型宣传骗了,真实 Agent 任务一跑就知道
agent·ai编程
AlbertZein4 小时前
别被模型宣传骗了,真实 Agent 任务一跑就知道
aigc·openai·ai编程
Java陈序员4 小时前
一站式本地监控!一款开源的 Token 用量监控分析工具!
ai编程·claude·cursor
妙码生花4 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(十七):登录接口完善,登录页接口整合,解决跨域
前端·后端·ai编程
小碗细面5 小时前
让 AI Agent 真正读懂你的资料:我开源了 source-skill-pipeline
aigc·ai编程·claude