mcpField
M
MCP-Haskell (hs-mcp)

MCP-Haskell (hs-mcp)

本地服务
github.com/buecking开发工具2563 周前更新

关于 MCP-Haskell (hs-mcp)

MCP-Haskell(hs-mcp)是一个 Haskell 实现的 Model Context Protocol 库,可让 Haskell 应用向 Claude 等 MCP 客户端暴露工具、资源和提示词。适合希望用 Haskell 编写 MCP 服务的开发者。

主要功能

  1. 01实现 MCP 协议的核心功能
  2. 02基于 StdIO 的本地进程通信
  3. 03JSON-RPC 消息处理
  4. 04支持工具、资源和提示词
  5. 05包含测试套件

适用场景

  1. 01用 Haskell 编写自定义 MCP 服务
  2. 02使用示例 echo 服务测试 MCP 功能
  3. 03通过 MCP Inspector 或 Claude Desktop 调试服务

MCP 相关

作为 MCP 服务端库,Haskell 应用可向 Claude Desktop 等 MCP 客户端暴露 tools、resources 和 prompts。传输方式目前为 StdIO。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

MCP-Haskell (hs-mcp)

Model Context Protocol (MCP) 的 Haskell 实现。

概述

MCP-Haskell (hs-mcp) 提供了 Model Context Protocol 的 Haskell 实现,使 Haskell 应用能够向 Claude 等兼容 MCP 的客户端暴露工具、资源和提示词。

主要特性:

  • 完整实现 MCP 协议
  • 用于本地进程通信的 StdIO 传输
  • JSON-RPC 消息传递
  • 支持资源、工具和提示词
  • 全面的测试套件

安装

# Clone the repository
git clone github.com:buecking/hs-mcp.git
cd hs-mcp

# direnv
# echo 'use flake' > .envrc
direnv allow

# nix
nix develop

# Build the project
cabal build

用法

创建简单的服务
import Network.MCP.Server
import Network.MCP.Types
import Network.MCP.Server.StdIO

main :: IO ()
main = do
  -- Create server
  let serverInfo = Implementation "my-server" "1.0.0"
      serverCapabilities = ServerCapabilities
        { resourcesCapability = Just $ ResourcesCapability True
        , toolsCapability = Just $ ToolsCapability True
        , promptsCapability = Nothing
        }
  
  server <- createServer serverInfo serverCapabilities
  
  -- Register resources (optional)
  let resource = Resource 
        { resourceUri = "my://resource"
        , resourceName = "My Resource"
        , resourceDescription = Just "Description"
        , resourceMimeType = Just "text/plain"
        , resourceTemplate = Nothing
        }
  
  registerResources server [resource]
  
  -- Register resource read handler
  registerResourceReadHandler server $ \request -> do
    -- Implement resource reading logic
    ...

  -- Register tools (optional)
  let tool = Tool 
        { toolName = "my-tool"
        , toolDescription = Just "My tool"
        , toolInputSchema = "{...}" -- JSON schema
        }
  
  registerTools server [tool]
  
  -- Register tool call handler
  registerToolCallHandler server $ \request -> do
    -- Implement tool execution logic
    ...
  
  -- Start the server with StdIO transport
  runServerWithSTDIO server
示例服务

该项目包含一个演示 MCP 功能的示例 echo 服务:

# Build and run the example server
cabal run mcp-echo-server

你可以使用 MCP Inspector 或 Claude Desktop 进行测试。

测试

运行测试套件:

cabal test

协议兼容性

此实现遵循 Model Context Protocol 规范,并兼容:

  • Claude Desktop
  • MCP Inspector
  • 其他遵循该规范的 MCP 客户端

项目结构

  • src/Network/MCP/Types.hs - 核心 MCP 类型
  • src/Network/MCP/Transport/ - 传输实现
  • src/Network/MCP/Server/ - 服务实现
  • Examples/ - 示例实现
  • Test/ - 测试套件

贡献

欢迎贡献!请随时提交 Pull Request。

许可证

本项目采用 BSD-3-Clause 许可证 - 详情请参阅 LICENSE 文件。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。