厦门关键词seo排名网站,房产部门成立网站,网站规划与建设进度,家居网站建设策划开发什么是MCP#xff1f;
MCP#xff08;Model Context Protocol#xff09;是一个开放的协议标准#xff0c;用于连接AI助手#xff08;如Claude、GPT等#xff09;与外部工具和数据源。它定义了一套标准化的通信方式#xff0c;让AI助手能够安全、可靠地调用外部服务。 …什么是MCPMCPModel Context Protocol是一个开放的协议标准用于连接AI助手如Claude、GPT等与外部工具和数据源。它定义了一套标准化的通信方式让AI助手能够安全、可靠地调用外部服务。MCP的核心概念1. 客户端-服务器架构客户端AI助手如Claude Desktop、VS Code插件等服务器提供工具和资源的外部服务通信方式通过标准输入输出进行JSON-RPC 2.0协议通信2. 传输协议使用JSON-RPC 2.0作为通信协议通过stdin/stdout进行数据传输每行一个JSON对象以换行符分隔MCP基本语法规范1. 初始化请求initialize{jsonrpc:2.0,id:1,method:initialize,params:{protocolVersion:2024-11-05,capabilities:{tools:{}},clientInfo:{name:Claude Desktop,version:1.0.0}}}2. 工具列表请求tools/list{jsonrpc:2.0,id:2,method:tools/list}3. 工具调用请求tools/call{jsonrpc:2.0,id:3,method:tools/call,params:{name:calculate,arguments:{expression:23*4}}}4. 响应格式{jsonrpc:2.0,id:3,result:{content:[{type:text,text:计算结果14}]}}MCP服务器实现要点1. 必需的方法initialize服务器初始化tools/list返回可用工具列表tools/call执行具体的工具调用2. 工具定义结构{name:工具名称,description:工具描述,inputSchema:{type:object,properties:{参数名:{type:参数类型,description:参数描述}},required:[必需参数列表]}}3. 错误处理{jsonrpc:2.0,id:请求ID,error:{code:错误代码,message:错误描述}}MCP服务器例子#!/usr/bin/env python3 #-*-coding:utf-8-*- 简单的MCP服务器示例 提供基本的计算工具importjsonimportsysfromtypingimportDict,Any,List,OptionalclassSimpleMCPServer:简单的MCP服务器实现def__init__(self):self.tools{calculate:{name:calculate,description:执行简单的数学计算,inputSchema:{type:object,properties:{expression:{type:string,description:要计算的数学表达式如 23*4}},required:[expression]}},}defhandle_request(self,request:Dict[str,Any])-Dict[str,Any]:处理MCP请求methodrequest.get(method)ifmethodinitialize:returnself._handle_initialize(request)elif methodtools/list:returnself._handle_tools_list(request)elif methodtools/call:returnself._handle_tools_call(request)else:return{jsonrpc:2.0,id:self._get_request_id(request),error:{code:-32601,message:f未知方法: {method}}}def_handle_initialize(self,request:Dict[str,Any])-Dict[str,Any]:处理初始化请求return{jsonrpc:2.0,id:self._get_request_id(request),result:{protocolVersion:2024-11-05,capabilities:{tools:{}},serverInfo:{name:SimpleMCPServer,version:1.0.0}}}def_handle_tools_list(self,request:Dict[str,Any])-Dict[str,Any]:处理工具列表请求return{jsonrpc:2.0,id:self._get_request_id(request),result:{tools:list(self.tools.values())}}def_handle_tools_call(self,request:Dict[str,Any])-Dict[str,Any]:处理工具调用请求paramsrequest.get(params,{})tool_nameparams.get(name)argumentsparams.get(arguments,{})try:iftool_namecalculate:resultself._calculate(arguments.get(expression,))else:return{jsonrpc:2.0,id:self._get_request_id(request),error:{code:-32601,message:f未知工具: {tool_name}}}return{jsonrpc:2.0,id:self._get_request_id(request),result:{content:[{type:text,text:json.dumps(result,ensure_asciiFalse,indent2)}]}}except Exceptionase:return{jsonrpc:2.0,id:self._get_request_id(request),error:{code:-32603,message:f工具执行错误: {str(e)}}}def_calculate(self,expression:str)-Dict[str,Any]:执行数学计算try:# 安全的数学表达式计算 allowed_charsset(0123456789-*/.() )ifnotall(cinallowed_charsforcinexpression):raiseValueError(表达式包含不允许的字符)resulteval(expression)return{expression:expression,result:result,type:number}except Exceptionase:raiseValueError(f计算错误: {str(e)})def_get_request_id(self,request:Dict[str,Any])-Any:获取请求ID如果请求中没有ID则返回默认IDifidinrequest:returnrequest[id]else:# 如果请求中没有id返回一个默认的字符串IDreturndefault-iddefrun(self):运行MCP服务器print(Simple MCP Server 启动中...,filesys.stderr)try:forlineinsys.stdin:lineline.strip()ifnot line:continuetry:requestjson.loads(line)responseself.handle_request(request)print(json.dumps(response,ensure_asciiTrue))sys.stdout.flush()except json.JSONDecodeError:error_response{jsonrpc:2.0,id:default-id,error:{code:-32700,message:解析错误}}print(json.dumps(error_response,ensure_asciiFalse))sys.stdout.flush()except KeyboardInterrupt:print(服务器关闭,filesys.stderr)if__name____main__:serverSimpleMCPServer()server.run()简单计算器MCP服务器本项目中的simple_mcp_server.py是一个完整的MCP服务器示例包含数学计算工具执行基本数学表达式文本统计工具分析文本的字符、单词等统计信息系统信息工具获取Python和系统基本信息可以通过以下方式测试# 启动服务器python simple_mcp_server.py# 在另一个终端测试echo{jsonrpc:2.0,id:1,method:tools/list}|python simple_mcp_server.py真实cursor上加配置调用即可{“mcpServers”:{“my-server”:{“command”:“python”,“args”:[“D:/sase-dfx/sase_dfx/9、ai生成/simple_mcp_server.py”],“disabled”:false,“alwaysAllow”:[“calculate”]}}}