change document link

This commit is contained in:
锦恢 2025-05-29 20:44:17 +08:00
parent c4c8f16a04
commit f2c9fc1f19
23 changed files with 1875 additions and 133 deletions

View File

@ -6,6 +6,8 @@ import { InlineLinkPreviewElementTransform } from '@nolebase/vitepress-plugin-in
import { ThumbnailHashImages } from '@nolebase/vitepress-plugin-thumbnail-hash/vite';
import { BiDirectionalLinks } from '@nolebase/markdown-it-bi-directional-links';
import { withMermaid } from "vitepress-plugin-mermaid";
export const customIcons = {
share: {
svg: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81 1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65 0 1.61 1.31 2.92 2.92 2.92 1.61 0 2.92-1.31 2.92-2.92s-1.31-2.92-2.92-2.92z"/></svg>'
@ -14,7 +16,7 @@ export const customIcons = {
export const baseUrl = '/openmcp';
export default defineConfig({
export default withMermaid({
title: "OpenMCP",
description: "为开发者和科研人员准备的MCP开发环境和SDK",
base: baseUrl,
@ -51,7 +53,6 @@ export default defineConfig({
md.use(lightbox);
md.use(InlineLinkPreviewElementTransform);
md.use(BiDirectionalLinks({
baseDir: baseUrl,
debug: true
}));
}
@ -72,16 +73,25 @@ export default defineConfig({
props: {
title: '简介',
description: '关于 mcp 和 openmcp阁下需要知道的 ...',
icon: 'zhuanti',
icon: 'openmcp',
link: '/plugin-tutorial/'
}
},
{
component: 'KNavItem',
props: {
title: '快速开始',
description: '通过一个例子快速了解 OpenMCP 的基本概念',
icon: 'quick-fill',
link: '/plugin-tutorial/quick-start/'
}
},
{
component: 'KNavItem',
props: {
title: 'OpenMCP 使用手册',
description: 'OpenMCP Client 的基本使用',
icon: 'shujuzhongxin',
icon: 'shiyongshouce',
link: '/plugin-tutorial/usage/connect-mcp'
}
},
@ -91,7 +101,7 @@ export default defineConfig({
title: 'MCP 服务器开发案例',
description: '使用不同语言开发的不同模式的 MCP 服务器',
icon: 'yibangonggongyusuan',
link: '/plugin-tutorial/examples/'
link: '/plugin-tutorial/examples/mcp-examples'
}
},
{
@ -155,10 +165,18 @@ export default defineConfig({
text: '简介',
items: [
{ text: 'OpenMCP 概述', link: '/plugin-tutorial/index' },
{ text: '获取 OpenMCP', link: '/plugin-tutorial/acquire-openmcp' },
{ text: '什么是 MCP', link: '/plugin-tutorial/what-is-mcp' },
{ text: 'MCP 基础概念', link: '/plugin-tutorial/concept' }
]
},
{
text: '快速开始',
items: [
{ text: '快速开始', link: '/plugin-tutorial/quick-start' },
{ text: '安装 OpenMCP', link: '/plugin-tutorial/quick-start/acquire-openmcp' },
{ text: '你的第一个 MCP', link: '/plugin-tutorial/quick-start/first-mcp' },
]
},
{
text: "OpenMCP 使用手册",
items: [
@ -173,7 +191,7 @@ export default defineConfig({
{
text: "MCP 服务器开发案例",
items: [
{ text: '大纲', link: '/plugin-tutorial/examples' },
{ text: 'MCP 服务器开发案例', link: '/plugin-tutorial/examples/mcp-examples' },
{ text: '例子 1. python 实现天气信息 mcp 服务器 (STDIO)', link: '/plugin-tutorial/examples/python-simple-stdio' },
{ text: '例子 2. go 实现 neo4j 的只读 mcp 服务器 (SSE)', link: '/plugin-tutorial/examples/go-neo4j-sse' },
{ text: '例子 3. java 实现文档数据库的只读 mcp (HTTP)', link: '/plugin-tutorial/examples/java-es-http' },

View File

@ -1,8 +1,8 @@
@font-face {
font-family: "iconfont"; /* Project id 4933953 */
src: url('iconfont.woff2?t=1748343115691') format('woff2'),
url('iconfont.woff?t=1748343115691') format('woff'),
url('iconfont.ttf?t=1748343115691') format('truetype');
src: url('iconfont.woff2?t=1748520733313') format('woff2'),
url('iconfont.woff?t=1748520733313') format('woff'),
url('iconfont.ttf?t=1748520733313') format('truetype');
}
.iconfont {
@ -13,6 +13,22 @@
-moz-osx-font-smoothing: grayscale;
}
.icon-yunfuwuqi:before {
content: "\e631";
}
.icon-shiyongshouce:before {
content: "\e600";
}
.icon-openmcp:before {
content: "\e666";
}
.icon-quick-fill:before {
content: "\e863";
}
.icon-heike:before {
content: "\e6c5";
}

Binary file not shown.

View File

@ -89,6 +89,7 @@ features:
/>
</KTab>
<br>
## 问题解答 FAQ

1474
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -16,6 +16,8 @@
"@nolebase/vitepress-plugin-inline-link-preview": "^2.17.1",
"@nolebase/vitepress-plugin-page-properties": "^2.17.1",
"@nolebase/vitepress-plugin-thumbnail-hash": "^2.17.1",
"vitepress-plugin-lightbox": "^1.0.2"
"mermaid": "^11.6.0",
"vitepress-plugin-lightbox": "^1.0.2",
"vitepress-plugin-mermaid": "^2.0.17"
}
}

View File

@ -2,15 +2,13 @@
## 前言
在[之前的文章](https://zhuanlan.zhihu.com/p/28859732955)中,我们简单介绍了 MCP 的定义和它的基本组织结构。作为开发者,我们最需要关注的其实是如何根据我们自己的业务和场景定制化地开发我们需要的 MCP 服务器,这样直接接入任何一个 MCP 客户端后,我们都可以给大模型以我们定制出的交互能力。
在 [[what-is-mcp|之前的文章]] 中,我们简单介绍了 MCP 的定义和它的基本组织结构。作为开发者,我们最需要关注的其实是如何根据我们自己的业务和场景定制化地开发我们需要的 MCP 服务器,这样直接接入任何一个 MCP 客户端后,我们都可以给大模型以我们定制出的交互能力。
在正式开始教大家如何开发自己的 MCP 服务器之前,我想,或许有必要讲清楚几个基本概念。
## MCP Server 中的基本概念
### Resources, Prompts 和 Tools
## Resources, Prompts 和 Tools
在 [MCP 客户端协议](https://modelcontextprotocol.io/clients) 中,讲到了 MCP 协议中三个非常重要的能力类别:
@ -24,7 +22,7 @@ MCP 客户端(比如 Claude Desktop5ire 等)已经实现好了上述的
不过需要说明的一点是,目前几乎所有大模型采用了 openai 协议作为我们访问大模型的接入点。什么叫 openai 协议呢?
### openai 协议
## openai 协议
当我们使用 python 或者 typescript 开发 app 时,往往会安装一个名为 openai 的库,里面填入你需要使用的模型厂商、模型的基础 url、使用的模型类别来直接访问大模型。而各个大模型提供商也必须支持这个库这套协议。
@ -116,7 +114,7 @@ print(response.choices[0].message.content)
) -> ChatCompletion:
```
### tool_calls 字段
## tool_calls 字段
在上面的 openai 协议中,有一个名为 tools 的参数。 tools 就是要求大模型厂商必须支持 function calling 这个特性,也就是我们提供一部分工具的描述(和 MCP 协议完全兼容的),在 tools 不为空的情况下chat 函数返回的值中会包含一个特殊的字段 `tool_calls`,我们可以运行下面的我写好的让大模型调用可以查询天气的代码:
@ -193,7 +191,7 @@ ChatCompletionMessage(
## 快速开始
## 开始你的第一个 mcp 服务器
接下里就要让我们大显身手了MCP 官方提供了几个封装好的 mcp sdk 来让我们快速开发一个 MCP 服务器。我看了一下,目前使用最爽,最简单的是 python 的 sdk所以我就用 python 来简单演示一下了。
@ -204,7 +202,16 @@ ChatCompletionMessage(
首先让我们打开一个项目,安装基本的库:
```bash
pip install mcp "mcp[cli]" uv
pip install uv
```
然后进入一个目录后初始化 uv 项目并安装对应的依赖:
```bash
mkdir -p ~/code/mcp-server
cd ~/code/mcp-server
uv init --no-workspace
uv add mcp "mcp[cli]"
```
创建 `server.py`
@ -277,11 +284,3 @@ Tools 端将会是我们后面调试的核心。在之前的章节我们讲过
这篇文章,我们简单了解了 MCP 内部的一些基本概念,我认为这些概念对于诸位开发一个 MCP 服务器是大有裨益的,所以我认为有必要先讲一讲。
下面的文章中,我将带领大家探索 MCP 的奇境,一个属于 AI Agent 的时代快要到来了。
## 挖坑
从上面的例子中,大家也能看出其实现在调试 MCP Server 的工具还不算齐全,所以我打算最近快速开发一款 vscode 插件,集合 Inspector 的所有功能和基础的大模型测试为一体。如果你开发了基本的网络和磁盘访问的 MCP Server这个调试工具也可以当成一个 Manus 客户端进行把玩。
请大家期待吧!

View File

@ -1,7 +1,7 @@
---
next:
text: 获取 OpenMCP
link: '/plugin-tutorial/acquire-openmcp'
text: 什么是 MCP
link: '/plugin-tutorial/what-is-mcp'
---
# OpenMCP 概述

View File

@ -0,0 +1,165 @@
# 你的第一个 MCP
实现 MCP 的编程语言很多,常见的几户所有编程语言都有官方和民间的支持,以 编程语言 + MCP 就能搜到对应的库,在 [[mcp-examples|MCP 服务器开发案例]] 中,我们也提供了不同编程语言的不同例子。
在所有编程语言中Python 的 MCP 的开发无疑是最为简单,最容易让新手上手的,所以第一个 MCP我们先用 python 来实现。其他的编程语言实现效果也大同小异。
## 安装 uv
Python 写 mcp 服务器强烈推荐使用 uv 作为包管理器,关于 uv你只需要知道它是一个高性能包管理器拥有 pip 和 conda 的所有优点。没有的朋友请先通过 pip 安装 uv
```bash
pip install uv
```
:::warning 使用 anaconda 或者 miniconda 的朋友注意了!
请不要在非 base 环境下安装 uv请在 base 环境下安装 uvuv 本身会做好环境隔离的工作,请不要担心 uv 会污染你的 base 环境。你不安装在 base 下或者使用全局默认的 pip 安装,我们根本不知道你安装的 uv 在哪里base 环境下使用 pip 安装的脚本会安装在 `~/anaconda/bin/uv` 中,也请确保 `~/anaconda/bin/` 在你的 `$PATH` 中。
:::
查看 uv 的版本:
```bash
uv version
```
我的输出是:
```
uv 0.6.9 (3d9460278 2025-03-20)
```
实操时,请保证版本不要低于我的。
## 创建一个最简单的 mcp 服务器
我们进入工程目录,准备创建一个最简单的 mcp 服务器。
```bash
mkdir -p ~/codes/my-first-mcp
cd ~/codes/my-first-mcp
uv init --no-workspace
```
此时,你的项目里面应该有这三个文件:
```
README.md main.py pyproject.toml
```
然后,我们在当前文件夹打开 vscode 或者 trae我们创建一个最简单的 mcp 服务器,它的功能是:
- 提供一个名为 add 的工具,用于对两个数字进行加法
- 提供一个名为 greeting 的资源,用于返回一个 greeting 消息
先安装 mcp 相关的库:
```bash
uv add mcp "mcp[cli]"
```
修改 `main.py` 内容如下:
```python
from mcp.server.fastmcp import FastMCP
mcp = FastMCP('锦恢的 MCP Server', version="11.45.14")
@mcp.tool(
name='add',
description='对两个数字进行实数域的加法'
)
def add(a: int, b: int) -> int:
return a + b
@mcp.resource(
uri="greeting://{name}",
name='greeting',
description='用于演示的一个资源协议'
)
def get_greeting(name: str) -> str:
return f"Hello, {name}!"
@mcp.prompt(
name='translate',
description='进行翻译的prompt'
)
def translate(message: str) -> str:
return f'请将下面的话语翻译成中文:\n\n{message}'
```
## 使用 OpenMCP 一键连接
如上,我们申明了三个函数,用作 mcp 的 toolresource 和 prompt。在 OpenMCP 中启动它们非常简单,点击右上角的 OpenMCP 图标即可连接:
![](./images/connect-simple.png)
初次使用 OpenMCP会出现引导界面还希望阁下可以耐心看完。
![](./images/guide.png)
如果登录完成后,如图显示连接成功,则代表当前已经成功启动并连接 mcp 服务器。
![](./images/connect-success.png)
恭喜您,万事开头难,您已经完成了最难的 mcp 连接!
## 附录:关于 uv 启动 mcp 你必须知道的
OpenMCP 已经帮你做好了很多事情,但是使用 uv 启动 mcp 服务器其实是不只一种方法的,了解更加底层的原理有助于您以不变应万变。因为 OpenMCP 对于 python 项目默认运行 `uv run mcp run main.py` 来启动 mcp 服务器,但是 GitHub 上的部分项目无法这么启动。
先了解一下正常的如下的代码应该如何通过命令行启动 mcp 吧!
```python
from mcp.server.fastmcp import FastMCP
mcp = FastMCP('锦恢的 MCP Server', version="11.45.14")
@mcp.tool(
name='add',
description='对两个数字进行实数域的加法'
)
def add(a: int, b: int) -> int:
return a + b
@mcp.resource(
uri="greeting://{name}",
name='greeting',
description='用于演示的一个资源协议'
)
def get_greeting(name: str) -> str:
return f"Hello, {name}!"
@mcp.prompt(
name='translate',
description='进行翻译的prompt'
)
def translate(message: str) -> str:
return f'请将下面的话语翻译成中文:\n\n{message}'
```
### 方法一:使用 mcp-cli
mcp 本身提供了脚手架,可以直接启动一段被申明的 python 代码,作为一个 mcp 服务器。使用如下代码运行它:
```bash
uv run mcp run main.py
```
### 方法二:在代码中显式启动
你也可以在代码中显式启动 mcp 服务器,在 `main.py` 的结尾添加:
```python
if __name__ == '__main__':
mcp.run()
```
然后运行如下代码即可启动 mcp 服务器:
```bash
uv run main.py
```
:::warning
请不要运行 python main.py因为 uv run 会使用当前虚拟环境的库,这些库在外部 python 看来是不可见的。也不要在没有使用 `mcp.run()` 启动代码的情况下就直接使用 mcp run main.py我们之前的代码只是申明了函数并没有实际上执行任何功能。
:::

Binary file not shown.

After

Width:  |  Height:  |  Size: 511 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 394 KiB

View File

Before

Width:  |  Height:  |  Size: 228 KiB

After

Width:  |  Height:  |  Size: 228 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 428 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 389 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 624 KiB

View File

Before

Width:  |  Height:  |  Size: 213 KiB

After

Width:  |  Height:  |  Size: 213 KiB

View File

Before

Width:  |  Height:  |  Size: 467 KiB

After

Width:  |  Height:  |  Size: 467 KiB

View File

View File

@ -6,90 +6,8 @@
MCP 客户端是指能够通过 MCP 协议进行通信的大模型对话客户端通常是一个运行在本地的应用程序因为网页没有文件IO的权限。它的产品形式目前几乎都是聊天机器人的形式类似于你在网页使用的 chat.deepseek.com 或者 chat.openai.com
:::
[[https://kirigaya.cn/openmcp/plugin-tutorial/acquire-openmcp.html]]
首先,打开你的 VLE在 [[../quick-start/acquire-openmcp|获取 OpenMCP]] 中完成 OpenMCP 的安装后,我们先用 python 创建一个最简单的 mcp 服务器,来测试 mcp 客户端的连接。
首先,打开你的 VLE在 [获取 OpenMCP](https://kirigaya.cn/openmcp/plugin-tutorial/acquire-openmcp.html) 中完成 OpenMCP 的安装后,我们先用 python 创建一个最简单的 mcp 服务器,来测试 mcp 客户端的连接。
## 安装 uv
Python 写 mcp 服务器强烈推荐使用 uv 作为包管理器,关于 uv你只需要知道它是一个高性能包管理器拥有 pip 和 conda 的所有优点。没有的朋友请先通过 pip 安装 uv
```bash
pip install uv
```
:::warning 使用 anaconda 或者 miniconda 的朋友注意了!
请不要在非 base 环境下安装 uv请在 base 环境下安装 uvuv 本身会做好环境隔离的工作,请不要担心 uv 会污染你的 base 环境。你不安装在 base 下或者使用全局默认的 pip 安装,我们根本不知道你安装的 uv 在哪里base 环境下使用 pip 安装的脚本会安装在 `~/anaconda/bin/uv` 中,也请确保 `~/anaconda/bin/` 在你的 `$PATH` 中。
:::
查看 uv 的版本:
```bash
uv version
```
我的输出是:
```
uv 0.6.9 (3d9460278 2025-03-20)
```
实操时,请保证版本不要低于我的。
## 创建一个最简单的 mcp 服务器
我们进入工程目录,准备创建一个最简单的 mcp 服务器。
```bash
mkdir -p ~/codes/python && cd ~/codes/python
uv init --no-workspace
```
此时,你的项目里面应该有这三个文件:
```
README.md main.py pyproject.toml
```
然后,我们在当前文件夹打开 vscode 或者 trae我们创建一个最简单的 mcp 服务器,它的功能是:
- 提供一个名为 add 的工具,用于对两个数字进行加法
- 提供一个名为 greeting 的资源,用于返回一个 greeting 消息
先安装 mcp 相关的库:
```bash
uv add mcp "mcp[cli]"
```
修改 `main.py` 内容如下:
```python
from mcp.server.fastmcp import FastMCP
mcp = FastMCP('锦恢的 MCP Server', version="11.45.14")
@mcp.tool(
name='add',
description='对两个数字进行实数域的加法'
)
def add(a: int, b: int) -> int:
return a + b
@mcp.resource(
uri="greeting://{name}",
name='greeting',
description='用于演示的一个资源协议'
)
def get_greeting(name: str) -> str:
return f"Hello, {name}!"
@mcp.prompt(
name='translate',
description='进行翻译的prompt'
)
def translate(message: str) -> str:
return f'请将下面的话语翻译成中文:\n\n{message}'
```
## 使用 OpenMCP 一键连接

View File

@ -0,0 +1,183 @@
# MCP 简介
![](https://picx.zhimg.com/70/v2-1a2df8a081a76f4e90431d8a2445f495_1440w.avis)
## 什么是 MCP
MCP (Model Context Protocol)是一种开放协议用于标准化应用程序如何向大型语言模型LLMs提供上下文。可以将 MCP 想象为 AI 应用的 typec 接口。正如 typec 提供了一种标准化的方式将您的设备连接到各种外设和配件MCP 也提供了一种标准化的方式,将 AI 模型连接到不同的数据源和工具。
MCP 协议由 Anthropic 在 2024 年 11 月底推出:
- 官方文档:[Introduction](https://modelcontextprotocol.io/introduction)
- GitHub 仓库:[github.com/modelcontextprotocol](https://github.com/modelcontextprotocol)
## 为什么需要 MCP
我们都知道,从最初的 chatgpt到后来的 cursorcopilot chatroom再到现在耳熟能详的 agent实际上从用户交互的角度去观察你会发现目前的大模型产品经历了如下的变化
``` mermaid
graph LR
a(chatbot\n > deepseek, chatgpt) --> b(composer\n > cursor, copilot) --> c(agent\n > AutoGPT, Manus, Open Manus)
```
- chatbot
- 只会聊天的程序。
- 工作流程:你输入问题,它给你这个问题的解决方案,但是具体执行还需要你自己去。
- 代表工作deepseekchatgpt
- composer
- 稍微会帮你干活的实习生,仅限于写代码。
- 工作流程:你输入问题,它会给你帮你生成解决问题的代码,并且自动填入代码编辑器的编译区,你只需要审核确认即可。
- 代表工作cursorcopilot
- agent
- 私人秘书。
- 工作流程:你输入问题,它生成这个问题的解决方案,并在征询了你的同意后全自动执行。
- 代表工作AutoGPTManusOpen Manus
为了实现 agent也就需要让 LLM 可以自如灵活地操作所有软件甚至物理世界的机器人于是需要定义统一的上下文协议与之上统一工作流。MCP(model context protocol) 就是解决这套方案的应运而生的基础协议。一个感性认识如下:
```mermaid
graph TB
user(用户)
ai(AI软件)
llm(大模型)
computer(本地环境)
user --帮我整理两会报告中有\n关AI的咨询到word文件--> agent
subgraph agent
ai <--MCP--> llm
computer <--MCP--> ai
end
agent --> word(D:/会议总结/两会报告AI专题.docx)
```
:::info
Anthropic 对于 MCP 的必要性给出的解释MCP 帮助您在 LLMs 之上构建 agent 和复杂的工作流程。LLMs 经常需要与数据和工具集成,而 MCP 提供了以下支持:
- 一系列不断增长的预构建集成,您的 LLM 可以直接接入这些集成。
- 在 LLM 提供商和供应商之间灵活切换。
- 在基础设施内保护数据的最佳实践。
:::
## 总体架构
MCP 的核心采用客户端-服务器架构,其中 host 可以连接到多个服务器:
```mermaid
graph LR
host[Host MCP 客户端\n 浏览器, 代码编辑器, 其他工具]
server_a[MCP 服务器 A]
server_b[MCP 服务器 B]
server_c[MCP 服务器 C]
db_a[(本地\n数据源 A)]
db_b[(本地\n数据源 B)]
remote[(远程服务 C)]
subgraph 你的电脑
direction LR
host <--MCP 协议--> server_a
host <--MCP 协议--> server_b
host <--MCP 协议--> server_c
server_a <--> db_a
server_b <--> db_b
end
subgraph 互联网
server_c <--Web APIs--> remote
end
```
- MCP 主机MCP Hosts MCP 主机是指希望通过 MCP 访问数据的程序,例如 Claude Desktop、集成开发环境IDEs或其他 AI 工具。
- MCP 客户端MCP ClientsMCP 客户端是与服务器保持 1:1 连接的协议客户端,负责与 MCP 服务器通信。
- MCP 服务器MCP ServersMCP 服务器是轻量级程序,每个服务器通过标准化的 Model Context Protocol 暴露特定的功能。
- 本地数据源Local Data Sources本地数据源是指 MCP 服务器可以安全访问的计算机文件、数据库和服务。
- 远程服务Remote Services远程服务是指 MCP 服务器可以通过互联网连接的外部系统(例如通过 API 访问的服务)。
## MCP 的工作流程
从工作流程上MCP 和 LSP 非常非常像,事实上,目前的 MCP 和 LSP 一样,也是基于 [JSON-RPC 2.0](https://link.zhihu.com/?target=https%3A//www.jsonrpc.org/specification) 进行数据传输的基于Stdio 或者 基于SSE。如果开发过 LSP 的朋友对于 MCP 应该会感到非常的理所当然。我将用若干个简单明了的泳道图尽可能让大家看懂这玩意儿是如何执行的。
### 初始化
假设我们的软件已经支持了 MCP 客户端,那么当我们的软件启动时,它会经历如下的步骤:
```mermaid
graph TB
subgraph MCP 客户端
A1[初始化]
A2[获取 MCP 服务端提供的工具集合 \n1. 创建文件 -> createFile\n2. 删除文件 -> deleteFile\n3. 使用搜索引擎 -> useBrowser\n 4. ...]
end
subgraph MCP 服务端
B1[初始化]
end
A1 --startMCPServer--> B1
B1 --ListToolsRequestSchema--> A2
```
### 工作流程
假设,你是一位 C语言工程师你现在想要让 agent 自动完成一个项目的编译,那么执行流程如下:
```mermaid
graph TB
subgraph MCP 客户端
A1[用户询问 请帮我删除 build\n下的所有编译的中间结果] --> A2[将用户询问, 资源, MCP服务端的工具集合发送给大模型]
A3[大模型返回操作流\n1. deleteFile build/a.o\n2. deleteFile build/b.o]
A4[整理操作结果给大模型]
A5[最终响应展示给用户]
end
subgraph MCP 服务端
B1[解析大模型操作流] --征询用户同意--> B2[执行操作流]
end
subgraph 大模型
C1[大模型基于上下文生成操作方案]
C2[大模型基于所有信息生\n成自然语言响应]
end
A3 --> B1
B2 --> A4
A2 --> C1
C1 --> A3
A4 --> C2
C2 --> A5
```
## 开源生态
和 LSP 一样LSP 在开源社区有非常多的客户端和服务端框架MCP 也是一样的,目前 Anthropic 开源了一套 MCP 的服务端框架https://github.com/modelcontextprotocol/servers想要探索大模型效用的朋友可以尽情去使用这个框架。
除此之外pulsemcp 上也有很多开源社区开发的 MCP 客户端和服务端https://www.pulsemcp.com/clients

View File

@ -31,9 +31,9 @@ for parent, _, files in os.walk('./scripts/tmp'):
if file.endswith('.css'):
content = open(filepath, 'r', encoding='utf-8').read().replace('font-size: 16px;', '')
open(filepath, 'w', encoding='utf-8').write(content)
shutil.move(filepath, os.path.join('./.vitepress/theme', file))
shutil.move(filepath, os.path.join('./.vitepress/theme/css', file))
elif file.endswith('.woff2'):
shutil.move(filepath, os.path.join('./.vitepress/theme', file))
shutil.move(filepath, os.path.join('./.vitepress/theme/css', file))
# 删除压缩包和解压区域
os.remove('./scripts/tmp.zip')