创建一个MCP服务器,并在Cline中使用,增强自定义功能。
MCP介绍
MCP 是一个开放协议,它标准化了应用程序如何向LLMs提供上下文。可以将 MCP 视为 AI 应用程序的 USB-C 端口。正如 USB-C 提供了一种标准化的方法来将您的设备连接到各种外围设备和配件一样,MCP 提供了一种标准化的方法来将 AI 模型连接到不同的数据源和工具。
MCP 帮助您在 LLMs 之上构建代理和复杂的工作流程。LLMs 经常需要与数据和工具集成,MCP 提供了:
- 一个不断增长的预构建集成列表,您的 LLM 可以直接插入其中
- 在LLM供应商和厂商之间切换的灵活性
- 在您的基础设施内保护数据的最佳实践
架构图如下所示:
创建一个MCP服务器
可以把Cline当成是一个MCP客户端,现在我们只要构建了一个MCP服务就可以在Cline中使用。
我想创建一个使用duckduckgo搜索的MCP服务器,可以这样做。
# Create a new directory for our project
uv init duckduckgo_mcp
cd duckduckgo_mcp
# Create virtual environment and activate it
uv venv
.venv\Scripts\activate
# Install dependencies
uv add mcp[cli] duckduckgo_search
main.py中这样写:
# server.py
from mcp.server.fastmcp import FastMCP
from duckduckgo_search import DDGS
from typing import Annotated
from pathlib import Path
from pydantic import BaseModel, Field
# Create an MCP server
mcp = FastMCP("DuckDuckGo-Search")
@mcp.tool()
def run_duckduckgo(query:str):
"""
获取网络信息
"""
results = DDGS().text(query, max_results=10)
return results
if __name__ == "__main__":
print("Server running")
mcp.run(transport='stdio')
就是这么简单,一个使用duckduckgo获取网络信息的MCP服务器就创建好了。
在Cline中使用
打开MCP配置文件:
添加一个这样的配置即可:
"duckduckgo_search": {
"command": "uv",
"args": [
"--directory",
"D:\\Learning\\AI-related\\mcp-demo\\duckduckgo_mcp",
"run",
"main.py"
],
"disabled": false,
"autoApprove": []
}
目录需要改成自己的。
这样子就可以用了。
使用效果如下:
最后
很多开发者可能对MCP还不熟悉,MCP有客户端与服务器端,但是完全可以先把Cline当作是一个MCP客户端,刚开始自己只需要去创建或者使用一些MCP服务器端,感受一下MCP的功能,感兴趣的话再深入探索,再自己做一个MCP客户端也不迟。
就像Cline的博客中提到的那样,“忘记“模型上下文协议”——只需将这些视为 Cline 的额外工具”,先体验了大概就知道是什么东西了。
还有一个常有的困扰,就是MCP是否只能Claude才能用呢?毕竟是Anthropic主导提出来的。
不是只有Claude才能用,其它模型也能用,我上面使用的是Qwen/Qwen2.5-72B-Instruct这个模型。