Cline + GitHub MCP 学习记录

简介

本文旨在引导读者快速入门 GitHub MCP (Model Context Protocol) 服务,并结合 Cline 插件进行实践操作。通过本文,你将了解到如何配置 Cline 以连接 GitHub MCP 服务器,创建仓库,推送和拉取文件,以及创建和提交到新的分支。本文以图文并茂的方式,详细记录了整个操作过程,帮助你轻松上手 GitHub MCP 服务。

配置MCP

安装Cline插件。

在settings中配置API Provider、API KEY、Model、Custom Instructions,点击Done保存。

测试能否对话。

成功收到模型的响应。

点击MCP Servers。

可以看到很多可选择的MCP服务。

我们选择GitHub的MCP服务进行安装。

点击安装后,进入聊天窗口,ai会引导MCP的安装。

运行命令,在当前的工作区创建了github-mcp-server目录。

接着,ai会读取MCP的配置文件cline_mcp_settings.json

ai读取后,请求修改cline_mcp_settings.json 文件的内容。添加了 GitHub MCP 服务器的配置。使用 write_to_file 工具来更新文件,使用 README 中的 NPX 示例,并将 disabled 设置为 falseautoApprove 设置为 []

更新后,ai向我们请求GitHub的token。

我们在GitHub上创建一个token

给token命名。

赋予所有仓库的权限。

选择细微权限的配置,我们允许Administration(仓库创建、删除、设置、团队和协作者)、Codespaces(创建、编辑、删除和列出 Codespaces)、Contents(仓库内容、提交、分支、下载、发行版和合并)的读写权限。

点击生成token。

复制token到cline对话。

添加token到配置文件cline_mcp_settings.json

cline_mcp_settings.json 更新后添加了 GitHub 个人访问令牌。ai请求通过使用 search_repositories 工具来演示服务器的功能,搜索查询词为 "modelcontextprotocol" 的仓库。

工具报错了,提示连接失败,因为配置文件里的路径写错了。

将cline_mcp_settings.json文件手动修改为图中样式。

可以看到GitHub这里滑块已经显示绿色,表明它的MCP服务安装成功。

创建仓库

请求ai创建一个名为MCP-Test的公共仓库。

这里调用了MCP服务的create_repository工具来创建仓库。

至此已成功设置了 GitHub MCP 服务器,并在我的 16Miku 账户下创建了一个名为 MCP-Test 的公共仓库。

可以在https://github.com/16Miku/MCP-Test查看到该仓库已成功创建。

可以在这里查看该MCP服务有哪些功能。

推送文件

我们创建一个MCP-Test本地空间。

用Trae打开该文件夹,请求ai在当前文件夹创建一个精美的网页文件,用于介绍MCP协议。

点击保存。

这里open index.html 是一个 macOS 系统上用于在默认浏览器中打开 HTML 文件的便捷命令。 由于我的系统是windows11,不能执行该命令。

更改默认的终端设置Terminal: Select Default Profile

修改默认终端为Windows PowerShell。

命令ai使用powershell打开index.html。

可以看到ai编写的MCP介绍简易网页。

让ai将当前项目提交到MCP-Test仓库。

这里显示推送文件到 GitHub 仓库时报错,提示仓库为空。虽然创建仓库时设置了自动初始化,但可能没有成功创建 main 分支。所以要确认分支名称是 main,然后再次尝试推送。

工具执行再次失败,并出现相同的错误。即 create_repository 工具中的 autoInit 参数并没有创建默认分支。ai将尝试使用 create_branch 工具显式地创建一个分支,然后再推送文件。

工具执行再次失败,并出现相同的错误。显示 create_branch 工具也要求仓库有一些初始内容。

ai将尝试使用 create_or_update_file 工具直接在仓库中创建一个文件。这应该会初始化仓库并创建一个默认分支。

MCP服务调用了create_or_update_file工具来创建README.md文件。

可以看到响应信息。

可以看到提交信息。

perl 复制代码
{
  "content": {
    "name": "README.md",
    "path": "README.md",
    "sha": "6df9e3391c2545417f91eb0eb835bfe93e027ef3",
    "size": 52,
    "url": "https://api.github.com/repos/16Miku/MCP-Test/contents/README.md?ref=main",
    "html_url": "https://github.com/16Miku/MCP-Test/blob/main/README.md",
    "git_url": "https://api.github.com/repos/16Miku/MCP-Test/git/blobs/6df9e3391c2545417f91eb0eb835bfe93e027ef3",
    "download_url": "https://raw.githubusercontent.com/16Miku/MCP-Test/main/README.md",
    "type": "file",
    "_links": {
      "self": "https://api.github.com/repos/16Miku/MCP-Test/contents/README.md?ref=main",
      "git": "https://api.github.com/repos/16Miku/MCP-Test/git/blobs/6df9e3391c2545417f91eb0eb835bfe93e027ef3",
      "html": "https://github.com/16Miku/MCP-Test/blob/main/README.md"
    }
  },
  "commit": {
    "sha": "7e51328cb860bc173935dac54bb88b02cf7201f0",
    "node_id": "C_kwDOOZ_f8doAKDdlNTEzMjhjYjg2MGJjMTczOTM1ZGFjNTRiYjg4YjAyY2Y3MjAxZjA",
    "url": "https://api.github.com/repos/16Miku/MCP-Test/git/commits/7e51328cb860bc173935dac54bb88b02cf7201f0",
    "html_url": "https://github.com/16Miku/MCP-Test/commit/7e51328cb860bc173935dac54bb88b02cf7201f0",
    "author": {
      "name": "16Miku",
      "email": "[email protected]",
      "date": "2025-04-15T17:29:27Z"
    },
    "committer": {
      "name": "16Miku",
      "email": "[email protected]",
      "date": "2025-04-15T17:29:27Z"
    },
    "message": "Create README.md",
    "tree": {
      "sha": "54535f544b314b0ff453cedf70c1ec2249f82535",
      "url": "https://api.github.com/repos/16Miku/MCP-Test/git/trees/54535f544b314b0ff453cedf70c1ec2249f82535"
    },
    "parents": []
  }
}

这里显示在 MCP-Test 仓库中成功创建了 README.md 文件。表明已经初始化了仓库并创建了一个默认分支。ai将再次尝试推送 index.html 文件。

这里ai调用了MCP服务的push_files工具。

收到响应信息。

这里显示已成功推送index.html文件到MCP-Test仓库。

在GitHub上可以看到出现了README.md和index.html文件。

拉取文件

请求ai将在远程仓库创建的README.md同步拉取到本地。

ai调用了MCP服务的get_file_contents工具,请求拉取README.md文件。

从远程仓库加载了README.md文件,并准备写在本地。

保存后,成功拉取了README.md文件到本地。

提交到分支

请求ai创建一个branch_test.html文件,并在远程仓库创建新的分支branch1,提交当前项目所有文件到该分支。

创建了branch_test.html 文件。接下来将使用MCP服务的create_branch工具,在远程仓库中创建名为 branch1 的新分支。

收到响应信息。

创建了branch1分支后,调用MCP服务的push_files工具推送所有文件到该分支。

收到响应信息。

这里显示已创建分支branch1,并推送当前所有文件到该分支。

可以看到github仓库中成功创建了branch1并提交了所有文件。

总结

通过本文的详细步骤,我们成功地完成了以下操作:

  1. 配置 Cline 插件并连接 GitHub MCP 服务器: 详细介绍了如何在 Cline 中配置 API Provider、API Key、Model 和 Custom Instructions,并成功连接 GitHub MCP 服务器。解决了连接失败的问题,确保了 Cline 与 GitHub MCP 服务器的正常通信。
  2. 创建 GitHub 仓库: 使用 MCP 服务的 create_repository 工具成功创建了一个名为 MCP-Test 的公共仓库,为后续的文件操作奠定了基础。
  3. 推送文件到 GitHub 仓库: 解决了仓库为空导致推送失败的问题,通过 create_or_update_file 工具创建了 README.md 文件,初始化了仓库并创建了默认分支,最终成功将 index.html 文件推送到了 MCP-Test 仓库。
  4. 从 GitHub 仓库拉取文件: 使用 MCP 服务的 get_file_contents 工具成功将远程仓库中的 README.md 文件拉取到本地,实现了远程仓库与本地文件的同步。
  5. 创建并提交到新的分支: 使用 MCP 服务的 create_branch 工具成功创建了名为 branch1 的新分支,并将当前项目的所有文件推送到了该分支,实现了多分支管理。

总而言之,本文完整地演示了如何使用 Cline 插件和 GitHub MCP 服务进行代码仓库的管理,包括配置、创建、推送、拉取和分支管理等操作。希望本文能帮助你更好地理解和使用 GitHub MCP 服务,提高开发效率。

相关推荐
小白跃升坊35 分钟前
Chat to MySQL 最佳实践:MCP Server 服务调用
ai·大语言模型·it运维·mcp
陈明勇2 小时前
MCP 协议更新详解:从 HTTP+SSE 到 Streamable HTTP
人工智能·ai编程·mcp
shelgi6 小时前
Eino实践---从入门到MCP尝鲜
mcp
sophister6 小时前
MCP server 开发半入门——"hello world"
人工智能·cursor·mcp
cv也要开心6 小时前
超越界限:AI技术融合 - Agent、RAG、Function Call与MCP
ai编程·mcp
Hank_Liu6 小时前
AI assistant本地部署Continue.dev + Ollama + MCP Server
mcp
奇舞精选6 小时前
Cursor MCP 推荐
前端·mcp
ShowMeAI7 小时前
聊一聊Tool、MCP和Agent来龙去脉 | 大白话技术科普系列
llm·mcp
GetcharZp7 小时前
3步搞定AI与数据库直连!Cline+MCP打造你的MongoDB智能查询助手
mcp·cline