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

MCP 服务开发到发布

MCP 服务开发到发布

环境

MCP服务开发环境需要Python 3.10+

我推荐使用uv工具管理Python环境 https://docs.astral.sh/uv/

这个创建一下标准的包结构, 还是比较方便

MCP 调试工具 : https://github.com/modelcontextprotocol/inspector

MCP 服务

官方文档: https://modelcontextprotocol.io/quickstart/server

MCP 服务

MCP主要通信方式:

  1. Stdio transport
    • Uses standard input/output for communication
    • Ideal for local processes
  2. Streamable HTTP transport
    • Uses HTTP with optional Server-Sent Events for streaming
    • HTTP POST for client-to-server messages

stdio:通过标准输入输出流传递数据,实现简单,兼容性强,适合本地开发测试。

sse:允许服务器向客户端推送实时更新,单向通信,适用于需要持续数据更新的场景如实时通知。

注:后来阅读文档, SSE的模式已经废弃了, 但还是很多人用

建立项目

mcp_requests % uv init . --package -p 3.13
Initialized project mcp-requests at /Users/xxxxx/Desktop/mcp_requests

mcp_requests % uv add “mcp[cli]”

在这里插入图片描述

简单代码, 帮我简单发一个 http 的 get 和post 这种方法

import json
from typing import Dict, Any, Optional
import httpx
from mcp.server.fastmcp import FastMCP# Create an MCP server
mcp = FastMCP("HTTP Requests")@mcp.tool()
def http_get(url: str, headers: Optional[Dict[str, str]] = None) -> str:"""Make an HTTP GET request"""try:with httpx.Client() as client:response = client.get(url, headers=headers or {})return json.dumps({"status_code": response.status_code,"headers": dict(response.headers),"content": response.text}, indent=2)except Exception as e:return f"Error: {str(e)}"@mcp.tool()
def http_post(url: str, data: Optional[Dict[str, Any]] = None, headers: Optional[Dict[str, str]] = None) -> str:"""Make an HTTP POST request"""try:with httpx.Client() as client:response = client.post(url, json=data, headers=headers or {})return json.dumps({"status_code": response.status_code,"headers": dict(response.headers),"content": response.text}, indent=2)except Exception as e:return f"Error: {str(e)}"@mcp.tool()
def http_put(url: str, data: Optional[Dict[str, Any]] = None, headers: Optional[Dict[str, str]] = None) -> str:"""Make an HTTP PUT request"""try:with httpx.Client() as client:response = client.put(url, json=data, headers=headers or {})return json.dumps({"status_code": response.status_code,"headers": dict(response.headers),"content": response.text}, indent=2)except Exception as e:return f"Error: {str(e)}"@mcp.tool()
def http_delete(url: str, headers: Optional[Dict[str, str]] = None) -> str:"""Make an HTTP DELETE request"""try:with httpx.Client() as client:response = client.delete(url, headers=headers or {})return json.dumps({"status_code": response.status_code,"headers": dict(response.headers),"content": response.text}, indent=2)except Exception as e:return f"Error: {str(e)}"def main() -> None:import asyncioasyncio.run(mcp.run(transport='stdio'))if __name__ == "__main__":main()

尝试本地测试调用, 再 cursor (其他也可以,我只是电脑恰好有, 比较方便) 里面添加服务,

{"mcpServers": {"request-server-aaddb": {"name": "request-mcp-server-aaddb","type": "stdio","description": "AADDb MCP server","isActive": true,"command": "uv","args": ["--directory",
"/Users/yi.zhai/Desktop/mcp_requests", "run", "mcp-requests"]}}
}

成功启动

在这里插入图片描述
在这里插入图片描述

尝试让 AI 调用

服务成功收到请求, 测试成功, 功能是跑通了

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

PyPI 上传步骤总结

安装构建工具

uv add build twine

构建

uv run python -m build

上传

uv run python -m twine upload dist/* -u **token** -p pypi-xxxxxx

成功标志:

在这里插入图片描述

最后尝试一下 ,直接导入使用, 没问题

{"mcpServers": {"mcp-request": {"command": "mcp-request","type": "stdio"}}
}

在这里插入图片描述

最后文档服务发布到了

https://pypi.org/project/mcp-request/ 大家可以试试

http://www.xdnf.cn/news/1118755.html

相关文章:

  • 1.1.5 模块与包——AI教你学Django
  • 大模型微调(一):基于Swift框架进行自我认知微调(使用Lora微调Qwen3-8B模型)
  • 系规备考论文:论IT服务部署实施方法
  • 17.使用DenseNet网络进行Fashion-Mnist分类
  • 【数据结构】图 ,拓扑排序 未完
  • INA226 数据手册解读
  • HTTP与HTTPS详解
  • 闲庭信步使用图像验证平台加速FPGA的开发:第十二课——图像增强的FPGA实现
  • opencv4.12 vs2022 cmake contrib编译
  • 基于MATLAB的Lasso回归的数据回归预测方法应用
  • 零基础完全理解视觉语言模型(VLM):从理论到代码实践
  • 【Mysql作业】
  • 从零开始学习深度学习—水果分类之PyQt5App
  • C++高频知识点(十三)
  • 掌握系统设计的精髓:12个核心设计模式的通俗解读
  • sql:sql在office中的应用有哪些?
  • 谷歌在软件工程领域应用AI的进展与未来展望
  • 数智管理学(三十三)
  • AI生成单词消消乐游戏. HTML代码
  • Opencv---blobFromImage
  • NO.4数据结构数组和矩阵|一维数组|二维数组|对称矩阵|三角矩阵|三对角矩阵|稀疏矩阵
  • 在conda的环境中安装Jupyter及其他软件包
  • SpringBoot单元测试类拿不到bean报空指针异常
  • python函数快捷的传变量地址
  • C++--红黑树封装实现set和map
  • 极矢量与轴矢量
  • Linux系统移植19:根文件系统的构建
  • leetGPU解题笔记(2)
  • C# 接口(接口可以继承接口)
  • 华为OD 处理器