Token导航 LogoToken导航TokenDH.com
MCP For Ollama logo
AI代理未说明官方级别未说明来源级核验

MCP For Ollama

MCP Server

一个通过本地网络为Ollama模型提供可调用工具的MCP服务器,支持OpenWebUI集成和结构化日志记录。

工具数

3

提示词数

0

GitHub Stars

0

资源数

0
AI代理C#工作流自动化

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

bberrevoets

提供方

bberrevoets

最后核验

2026/5/17 20:19

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

MCP适用于Olama

一个MCP(模型上下文协议)服务器,通过本地网络公开Ollama模型可调用的工具。NET 10,旨在通过流式HTTP传输与OpenWebUI集成。

特性

  • 可流式HTTP传输 --网络可访问的MCP服务器,无需stdio网桥
  • OpenWebUI集成 --通过“管理面板”>“设置”>“外部工具”直接连接
  • 依赖注入 --工具是带有构造函数注入服务的实例类
  • 结构化日志记录 --带有控制台、文件和序列接收器的Serilog
  • 健康终点 --快速可达性检查 /health

可用工具

工具说明
generate_random_number生成一个介于最小值和最大值之间的随机数。默认值为1-100。
get_temperatures获取所有Netatmo气象站和模块的当前温度和湿度读数。需要一次性设置OAuth2。
get_historical_data获取特定模块/房间在可配置时间段(最多30天)内的历史温度和湿度。自动选择时间刻度并提供最小/最大/平均摘要。

技术栈

  • .NET 10 C
  • 模型上下文协议。AspNetCore v0.9.0预览版。1
  • Serilog (控制台、文件、序列)
  • xUnit v3 用于测试

入门指南

先决条件

构建与运行

# Build
dotnet build

# Run the server (listens on http://0.0.0.0:5000)
dotnet run --project src/MCPForOllama.Server

# Run tests
dotnet test

验证

# Health check
curl http://localhost:5000/health
# Returns: {"status":"healthy","service":"MCPForOllama"}

从OpenWebUI连接

Docker注意事项: 如果OpenWebUI在Docker中运行,请使用 host.docker.internal 而不是 localhost.
  1. 打开 管理面板>设置>外部工具
  2. 点击 + 添加新连接
  3. 填写:

- 连接类型: MCP流式HTTP - 网址: http://host.docker.internal:5000/mcp (Docker)或 http://localhost:5000/mcp (本地) - 认证: 无 - 身份证件: mcpforollama - 姓名: MCPForOllama - 访问权限: 所有用户

  1. 点击 保存,然后单击 刷新图标 在URL旁边验证连接
  2. 在模型的 高级参数,set 函数调用Native
推荐型号: qwen2.5, qwen3, mistral-nemo --这些工具具有可靠的工具调用支持。 llama3.1 可能会产生幻觉,而不是调用工具结果。
重要提示: 重启服务器或更换工具后,始终 开始新的聊天。旧聊天会缓存过时的工具定义,可能无法正确调用更新的工具。

有关详细的分步测试说明,请参阅 docs/LOCAL-TESTING.md.

Netatmo天气设置

Netatmo工具(get_temperaturesget_historical_data)从Netatmo气象站读取温度和湿度。它们需要一次性的OAuth2设置。

1.创建Netatmo应用程序

  1. 首选 dev.netatmo.com/apps 并登录
  2. 创建新应用程序
  3. 将重定向URI设置为 http://localhost:5000/netatmo/callback
  4. 注意你的 客户端ID客户端密钥

2.存储凭据

dotnet user-secrets set "Netatmo:ClientId" "YOUR_CLIENT_ID" --project src/MCPForOllama.Server
dotnet user-secrets set "Netatmo:ClientSecret" "YOUR_CLIENT_SECRET" --project src/MCPForOllama.Server

3.授权

  1. 启动服务器: dotnet run --project src/MCPForOllama.Server
  2. 打开 http://localhost:5000/netatmo/auth 在浏览器中
  3. 登录Netatmo并授予访问权限
  4. 您将看到一条成功消息——令牌存储在 netatmo-tokens.json

令牌会自动刷新。只有当刷新令牌过期时(通常是在长时间不活动之后),您才需要重复此操作。

日志记录

服务器使用 Serilog 对于具有三个水槽的结构化测井:

水槽描述
控制台带有时间戳、级别、服务名称和源上下文的结构化输出
文件每日滚动日志 logs/mcpforollama-YYYYMMDD.log 保留7天
序列将结构化事件发送到 序列 服务器在 http://localhost:5341

所有日志记录配置都在 appsettings.json.Seq API密钥(如果需要)通过存储。NET用户机密:

dotnet user-secrets set "Serilog:WriteTo:2:Args:apiKey" "YOUR_SEQ_API_KEY" --project src/MCPForOllama.Server

防火墙

如果在Ubuntu上部署时ufw处于活动状态:

sudo ufw allow 5000/tcp

在Windows上,如果防火墙阻止连接:

netsh advfirewall firewall add rule name="MCPForOllama" dir=in action=allow protocol=TCP localport=5000

添加新工具

在中创建新类 src/MCPForOllama.Server/Tools/:

using System.ComponentModel;
using ModelContextProtocol.Server;

namespace MCPForOllama.Server.Tools;

[McpServerToolType]
public class MyNewTool(ILogger logger)
{
    [McpServerTool, Description("Describe what this tool does.")]
    public string DoSomething(
        [Description("Describe the parameter.")] string input)
    {
        logger.LogInformation("DoSomething invoked with input={Input}", input);
        return $"Result: {input}";
    }
}

重要提示: 始终返回 string 来自工具方法——OpenWebUI期望来自MCP工具的字符串结果。

然后在中注册 Program.cs:

builder.Services
    .AddMcpServer()
    .WithHttpTransport()
    .WithTools()
    .WithTools();

项目结构

MCPForOllama/
├── MCPForOllama.slnx
├── global.json
├── docs/
│   └── LOCAL-TESTING.md
├── src/
│   └── MCPForOllama.Server/
│       ├── MCPForOllama.Server.csproj
│       ├── Program.cs
│       ├── appsettings.json
│       ├── Properties/launchSettings.json
│       ├── Models/
│       │   ├── NetatmoSettings.cs
│       │   ├── NetatmoTokens.cs
│       │   ├── NetatmoStationData.cs
│       │   └── NetatmoMeasureData.cs
│       ├── Services/
│       │   ├── INetatmoTokenStore.cs
│       │   ├── FileNetatmoTokenStore.cs
│       │   ├── INetatmoApiService.cs
│       │   └── NetatmoApiService.cs
│       └── Tools/
│           ├── RandomNumberTool.cs
│           └── NetatmoWeatherTool.cs
└── tests/
    └── MCPForOllama.Server.Tests/
        ├── MCPForOllama.Server.Tests.csproj
        ├── Services/
        │   ├── FileNetatmoTokenStoreTests.cs
        │   └── NetatmoApiServiceTests.cs
        └── Tools/
            ├── RandomNumberToolTests.cs
            └── NetatmoWeatherToolTests.cs

作者

  • 公司: Berrevoets 系统
  • 作者 贝尔特 Berrevoets
  • 联系人: bert@berrevoets.net

许可证

此项目用于个人/教育用途。

目录标签

目录标签

AI代理C#工作流自动化模型协议本地部署工具调用OpenWebUI集成结构化日志Netatmo天气数据

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

3

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP