详细教程展示如何用 MCP 搭建工具服务器,为 AI 应用暴露和集成外部工具的完整代码流程。
我至今仍记得那种挫败感:我们团队基于 LangGraph 和 MCP 构建的客服机器人,无法在多次用户交互之间保留上下文。它仿佛患上了“对话失忆症”,导致用户不得不一遍又一遍地重复自己说过的话。后来我们发现,问题源于缺少一个中心化的工具服务器,这使得机器人无法以可扩展的方式访问和利用外部工具。这段经历让我们意识到,构建一个健壮的 MCP server,将工具暴露给 AI 应用有多么重要。
本文将逐步介绍如何搭建 MCP server,重点讲解怎样向任何兼容 MCP 的 AI app 暴露一个工具。我们以一个简单的文本情感分析工具为例。我们希望客服机器人能够访问这个工具,从而判断用户的情绪,并作出相应的回应。
构建 MCP server 的第一步,是定义工具及其接口。MCP 提供了一组用于定义工具的 API 和协议,其中包括 Tool class 和 MCPTool interface。我们将使用它们创建情感分析工具。下面是一个用 Python 定义该工具的简化示例:
from MCP import Tool, MCPTool
class SentimentAnalysisTool(Tool, MCPTool):
def __init__(self):
super().__init__()
self.name = "SentimentAnalysis"
self.description = "Analyzes the sentiment of the input text"
def execute(self, input_text):
# Simplified sentiment analysis logic for demonstration
if "love" in input_text or "great" in input_text:
return "Positive"
elif "hate" in input_text or "bad" in input_text:
return "Negative"
else:
return "Neutral"
# Create an instance of our tool
sentiment_tool = SentimentAnalysisTool()
接下来,我们需要搭建一个 MCP server 来托管这个工具。MCP server 可以配置为通过多种接口暴露工具,其中包括 REST 和 gRPC。为了简单起见,我们使用一个基础的 REST server。这里将使用轻量级 Python Web framework Flask 来创建服务器。可以这样进行设置:
from flask import Flask, request, jsonify
from MCP import ToolServer
app = Flask(__name__)
# Create an MCP tool server
tool_server = ToolServer()
# Register our sentiment analysis tool with the server
tool_server.register_tool(sentiment_tool)
# Define a route for tool execution
@app.route('/tools/<tool_name>/execute', methods=['POST'])
def execute_tool(tool_name):
tool = tool_server.get_tool(tool_name)
if tool:
input_text = request.json['input_text']
result = tool.execute(input_text)
return jsonify({'result': result})
else:
return jsonify({'error': 'Tool not found'}), 404
if __name__ == '__main__':
app.run(debug=True)
MCP server 启动并运行后,我们的客服机器人,或者任何其他兼容 MCP 的 AI app,就可以访问情感分析工具了。只需向 /tools/SentimentAnalysis/execute endpoint 发送 POST request,并在 request body 中提供需要分析的文本。
构建 MCP server 时有一个很容易踩的坑:必须确保工具注册和服务器配置正确同步。如果工具是在服务器启动之后才注册的,那么在服务器重启之前,这些工具可能都无法访问。为避免这个问题,可以考虑实现一种动态工具注册机制,实时更新服务器的工具列表。
随着 agentic AI 探索之旅的继续,明天我们将研究 LangGraph 与 MCP 集成方面更高级的主题,进一步增强 AI 应用的能力。
如果需要采取进一步措施,你可以考虑屏蔽此人和/或举报滥用行为。