mcp-use开发效率提升工具推荐:必备神器
【免费下载链接】mcp-use 项目地址: https://gitcode.com/gh_mirrors/mc/mcp-use
作为开发者,你是否还在为多服务器管理复杂、工具调用繁琐、调试过程不透明而困扰?本文将介绍几款mcp-use生态中的必备开发效率工具,帮助你轻松应对这些挑战,让开发流程更顺畅、更高效。读完本文,你将了解如何利用Server Manager实现智能多服务器管理、通过Inspector进行可视化调试、以及使用Direct Tool Calls功能实现精准工具调用,全面提升你的开发效率。
Server Manager:智能多服务器管理中枢
在复杂的开发环境中,同时管理多个MCP服务器(Model Context Protocol Server,模型上下文协议服务器)并有效利用其工具集是一项挑战。Server Manager作为mcp-use生态中的核心组件,解决了这一痛点,它能动态发现、连接和管理多个MCP服务器,实现工具的按需加载和智能调度。
核心优势
Server Manager的独特之处在于它不会一次性加载所有服务器的数百个工具,而是:
- 动态加载工具:仅在需要时加载工具及其完整模式
- 智能服务器发现:自动为每个任务找到合适的服务器
- 自动更新工具集:随着连接变化实时更新可用工具
- 语义化工具搜索:跨所有服务器工具进行语义搜索
- 高效连接生命周期管理:优化服务器连接的建立与释放
架构概览
Server Manager的架构设计使其能够高效协调多个服务器:
动态工具加载流程
Server Manager的动态工具加载过程如下:
快速上手
启用Server Manager非常简单,只需在代理配置中设置use_server_manager=True:
from mcp_use import MCPClient, MCPAgent
from langchain_openai import ChatOpenAI
# 创建包含多个服务器的客户端
client = MCPClient.from_dict({
"mcpServers": {
"playwright": {
"command": "npx",
"args": ["@playwright/mcp@latest"]
},
"filesystem": {
"command": "uvx",
"args": ["mcp-server-filesystem", "/tmp"]
}
}
})
# 启用Server Manager
agent = MCPAgent(
llm=ChatOpenAI(model="gpt-4"),
client=client,
use_server_manager=True # 这是启用Server Manager的关键开关
)
管理工具详解
Server Manager提供了一系列核心管理工具,简化服务器和工具的操作:
| 工具 | 用途 | 示例 |
|---|---|---|
list_mcp_servers | 发现可用服务器及其工具 | "What servers do I have access to?" |
connect_to_mcp_server | 激活服务器并加载其工具 | "Connect to the filesystem server" |
get_active_mcp_server | 检查当前连接状态 | "Which server am I currently using?" |
disconnect_from_mcp_server | 停用服务器并移除其工具 | "Disconnect from current server" |
search_mcp_tools | 跨所有服务器工具进行语义搜索 | "Find tools for image processing" |
实际应用场景
多服务器数据 pipeline
利用Server Manager可以轻松构建跨多个服务器的数据处理流程:
result = await agent.run("""
Create a data pipeline that:
1. Scrapes product data from an e-commerce site
2. Processes and cleans the data
3. Saves it to a CSV file
4. Loads it into a SQLite database
Figure out which servers and tools you need.
""")
服务器流程:
playwright → filesystem → database
↓ ↓ ↓
scraping → save CSV → load data
内容创作工作流
Server Manager也能简化内容创作过程:
result = await agent.run("""
I want to:
1. Search for trending topics online
2. Generate an image based on the topic
3. Write a blog post about it
4. Save everything to files
What tools do I need for this?
""")
性能优势
Server Manager带来的性能提升显著:
- 无Server Manager:同时加载所有服务器的100+工具,给模型带来巨大负担
- 有Server Manager:仅加载活动服务器的5-15个相关工具,提供清晰的焦点
完整示例代码
examples/python/multi_server_example.py提供了一个完整的多服务器管理示例,展示了如何配置和使用Server Manager来协调多个服务器完成复杂任务。
Inspector:可视化调试与监控平台
MCP Inspector是一款功能强大的基于Web的调试和检查工具,专为MCP服务器设计。它提供了直观的界面,用于测试工具、浏览资源、管理提示和监控服务器连接,所有操作都可以在浏览器中完成。
核心功能
Inspector的关键功能包括:
- 多服务器管理:同时连接和管理多个MCP服务器
- 工具测试:交互式工具执行,带模式验证和实时结果显示
- 资源浏览器:探索可用资源和数据源
- 提示管理器:测试和管理带有参数模板的提示
- 聊天界面:集成LLM的交互式聊天,用于测试对话流程
- OAuth支持:内置OAuth流程处理,支持弹窗认证
- 会话持久性:连接保存到localStorage,支持自动重连
界面概览
Inspector的仪表板是管理MCP服务器连接的中心枢纽:
仪表板主要包含:
- 左侧的已连接服务器面板
- 右侧的连接面板,包含传输方式、URL、连接类型、认证和头信息设置
- 顶部栏的快速操作按钮
服务器连接流程
连接到MCP服务器只需几个简单步骤:
- 打开连接面板:点击仪表板右侧的连接面板
-
配置传输方式:根据需要选择传输类型,如"Streamable HTTP"用于SSE连接
-
输入服务器URL:例如
https://mcp.linear.app/mcp -
点击连接:建立服务器连接
OAuth认证流程
对于需要OAuth认证的服务器,Inspector提供了便捷的认证流程:
- 授权请求:点击连接后,会显示授权页面
- 授予访问权限:点击"Approve"授权访问,Inspector会自动处理重定向
服务器详情视图
点击"Inspect"按钮可打开服务器详情视图,包含工具、资源、提示和聊天四个标签页:
工具标签页
工具标签页显示MCP服务器提供的所有可用工具,每个工具都显示名称和描述:
选择工具后,右侧面板会显示工具的模式和执行按钮,方便进行测试。
聊天功能
Inspector的聊天标签页提供了与LLM集成的交互式界面,用于测试MCP服务器:
- 配置API密钥:点击"Configure API Key"打开配置模态框
- 输入凭据:选择LLM提供商、模型并输入API密钥(安全存储在浏览器中)
- 开始聊天:输入自然语言查询来测试MCP服务器
聊天界面的主要特点:
- 消息输入:用于测试MCP服务器功能的自然语言查询
- 工具调用可视化:显示正在调用的工具及其指示器
- 工具调用详情:侧边面板以JSON格式显示参数和结果
- 响应显示:基于工具结果的助手响应
- 实时反馈:查看MCP服务器处理请求的详细过程
键盘快捷键
Inspector包含强大的键盘快捷键,提升导航效率:
Cmd/Ctrl + K打开快速搜索模态框,可用于:
- 快速连接到新服务器
- 访问文档和教程
- 跳转到最近使用的服务器
- 直接搜索和执行工具
- 导航到不同标签页(工具、提示、资源、聊天)
其他快捷键:
- Esc:关闭模态框和覆盖层
Direct Tool Calls:精准工具调用方式
在开发过程中,有时你需要直接调用MCP服务器工具,而不需要LLM或代理的介入。Direct Tool Calls功能正是为此设计,它允许你直接调用工具,提供对工具执行的程序控制。
适用场景
Direct Tool Calls适用于以下情况:
- 你确切知道要调用哪个工具以及使用什么参数
- 不需要LLM来决定工具选择
- 希望将MCP工具集成到现有Python应用程序中
- 需要确定性的、程序化的工具执行控制
注意:直接工具调用不适用于需要采样/补全的工具,因为这些工具需要LLM生成响应。
基本使用示例
使用MCPClient直接调用工具非常简单:
import asyncio
from mcp_use import MCPClient
async def call_tool_example():
# 配置MCP服务器
config = {
"mcpServers": {
"everything": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-everything"],
}
}
}
# 从配置创建客户端
client = MCPClient(config)
try:
# 初始化所有配置的会话
await client.create_all_sessions()
# 获取特定服务器的会话
session = client.get_session("everything")
# 列出可用工具
tools = await session.list_tools()
tool_names = [t.name for t in tools]
print(f"Available tools: {tool_names}")
# 使用参数调用特定工具
result = await session.call_tool(
name="add",
arguments={"a": 1, "b": 2}
)
# 处理结果
if getattr(result, "isError", False):
print(f"Error: {result.content}")
else:
print(f"Tool result: {result.content}")
print(f"Text result: {result.content[0].text}")
finally:
# 清理资源
await client.close_all_sessions()
if __name__ == "__main__":
asyncio.run(call_tool_example())
工具结果处理
call_tool方法返回一个CallToolResult对象,包含以下属性:
content:包含工具输出的ContentBlock对象列表structuredContent:包含结构化结果的字典(适用于非采样工具)isError:布尔值,指示工具调用是否遇到错误
处理工具结果的示例代码:
# 调用工具
result = await session.call_tool(
name="get_weather",
arguments={"location": "San Francisco"}
)
# 检查错误
if result.isError:
print(f"Tool error: {result.content}")
else:
# 访问文本内容
text_result = result.content[0].text
print(f"Weather: {text_result}")
# 访问结构化内容(如果可用)
if hasattr(result, 'structuredContent'):
structured = result.structuredContent
print(f"Temperature: {structured.get('temperature')}")
多服务器示例
你可以同时使用多个MCP服务器并调用各自的工具:
import asyncio
from mcp_use import MCPClient
async def multi_server_example():
config = {
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem"],
"env": {"FILE_PATH": "/tmp"}
},
"time": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-time"]
}
}
}
client = MCPClient(config)
try:
await client.create_all_sessions()
# 调用文件系统服务器工具
fs_session = client.get_session("filesystem")
files = await fs_session.call_tool(
name="list_files",
arguments={"path": "/tmp"}
)
print(f"Files: {files.content[0].text}")
# 调用时间服务器工具
time_session = client.get_session("time")
current_time = await time_session.call_tool(
name="get_current_time",
arguments={}
)
print(f"Current time: {current_time.content[0].text}")
finally:
await client.close_all_sessions()
if __name__ == "__main__":
asyncio.run(multi_server_example())
工具发现
在调用工具之前,你可能需要先发现可用工具:
async def discover_tools():
client = MCPClient(config)
await client.create_all_sessions()
try:
session = client.get_session("my_server")
# 获取所有工具
tools = await session.list_tools()
for tool in tools:
print(f"Tool: {tool.name}")
print(f" Description: {tool.description}")
# 如果有输入模式则打印
if hasattr(tool, 'inputSchema'):
print(f" Parameters: {tool.inputSchema}")
print()
finally:
await client.close_all_sessions()
错误处理
进行直接工具调用时,务必处理潜在错误:
async def safe_tool_call():
try:
result = await session.call_tool(
name="some_tool",
arguments={"param": "value"}
)
if result.isError:
# 处理工具特定错误
error_msg = result.content[0].text if result.content else "Unknown error"
print(f"Tool returned error: {error_msg}")
return None
return result.content[0].text
except Exception as e:
# 处理连接或其他错误
print(f"Failed to call tool: {e}")
return None
完整示例
完整的直接工具调用示例可在仓库中找到:
examples/python/direct_tool_call.py
总结与展望
本文介绍的三款工具——Server Manager、Inspector和Direct Tool Calls,共同构成了mcp-use生态中的效率提升三件套。Server Manager解决了多服务器管理的复杂性,实现了工具的智能调度;Inspector提供了直观的可视化界面,简化了调试和测试过程;Direct Tool Calls则赋予开发者精准控制工具调用的能力,适合集成到现有工作流中。
通过结合使用这些工具,你可以显著提升开发效率,减少重复工作,专注于核心业务逻辑的实现。无论是管理复杂的多服务器环境,还是调试工具调用,或是将MCP工具集成到现有应用中,这些工具都能为你提供有力支持。
未来,mcp-use生态将继续发展,带来更多提升开发效率的工具和功能。建议保持关注项目的更新,及时了解和使用新的效率提升工具。
如果你觉得这些工具对你的开发工作有帮助,请点赞、收藏并关注项目仓库,以便获取最新动态和更多实用工具推荐。
【免费下载链接】mcp-use 项目地址: https://gitcode.com/gh_mirrors/mc/mcp-use
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考











