Token导航 LogoToken导航TokenDH.com
niMCP (Gokr) logo
AI代理未说明官方级别未说明来源级核验

niMCP (Gokr)

MCP Server

NimCP是一个基于宏的库,用于在Nim中创建模型上下文协议(MCP)服务器,支持多种传输方式和工具定义。

工具数

0

提示词数

0

GitHub Stars

19

资源数

0
服务器开发Claude模型集成Claude

安装说明

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

作者 / 组织

gokr

提供方

gokr

最后核验

2026/5/17 20:21

快速接入

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

详细介绍

NimCP-Nim中的简单模型上下文协议(MCP)服务器

Nim License

NimCP 是一个基于宏的库,用于创建 模型上下文协议(MCP) Nim中的服务器。它利用Nim的宏系统,为构建与LLM应用程序无缝集成的MCP服务器提供了令人难以置信的易于使用的API。

注意:此库的99.9%是使用Claude Code编写的!

特性

  • 宏观驱动API -使用简单的声明性语法定义服务器、工具、资源和提示
  • 完全支持MCP 2024-11-05 -使用JSON-RPC 2.0完全实现MCP规范
  • 多个传输 -支持stdio、SSE、HTTP和WebSocket传输
  • 增强型系统 -支持对象、联合、枚举、可选类型和数组
  • 自动模式生成 -从Nim类型签名生成的JSON模式
  • 请求上下文系统 -进度跟踪、取消和请求生命周期管理
  • 资源URI模板 -具有参数提取的动态URI模式(/users/{id})
  • 服务器组成 -使用前缀和路由将多个MCP服务器组合到一个接口中
  • 可堵塞测井 -灵活的日志记录系统,具有多个处理程序、级别和结构化输出
  • 中间件管道 -请求/响应转换和处理挂钩
  • 流利的API -用于优雅服务器配置的方法链模式
  • 高性能 -基于Mummy的HTTP和WebSockets实现
  • 并发处理 -使用新的任务池库进行stdio传输
  • 最小依赖性 -仅使用必要的、维护良好的软件包

快速开始

安装

nimble install nimcp

简单的例子

import nimcp
import strformat

let server = mcpServer("my-server", "1.0.0"):
  
  mcpTool:
    proc echo(text: string): string =
      ## Echo back the input text
      return "Echo: " & text
  
  mcpTool:
    proc add(a: float, b: float): string =
      ## Add two numbers together
      return $fmt"Result: {a + b}"

when isMainModule:
  # Use stdio transport (default):
  let transport = newStdioTransport()
  transport.serve(server)
  
  # Or use HTTP transport:
  # let transport = newMummyTransport(8080, "127.0.0.1")
  # transport.serve(server)
  
  # Or use WebSocket transport for real-time communication:
  # let transport = newWebSocketTransport(8080, "127.0.0.1")
  # transport.serve(server)

就是这样!您的MCP服务器已准备好运行。

核心概念

工具

工具是LLM应用程序可以调用的函数。用以下方式定义它们 mcpTool 宏,从您的 程序签名和文件注释:

mcpTool:
  proc calculate(expression: string): string =
    ## Perform mathematical calculations
    ## - expression: Mathematical expression to evaluate
    # Your calculation logic here
    return "Result: 42"

上下文感知与常规工具

NimCP还支持上下文感知工具,这些工具还可以接收服务器上下文以访问服务器状态和请求信息:

# Context aware tools need to have first parameter being an McpRequestContext
mcpTool:
  proc notifyTool(ctx: McpRequestContext, args: JsonNode): McpToolResult =
    ## Log request and track processing
    ctx.info("Processing notification request")
    
    # Your notification logic here
    let message = args.getOrDefault("message", %"").getStr()
    
    ctx.info("Notification processing complete")
    return McpToolResult(content: @[createTextContent("Notification: " & message)])

何时使用上下文感知工具:

  • 服务器发起的事件
  • 访问服务器配置或传输特定功能
  • 自定义日志记录或中间件集成
  • 请求特定状态管理

手动注册方法:

  • server.registerTool(tool, handler) -常规工具
  • server.registerToolWithContext(tool, handler) -上下文感知工具
  • 同样的模式适用于资源和提示

资源

资源提供LLM应用程序可以读取的数据:

mcpResource("data://config", "Configuration", "Application configuration"):
  proc get_config(uri: string): string =
    return readFile("config.json")

提示

提示是LLM交互的可重用模板:

mcpPrompt("code_review", "Code review prompt", @[
  McpPromptArgument(name: "language", description: some("Programming language")),
  McpPromptArgument(name: "code", description: some("Code to review"))
]):
  proc review_prompt(name: string, args: Table[string, JsonNode]): seq[McpPromptMessage] =
    let language = args.getOrDefault("language", %"unknown").getStr()
    let code = args.getOrDefault("code", %"").getStr()
    
    return @[
      McpPromptMessage(
        role: System,
        content: createTextContent(&"Review this {language} code for best practices and potential issues.")
      ),
      McpPromptMessage(
        role: User,
        content: createTextContent(code)
      )
    ]

手动创建服务器

为了更好地控制,您可以手动创建服务器:

import nimcp

let server = newMcpServer("advanced-server", "2.0.0")

# Register tools manually
let tool = McpTool(
  name: "custom_tool",
  description: some("A custom tool"),
  inputSchema: %*{"type": "object"}
)

proc customHandler(args: JsonNode): McpToolResult =
  return McpToolResult(content: @[createTextContent("Custom result")])

server.registerTool(tool, customHandler)

# Run the server
try:
  let transport = newStdioTransport()
  transport.serve(server)
finally:
  server.shutdown()

服务器组成

NimCP支持将多个服务器组成一个接口,非常适合API网关:

import nimcp, nimcp/composed_server

# Create individual servers using macro API
let calculatorServer = mcpServer("calculator-service", "1.0.0"):
  mcpTool:
    proc add(a: float, b: float): string =
      ## Add two numbers together
      return fmt"Result: {a + b}"

let fileServer = mcpServer("file-service", "1.0.0"):
  mcpTool:
    proc readFile(path: string): string =
      ## Read contents of a file
      try:
        return readFile(path)
      except IOError as e:
        return fmt"Error reading file: {e.msg}"

# Compose them into a single gateway
let apiGateway = newComposedServer("api-gateway", "1.0.0")

# Mount each service with prefixes for namespacing
apiGateway.mountServerAt("/calc", calculatorServer, some("calc_"))
apiGateway.mountServerAt("/files", fileServer, some("file_"))

# Run the composed server
let transport = newStdioTransport()
transport.serve(apiGateway)

# Tools are now available as: calc_add, file_readFile

错误处理

NimCP会自动处理JSON-RPC错误,但您可以在处理程序中抛出异常:

mcpTool:
  proc validate(data: string): string =
    ## Validate input data
    if data.len == 0:
      raise newException(ValueError, "Empty data parameter")
    return "Valid!"

例子

看看 examples/ 有关综合示例的目录,请参阅 示例README 了解更多信息。

仅从命令行,您就可以使用以下示例测试和列出工具:

echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}' | ./examples/calculator_server

如果您使用的是Claude Code,以下是将其添加为MCP服务器的方法:

  1. 将MCP服务器添加到Claude代码中:
claude mcp add basic_calculator --transport stdio $PWD/examples/basic_calculator
  1. 验证是否已添加:
claude mcp list
  1. 在Claude Code中测试服务器:

添加后,您应该能够在Claude Code对话中直接使用计算器工具:

  • add:将两个数字相加
  • 乘法:将两个数字相乘
  • 幂:计算指数
  • math://constants:访问数学常量资源

Claude Code中的示例用法:

  • “你能给我加15和27吗?”
  • “12的幂是3的幂吗?”
  • “给我看看数学常数”

如果CLI方法不起作用,您可以手动编辑MCP配置文件(通常位于~/.claude.json)。就 更改路径 到你所拥有的:

{
  "mcpServers": {
    "calculator_server": {
      "type": "stdio",
      "command": "/path/to/examples/calculator_server",
      "args": [],
      "env": {}
    }
  }
}

测试

运行测试套件:

nimble test

贡献

欢迎投稿!请随时提交拉取请求。

许可证

MIT许可证。看 许可证 了解详情。

MCP资源

目录标签

目录标签

服务器开发Claude模型集成Nim本地部署宏驱动APIMCP协议LLM集成JSON-RPC

支持客户端

Claude

接入字段

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

未说明

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

none

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

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

0

权限和风险

未说明none部署方式未说明

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

安装前确认

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

仍需确认:installCommand

来源信息

继续浏览同类 MCP