编程笔记

lifelong learning & practice makes perfect

模型上下文协议(MCP)入门(5):动手写个mcp server

使用mcp官方的python-sdk写个mcp server,在cline中使用

代码

源码已开源,详见mcp-sever

目前提供2个工具,封装jina.ai的api实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@mcp.tool(name="fetch", description="使用 r.jina.ai 读取 URL 并获取其内容")
def fetch(url: str = Field(description="需要抓取的网页url")) -> str:
headers = {}
if JINA_API_KEY:
headers["Authorization"] = f"Bearer {JINA_API_KEY}"

try:
response = requests.get(
f"https://r.jina.ai/{url}",
headers=headers,
)
response.raise_for_status() # Raise HTTPError for bad responses (4xx or 5xx)
return response.text
except requests.exceptions.RequestException as e:
return f"Error fetching HTML: {e}"

安装

使用uv安装,配置时有个需要注意的点,即配置代码运行目录,否则需要配置环境变量 VIRTUAL_ENV

优先使用下面这种配置方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
"mcpServers": {
"yiGmMk/mcp-server": {
"command": "uv",
"args": [
"--directory",
"/path/to/your/mcp-server",
"run",
"main.py"
],
"env": {
"JINA_API_KEY": "jina_api_key,请从https://jina.ai/reader获取",
"PYTHONIOENCODING": "utf-8"
},
"disabled": false,
"autoApprove": []
}
}
}

在cline中使用gemini-2.0-flash参考README文档就能完成安装mcp-server

效果

mcp-server,cline

欢迎关注我的其它发布渠道