模型上下文协议服务器

一个基于F#实现的MCP服务器,提供上下文库资源访问和工具投影功能,适用于文档管理和开发工具集成。

  • by IvanTheGeek
  • F#
  • 混合部署
  • 更新于
在 GitHub 查看 IvanTheGeek/FnMCP.Nexus

使用说明

FnMCP。纽带

F#中的MCP(模型上下文协议)服务器实现,它将上下文库作为资源公开,并提供工具和投影。

概述

此MCP服务器提供对包含有关应用程序和框架的文档的上下文库的访问。它实现了MCP协议版本2024-11-05,并通过stdio上的JSON-RPC进行通信。

特性

  • 资源:将上下文库中的markdown文件作为MCP资源公开
  • 协议:标准MCP JSON-RPC通过标准输入
  • 内容提供者:基于文件系统的文档内容提供商

当前能力

  • resources/list -列出所有可用的文档资源
  • resources/read -按URI读取特定资源内容
  • tools/list -用于未来工具实施的占位符
  • prompts/list -占位符用于未来的快速实现

构建服务器

dotnet build src/FnMCP.Nexus/FnMCP.Nexus.fsproj

运行服务器

服务器接受上下文库路径的可选命令行参数:

dotnet run --project src/FnMCP.Nexus [context-library-path]

如果没有提供路径,则默认为 context-library 在项目根中。

MCP客户端配置

克劳德桌面/Junie

服务器已在中配置 ~/.config/Claude/claude_desktop_config.json (Linux):

{
  "mcpServers": {
    "FnMCP.Nexus": {
      "command": "dotnet",
      "args": [
        "run",
        "--project",
        "/home/linux/RiderProjects/FnMCP.IvanTheGeek/src/FnMCP.Nexus"
      ],
      "env": {}
    }
  }
}

备注:更新配置后,重新启动Claude Desktop以使更改生效。

其他MCP客户端

对于其他MCP兼容客户端,请将其配置为运行:

  • 命令: dotnet
  • 参数: run --project <full-path-to-project>
  • 沟通:stdio(JSON-RPC)

上下文库结构

上下文库的组织方式如下:

context-library/
├── apps/
│   └── laundrylog/
│       └── overview.md
└── framework/
    └── overview.md

每个markdown文件都成为可通过其URI路径访问的MCP资源。

发展

项目结构

  • src/FnMCP.Nexus/ -主要源代码
    • McpServer.fs -核心MCP服务器实现
    • Program.fs -入口点和JSON-RPC消息循环
    • Types.fs -MCP协议类型
    • ContentProvider.fs -内容提供者界面
    • FileSystemProvider.fs -基于文件系统的提供者
    • Resources.fs -资源管理
    • Tools.fs -工具注册表和处理程序
    • Prompts.fs -提示注册表和处理程序

需求

  • .NET 9.0 SDK
  • F#编译器

协议细节

服务器实现MCP协议版本 2024-11-05 使用JSON-RPC 2.0:

  • 输入:通过stdin发出JSON-RPC请求
  • 输出:通过stdout的JSON-RPC响应
  • 日志记录:通过stderr记录诊断日志

状态

✅ 生产部署处于活动状态

服务器部署在VPS上,可通过HTTP/SSE传输访问:

  • 端点: http://66.179.208.238:18080/sse
  • 运输:具有承载令牌身份验证的SSE(服务器发送事件)
  • 状态自2025年至2019年开始运营

可以通过MCP协议访问上下文库中的资源和工具。

远程访问

HTTP/SSE传输(推荐)

服务器支持通过HTTP和SSE传输进行远程访问:

终点:

  • 健康: http://66.179.208.238:18080/
  • SSE活动: http://66.179.208.238:18080/sse/events
  • Websocket: ws://66.179.208.238:18080/ws

身份验证: 所有端点(健康检查除外)都需要承载令牌身份验证。生成API密钥:

docker exec -i nexus-mcp ./FnMCP.Nexus /data/event-store generate-api-key \
  --scope full_access \
  --description "Your description"

Claude桌面配置:

{
  "mcpServers": {
    "nexus-vps": {
      "url": "http://66.179.208.238:18080/sse",
      "transport": {
        "type": "sse",
        "headers": {
          "Authorization": "Bearer YOUR_API_KEY_HERE"
        }
      }
    }
  }
}

当地标准运输(发展)

对于本地开发,您还可以在stdio模式下运行服务器:

./bin/local/FnMCP.Nexus /path/to/event-store