当前位置: 首页 > news >正文

响应式网站是什么意思上海公布最新情况

响应式网站是什么意思,上海公布最新情况,网站域名备案在阿里云怎么做,网店设计作用有哪些uv工具&&创建虚拟开发环境 uv工具的安装、使用以及虚拟环境的创建已经在上篇文章中做了详细介绍,这里不再赘述,见:MCP从零开始-CSDN博客 MCP客户端搭建 创建项目和创建虚拟环境,已经在上篇中介绍过了,这里不…

uv工具&&创建虚拟开发环境

uv工具的安装、使用以及虚拟环境的创建已经在上篇文章中做了详细介绍,这里不再赘述,见:MCP从零开始-CSDN博客

MCP客户端搭建

创建项目和创建虚拟环境,已经在上篇中介绍过了,这里不做详细介绍,仅仅列出相关命令。

# 创建项目 && 进入项目
uv init mymcp
cd mymcp# 创建虚拟环境
uv venv# 激活虚拟环境
source .venv/bin/activate # linunx等
.venv/bin/activate        # windows# 删除main.py
rm main.py# 创建客户端文件
touch client.py

 执行上述命令创建好了项目并且激活了虚拟环境。

安装相关库

# 安装mcp相关库uv add "mcp[cli]"

编写MCP客户端

打开client.py文件编写代码,可以用记事本、notepad++等,不过建议用一款编程软件,这样可以提升代码编写效率,作者采用vscode。

 导入必要的库

import asyncio  # 异步操作
from mcp import ClientSession  # MCP客户端会话管理
from contextlib import AsyncExitStack  # 资源管理

创建并初始化客户端

class MyMCPClient:def __init__(self):"""初始化 MCP 客户端"""self.session = None  self.exit_stack = AsyncExitStack()  # 创建资源管理器

模拟 MCP 服务器连接

async def connect_to_mock_server(self):"""MCP 服务器的连接"""print("✅ MCP 客户端已初始化,但未连接到服务器")

交互式聊天

async def chat_loop(self):"""交互式聊天循环"""print("\nMCP 客户端已启动!输入 'quit' 退出")while True: try:query = input("\nQuery: ").strip()if query.lower() == 'quit': print("\n👋 退出聊天...")breakprint(f"\n🤖 你:{query}") except Exception as e: print(f"\n⚠️ 发生错误: {str(e)}")

释放资源 && 主函数

async def cleanup(self):"""清理资源"""await self.exit_stack.aclose()  async def main():client = MyMCPClient() try:await client.connect_to_mock_server() await client.chat_loop() finally:await client.cleanup() if __name__ == "__main__":asyncio.run(main())

将上述代码组合,一个简单的客户端就开发好了!运行下面命令,结果如下:

uv run client.py

 MCP客户端接入AI

下面主要陈述怎样接入OpenAI、DeepSeek等在线模型。

导入OpenAI库依赖

uv add openai

创建.env文件

创建.env文件,并写入下面内容:

 注:MODEL可以更换为DeepSeek模型或者其他或者本地模型。

 修改客户端代码

加载OpenAI API Key

from dotenv import load_dotenv
import os# 加载 .env 文件,确保 API Key 受到保护
load_dotenv()self.openai_api_key = os.getenv("OPENAI_API_KEY")  # 读取 API Key
self.base_url = os.getenv("BASE_URL")  # 读取 BASE YRL
self.model = os.getenv("MODEL")if not self.openai_api_key:raise ValueError("❌ 未找到 OpenAI API Key,请确保 .env 文件中已经设置了 OPENAI_API_KEY")

发送用户输入

async def process_query(self, query: str) -> str:"""调用 OpenAI API 处理用户查询"""messages = [{"role": "system", "content": "你是一个智能助手,帮助用户回答问题。"},{"role": "user", "content": query}]try:response = await asyncio.get_event_loop().run_in_executor(None,lambda: openai.ChatCompletion.create(model="gpt-4",messages=messages,max_tokens=1000,temperature=0.7))return response["choices"][0]["message"]["content"].strip()except Exception as e:return f"⚠️ 调用 OpenAI API 时出错: {str(e)}"

交换聊天

async def chat_loop(self):"""运行交互式聊天循环"""print("\n🤖 MCP 客户端已启动!输入 'quit' 退出")while True:try:query = input("\n你: ").strip()if query.lower() == 'quit':breakresponse = await self.process_query(query)  # 发送用户输入到 OpenAI APIprint(f"\n🤖 OpenAI: {response}")except Exception as e:print(f"\n⚠️ 发生错误: {str(e)}")

组合上述代码,运行结果如下,这样一个简单的连接AI客户端就实现好了 ^_^

 编写服务端

以导入shape数据到SuperMap数据源为例。

服务端代码相对比较简单,主要是封装MCP tools,创建server.py文件,写入一下代码:

#!/usr/bin/env python3
"""
SuperMap MCP Client - Simple client to connect to the SuperMap MCP server
"""import logging
from mcp.server.fastmcp import FastMCP
from iobjectspy import data, conversion, enumsmcp = FastMCP("supermap_server",description="SuperMap integration through the Model Context Protocol")logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
logger = logging.getLogger("SuperMapMCPServer")def get_datasource():connInfo = (data.DatasourceConnectionInfo().set_type(enums.EngineType.PGGIS).set_server('ip').set_database('db').set_alias('test').set_user('user').set_password('password'))datasource = data.open_datasource(connInfo)if datasource is None:raise Exception("Could not open datasource")else:logger.info("Successfully connected to SuperMap")return datasource@mcp.tool(name="import_data", description="Import a shapefile to datasource")
def import_data(file_path: str) -> bool:datasource = get_datasource()if datasource is None:logger.error("Datasource is None")return False# Import the shapefilebImport = Falsetry:b = conversion.import_shape(file_path, datasource)logger.info(f"Successfully imported {file_path} to datasource")bImport = (len(b) == 1)except Exception as e:logger.error(f"Failed to import {file_path}: {str(e)}")return Falsefinally:datasource.close()logger.info("Datasource closed after import")return bImportdef main():"""Run the MCP server"""mcp.run(transport='stdio')if __name__ == "__main__":main()

运行客户端和服务端

运行

uv run client.py server.py

运行上述代码,界面如下所示:

执行数据导入

用supermap desktop查看,结果如下:

至此客户端和服务端实现完成,是不是不是很难 ^_^ 

完整代码:https://github.com/liyq0307/SuperMapMCP.git

http://www.dtcms.com/a/525091.html

相关文章:

  • 七牛云建网站暴雪退款申请快速入口
  • 桂林手机网站制作最新人才招聘网
  • AI驱动的客户管理:悟空AI CRM的核心功能与优势
  • 零基础网站建设教学公司wordpress 点击文章图片路径
  • [cpprestsdk] 异步编程模型 | `pplx::task<T>`| `.get()``.then()`
  • 简单而管用的清理gpu显存的方法及分析
  • 哪个网站做化妆品效果好用ps做美食网站
  • 第7章 muduo编程示例(4)
  • 网站备案是不是就是空间备案西安搬家公司收费情况一览表
  • 网站开发项目详细计划天津住房与城乡建设厅网站
  • ROS2(3)入门篇 - 使用客户端库
  • 佛山新网站制作特色php门户网站源码
  • 前端如何调试?从浏览器到真机的完整调试实践指南
  • 登陆国外网站速度慢企业网站制作
  • 网站制作top北京网站推广营销策划
  • 深入理解AtomicBoolean的使用与底层原理
  • 教育类手机网站模板下载wordpress 导出用户
  • 电商履约大促峰值应对:核心业务数据预热方案详解
  • 南京城乡建设网站网站建设中山优化
  • Antares SQL,一款跨平台开源 SQL 客户端
  • hot 100(5) —— 盛最多水的容器(双指针)
  • 手机端网站seo国内专门做酒的网站
  • 平面ui设计网站代理网址网站
  • 2025年10月24日 今日AI大事件
  • Linux网络诊断利器:ss命令详解
  • 北京网站建设公司 蓝纤科技 网络服务网站一般多长
  • 注册qq空间网站wordpress 屏蔽评论
  • 有哪些网站可以做笔译中国建设机械职业教育网证书查询
  • 轨道平面系与轨道姿态系
  • 前端十年回顾及未来展望