自定义MCP服务器工具

该服务允许用户创建自定义MCP服务器,将Python函数作为工具暴露,并与Ollama集成,适用于需要扩展AI模型功能的开发场景。

  • by dakofler
  • Python
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 dakofler/ollama_mcp_demo

使用说明

成为 MCP 演示

此演示展示了如何创建自定义MCP服务器,以将自定义Python函数作为工具公开。它还演示了如何使用自定义MCP客户端类将MCP服务器与Ollama集成。MCP服务器和Ollama都是独立的,可以在不同的机器上运行。

将工具添加到MCP服务器

要向MCP服务器添加新工具,只需在中创建Python函数 mcp_server/tools。创建后,将它们添加到 TOOLS 元组在 mcp_server/__main__.py 其用于将它们注册到MCP服务器。

# mcp_server/__main__.py
from mcp_server.tools import echo
...
SERVER = FastMCP(name="custom-mcp-server", **SERVER_CONFIG)
TOOLS = (echo,)  # add functions here
...

运行MCP服务器

  1. (可选)在中配置环境 docker-compose.yml 文件(端口、ollama配置等)。

  2. 启动服务。这将启动Ollama实例和MCP服务器。

    docker compose up -d
    
  3. (可选)要在容器运行后下载ollama模型,请使用

    docker compose exec ollama ollama pull <your model>
    

然后可以访问Ollama服务器 http://localhost:11434 MCP服务器位于 http://localhost:7777/mcp (用您的配置替换端口)。

MCP客户端使用情况

安装用于MCP客户端的依赖项

uv sync

然后,您可以使用 mcp_client.client.MCPClient 类与MCP服务器通信,如下所示:

from mcp_client.client import MCPClient

mcp_client = MCPClient(host="localhost", port=7777)

# list available tools
tools = await mcp_client.list_tools()
...

# call a tool
result = await mcp_client.call_tool(tool_name="some_tool", arguments={"some_arg": "value"})
...

将其与Olama集成可以这样完成:

from mcp_client.client import MCPClient
from ollama import Client as OllamaClient

mcp_client = MCPClient(host="localhost", port=7777)
ollama_client = OllamaClient("http://localhost:11434")

# invoke llm
response = ollama_client.chat(
    model="qwen3:4b",
    messages=[{"role": "user", "content": "Echo this message 'Hi, Alice!'"}],
    tools=await mcp_client.list_tools(),
)

print(response.message.content)

# handle tool calls
if tool_calls := response.message.tool_calls:
    for tool_call in tool_calls:
        tool_name = tool_call.function.name
        arguments = tool_call.function.arguments
        print("Calling", tool_name, "with arguments", arguments)
        tool_result = await mcp_client.call_tool(tool_name, arguments)
        print("Result: ", tool_result)

有用的链接