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

相关推荐
hxcat5 小时前
AI编程效率提升指南:everything-claude-code开源配置方案
ai编程
莫问前路漫漫6 小时前
WinMerge v2.16.41 中文绿色版深度解析:文件对比与合并的全能工具
java·开发语言·python·jdk·ai编程
JaguarJack7 小时前
Clawedbot 完整对接飞书教程 手把手搭建你的专属 AI 助手
ai·clawdbot
大厂技术总监下海8 小时前
从“使用AI服务”到“拥有AI助手”:Clawdbot,你的个人AI基础设施
人工智能·ai·开源
带刺的坐椅9 小时前
论 AI Skills 分布式发展的必然性:从单体智能到“云端大脑”的跃迁
java·ai·llm·mcp·tool-call·skills
Dreams°12310 小时前
进阶实战:Wan2.2-T2V-A5B 实现可点击跳转的互动式教育视频
算法·microsoft·ai·音视频
小糖豆巴拉巴拉11 小时前
AI应用(8)- 实战演练之SpringAI架构知识点
ai
嵌入式郑工11 小时前
如何用CLAUDECODE重塑嵌入式开发
嵌入式硬件·ai·ai编程
严同学正在努力11 小时前
DataAgent:企业级智能数据分析师,Text-to-SQL+Python 分析 + 自动出报告一站式搞定(开源项目)
python·sql·ai·开源·bigdata