Token导航 LogoToken导航

MCP Server · AI代理

niMCP (Gokr)

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

未说明官方级别未说明来源级核验工具 0
服务器开发Claude模型集成

快速开始

公开资料没有提供安装命令,按仓库或官方文档接入。
作者 / 组织
gokr
提供方
gokr

工具数量

0

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

19

仓库热度

收录来源

1 个

MCP World

选型结论

niMCP (Gokr) 属于AI代理类 MCP Server,公开资料标注 0 个工具,通过传输方式未标注接入,适配 Claude,没有现成的安装命令;接入前先确认权限范围。

分类

AI代理

传输方式

未说明

认证方式

无需认证

部署方式

公开资料未说明

安装与配置

公开目录没有给出安装命令,需要按仓库 README安装;下面按同类条目的通用流程说明。

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    先确认运行方式

    公开资料没有标注传输方式,先看仓库 README,确认是本地进程还是远程地址。

  2. 2

    获取服务

    公开目录没有给出安装命令,按仓库 README里的步骤安装或获取服务。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 0 个工具,随便调一个只读工具确认能返回结果。

接入前确认

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

公开资料仍需确认:安装命令

详细介绍

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

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资源

工具与能力

工具数量

0

资源数量

0

提示词数量

0

能力标签

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

支持客户端

Claude

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

多步任务编排

把拆解、检索、执行串成一条链,模型按步骤调用工具。

长期上下文

把会话、笔记和知识放到外部存储,换个会话还能接着做。

接自有流程

把内部系统和模型连起来,让助手调用已有的工作流。

选择建议

值得选的地方

  • 只提供 0 个工具,职责集中,接入后不容易误操作。
  • 公开说明写得比较完整,接入前能看清能力边界。

先想清楚的地方

  • 公开资料没有可直接复制的安装命令,第一次接入要自己找入口。
  • 公开摘要偏短,具体能力和限制要回到仓库确认。
  • 第三方目录整理,版本更新和行为细节以官方仓库为准。

更适合

  • 需要在AI代理场景里让模型直接调用外部能力的人。
  • 已经在用 Claude 的用户,接入路径最短。
  • 愿意照着官方文档一步步配环境的人。

不太适合

  • 希望一条命令就装好、不想看文档的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
niMCP (Gokr)

MCP World · 本页

0未说明未标注1 个2026-05-17
Everything Claude Code

MCP World

0stdio有1 个2026-05-17
Filesystem 560c4363

MCP World

13未说明未标注2 个2026-05-17
Time 7365cb6d

MCP.so

2SSE有2 个2026-05-17
Server Everything (everything)

MCP World

11stdio有1 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

niMCP (Gokr) 怎么安装?

公开目录没有给出可以直接复制的安装命令,需要按仓库 README里的步骤安装;装好后写进客户端的 MCP 配置再重启。

niMCP (Gokr) 怎么在 Claude Desktop、Cursor 里配置?

它是传输方式未标注,客户端配置里要写启动命令和参数,运行环境是 未标注;保存后完全退出客户端再打开,配置才会生效。

niMCP (Gokr) 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

niMCP (Gokr) 需要 API Key 吗?

公开资料标注为无需认证,装好就能连;如果实际调用时报鉴权错误,按官方文档补上凭据。

niMCP (Gokr) 支持哪些客户端?

公开资料标注支持 Claude;其他客户端只要能配置 MCP Server,也能用同样的命令或地址接入。

来源信息

继续浏览同类 MCP