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

相关推荐
云和数据.ChenGuang20 小时前
魔搭社区 测试AI案例故障
人工智能·深度学习·机器学习·ai·mindstudio
测试_AI_一辰20 小时前
AI系统到底怎么测?一套六层测试框架(Agent案例)
人工智能·功能测试·需求分析·ai编程
踩着两条虫20 小时前
VTJ.PRO 核心架构全公开!从设计稿到代码,揭秘AI智能体如何“听懂人话”
前端·vue.js·ai编程
GJGCY1 天前
中小企业财务AI工具技术评测:四大类别架构差异与选型维度
大数据·人工智能·ai·架构·财务·智能体
曦和1 天前
OpenClaw+CC Switch:小白也能配置好的小龙虾(2026最新)
aigc·ai编程
菜鸟分享录1 天前
OpenClaw 公网访问难题?一招解决 “control ui requires device identity“ 报错
ai·openclaw·小龙虾
ljq1 天前
LLM大模型会话ID身份跟踪标识原理解构:从模型无状态下的会话ID(Session ID)原理分析以及自主实现会话跟踪
agent·ai编程
demo007x1 天前
如何提高 AI 做小程序的效率?
微信小程序·ai编程·claude
赵康1 天前
老板与员工:5分钟理解 Subagent 架构
ai·claude code·subagent·openclaw
JavaGuide1 天前
MiniMax M2.7 发布!Redis 故障排查 + 跨语言重构场景实测,表现如何?
redis·后端·ai·ai编程