【AI--stdio,sse,streamable-http】

mcp config file

  • stdio
bash 复制代码
"example-server02": {
            "name": "MCP 服务器2",
            "type": "stdio",
            "isActive": true,
            "registryUrl": "",
            "command": "uv",
            "args": [
                "--directory",
                "D:\\workspace\\mcpserver",
                "run",
                "main.py"
            ]
        },
  • sse
bash 复制代码
"walkerAPI-mcp": {
            "name": "MCP SSE 服务器",
            "url": "http://127.0.0.1:8000/sse",
            "disabled": false,
            "autoApprove": []
        }
  • streamable-http
bash 复制代码
"custom-streamable-http": {
            "name": "自定义流式HTTP服务器",
            "type": "streamable-http",
            "url": "http://127.0.0.1:8000/mcp",
            "autoApprove": []
        }

python code --mcp server tools

bash 复制代码
import logging
from typing import Final
from mcp.server.fastmcp import FastMCP

logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
    )
logger: Final = logging.getLogger(__name__)
# Create an MCP server
mcp: FastMCP = FastMCP("Demo", json_response=True)

# Add an addition tool 
@mcp.tool()
def add(a: int, b: int) ->int:
    """计算两个数相加的结果"""
    return a + b

# Add a dynamic greeting resource
@mcp.resource("greeting://{name}")
def get_greeting(name: str) -> str:
    """Return a greeting message for the given name"""
    return f"Hello, {name}!"

def main():
#   print("Hello from mcpserver!")    
    #mcp.run(transport="streamable-http") ## sse
    try:
        logger.info("正在启动MCP服务器...")
        mcp.settings.host = "0.0.0.0"
        mcp.run(transport="streamable-http") # sse stdio streamable-http
    except KeyboardInterrupt:
        logger.info("接收到中断信号,正在关闭服务器...")
    except Exception as e:
        logger.error(f"服务器运行时发生错误: {str(e)}", exc_info=True)
        raise
    finally:
        logger.info("服务器已关闭")
 
if __name__ == "__main__":
    main()

使用不同的协议需要更改代码:

  • sse

mcp.run(transport="sse")

  • stdio

mcp.run(transport="stdio")

  • streamable-http

mcp.run(transport="streamable-http")

启动

python main.py

测试

测试发送消息:计算两个数相加的结果,1加3等于几

思考过程:

结果:

python 创建与发布

**mcp-server

  • mk mcp_server && cd mcp_server

  • uv init . -p 3.13 3.13.4

  • uv add "mcp[cli]"

    写完程序后,测试OK,打包

  • type:stdio 发布方式:

  • uv build

  • 然后发布到:https://pypi.org,申账号,邮件认证,保存好验证码:,下载微软认证工具,双重认证一下,apikey token

  • uv publish --token apikey


  • type:sse 发布方式;
  • 将main.py 文件和pyproject.toml 得制到服务器中的目录,
  • 然后执行:uv venv ,
  • 再执行uv pip install .
  • 再然后,uv run main.py