文章目錄
- 1. 使用python完成mcp服務
- 1.1 準備環境(python安裝fastmcp)
- 1.2 `mcp`服務端示例代碼
- 1.3 啟動`mcp`服務端
- 2. `dify`接入
- 2.1 安裝`MCP SSE`和` Agent 策略(支持 MCP 工具) `插件
- 2.2 dify agent插件配置mcp:
- 2.3 mcp服務配置:
- 2.4 添加授權
- 2.5 點擊運行
1. 使用python完成mcp服務
1.1 準備環境(python安裝fastmcp)
fastmcp
官方文檔:https://modelcontextprotocol.io/introduction
uv add fastmcp
1.2 mcp
服務端示例代碼
#!/usr/bin/env python
# coding: utf-8
from mcp.server.fastmcp import FastMCP# name: 是服務器的標識符或名稱,用于區分不同的 MCP 服務器
# instructions:服務器描述,用于日志、文檔和客戶端展示
mcp = FastMCP("mcp_server_demo", "mcp server example", port=8095)@mcp.tool("sum of two numbers", "計算兩數之和")
def add(a: int, b: int) -> int:"""sum of two numbersmcp.tool注冊工具函數add,工具是模型可以調用的功能,由服務器暴露給客戶端或語言模型:param a::param b::return:"""print(f"計算兩數之和a:{a}, b:{b}")return a + bif __name__ == '__main__':# mcp: Model Context Protocol,模型上下文協議# 啟動mcp服務器, transport=stdio(指定通信方式為標準輸入輸出),sse(Server-Sent Events。單向通信,基于HTTP協議的服務器推送技術)mcp.run(transport="sse")
1.3 啟動mcp
服務端
# Using the FastMCP CLI
fastmcp run server.py# Or with Python/uv directly
python server.py
uv run python server.py# need node.js to launches a web interface
fastmcp dev server.py
sse
方式示例:
(test-uv) (base) pywcc@wcc:~/test_uv$ uv run mcp_demo.py
INFO: Started server process [15248]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8095 (Press CTRL+C to quit)
2. dify
接入
2.1 安裝MCP SSE
和Agent 策略(支持 MCP 工具)
插件
https://marketplace.dify.ai/plugins/junjiem/mcp_see_agent?language=zh-Hans
https://marketplace.dify.ai/plugins/junjiem/mcp_sse?language=zh-Hans
應用市場:https://marketplace.dify.ai/
下載插件:
離線安裝插件:
2.2 dify agent插件配置mcp:
2.3 mcp服務配置:
# 示例
{"server_name1": {"url": "http://host.docker.internal:8095/sse","headers": {},"timeout": 60,"sse_read_timeout": 300},"server_name2": {"url": "http://host.docker.internal:8095/sse"}
}# 單個mcp server
{"mcp_server_demo":{"url":"http://host.docker.internal:8095/sse","headers": {},"timeout": 60,"sse_read_timeout": 300}}
2.4 添加授權
指令:
你是一個工具助手,支持mcp協議獲取可用工具,并執行工具調用。
2.5 點擊運行
mcp服務端日志:
[05/10/25 18:58:21] INFO Processing request of type server.py:534ListToolsRequest
[05/10/25 19:02:26] INFO Processing request of type server.py:534ListToolsRequest INFO Processing request of type server.py:534CallToolRequest
INFO: 127.0.0.1:33780 - "GET /sse HTTP/1.1" 200 OK
INFO: 127.0.0.1:33788 - "POST /messages/?session_id=dc23ee63234e4e38a85415f65796e608 HTTP/1.1" 202 Accepted
INFO: 127.0.0.1:33788 - "POST /messages/?session_id=dc23ee63234e4e38a85415f65796e608 HTTP/1.1" 202 Accepted
INFO: 127.0.0.1:33788 - "POST /messages/?session_id=dc23ee63234e4e38a85415f65796e608 HTTP/1.1" 202 Accepted
INFO: 127.0.0.1:33788 - "POST /messages/?session_id=dc23ee63234e4e38a85415f65796e608 HTTP/1.1" 202 Accepted
計算兩數之和a:1, b:2
運行結果: