simonw/llm-mcp-client
GitHub: simonw/llm-mcp-client
该插件让 LLM 命令行工具能够自动发现并以原生工具调用的方式使用任意 MCP 服务器提供的工具,简化了大语言模型与外部工具服务的集成流程。
Stars: 0 | Forks: 0
# llm-mcp-client
[](https://pypi.org/project/llm-mcp-client/)
[](https://github.com/simonw/llm-mcp-client/releases)
[](https://github.com/simonw/llm-mcp-client/actions/workflows/test.yml)
[](https://github.com/simonw/llm-mcp-client/blob/main/LICENSE)
将 MCP 服务器的工具作为 LLM 工具进行访问
## 安装
将此插件安装在 [LLM](https://llm.datasette.io/) 所在的相同环境中。
```
llm install llm-mcp-client
```
## 用法
此插件注册了一个名为 `MCP` 的工具箱,它会连接到 [MCP](https://modelcontextprotocol.io/) 服务器,发现其提供的工具,并将它们作为 LLM 工具提供使用。
将 MCP 服务器的 URL 传递给该工具箱:
```
llm -T 'MCP("https://example.com/mcp")' 'Ask something that needs a tool' --td
```
`--td` 选项会在工具执行时显示其调用的详细信息。
它在 `llm chat` 中同样适用:
```
llm chat -T 'MCP("https://example.com/mcp")'
```
## 模板
你可以像这样将 MCP 保存为一个命名的 [LLM 模板](https://llm.datasette.io/en/latest/templates.html):
```
llm -T 'MCP("https://datasette.simonwillison.net/-/mcp")' --save blog
```
现在,你无需指定完整的工具定义即可进行查询,如下所示:
```
llm -t blog 'count entries and notes'
```
### 协议模式
默认情况下,客户端会自动协商协议。你也可以使用 `mode=` 参数强制指定特定模式:
```
# 强制使用现代无状态 MCP:
llm -T 'MCP("https://example.com/mcp", mode="stateless")' '...'
# 强制使用旧版 initialize 握手:
llm -T 'MCP("https://example.com/mcp", mode="legacy")' '...'
```
### 工具名称前缀
如果你正在使用来自多个服务器的工具,且它们的名称可能会发生冲突,请为每个服务器提供一个前缀:
```
llm -T 'MCP("https://one.example.com/mcp", prefix="one_")' \
-T 'MCP("https://two.example.com/mcp", prefix="two_")' '...'
```
### Python API
```
import llm
from llm_mcp_client import MCP
model = llm.get_model("gpt-4.1-mini")
result = model.chain(
"Ask something that needs a tool",
tools=[MCP("https://example.com/mcp")],
).text()
```
包含 MCP 图像或音频内容的工具结果会作为 LLM 附件返回给模型。MCP 错误结果会引发 `llm_mcp_client.MCPToolError`,LLM 会将其作为错误消息传回给模型。
## 开发
要在本地设置此插件,请首先检出代码。然后使用 `uv` 运行测试:
```
cd llm-mcp-client
uv run pytest
```
使用你正在开发中的插件运行 LLM:
```
uv run llm --help
```
标签:C2, DLL 劫持, MCP, Python, SOC Prime, 人工智能, 大语言模型, 安全规则引擎, 开发工具, 插件, 无后门, 用户模式Hook绕过, 逆向工具