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

相关推荐
燐妤3 分钟前
中老年智能健康管理项目
python·ai·pycharm·vue3·fastapi·项目开发·健康
全栈弄潮儿8 分钟前
为什么 AI 生成的代码不能直接使用?如何对 AI 代码进行检查和验证?
chatgpt·openai·ai编程
文心快码BaiduComate43 分钟前
文心快码能力扩展、记忆、代码可视化上线
人工智能·ai编程·vibecoding
VIP_CQCRE44 分钟前
用 LobeChat 接入 Ace Data Cloud:一个 Token 解锁 GPT、Claude、Gemini 等 60+ 模型
ai·大模型·openai·lobechat·acedatacloud
谢泽浩1 小时前
通过 OmwAI 中转服务快速接入Codex
ai编程
安逸sgr1 小时前
RAG 检索到了正确内容,但模型回答仍然错误,可能是什么原因?
人工智能·ai·大模型·agent·智能体
DogDaoDao1 小时前
【第10篇】Python 异常处理与调试入门
python·深度学习·ai·程序员·大模型·异常处理与调试
安逸sgr1 小时前
神经网络是怎么工作的?从神经元到多层感知机
人工智能·ai·大模型·agent·智能体
宝桥南山1 小时前
Microsoft Agent Framework(.NET) - 尝试一下从MCP Server上获取Agent Skills
ai·微软·c#·aigc·.net·.netcore
FIT2CLOUD飞致云1 小时前
学习笔记丨MaxKB原生工作流实现AI PPT生成
人工智能·ai·开源·智能体·maxkb