项目简介

OpenCog CogServer是一个高性能、多用户、网络化的服务器,专为OpenCog AtomSpace超图数据库设计。它支持通过Telnet和WebSocket接口访问Scheme、Python和JSON命令行,允许网络用户执行代码并操作AtomSpace数据。目前,它正在集成Model Context Protocol (MCP)接口,以期为LLM(大型语言模型)客户端提供上下文服务和功能调用能力。

主要功能点

  • AtomSpace数据库访问: 提供对OpenCog AtomSpace超图数据库的远程访问和管理能力。
  • 多语言命令行支持: 通过Telnet和WebSocket提供Scheme (Guile)、Python和JSON命令行界面,支持用户实时交互和代码执行。
  • WebSocket API: 所有接口(包括Python、Scheme、JSON)均可通过WebSocket访问,方便构建Web前端应用。
  • MCP服务器接口(实验性): 正在开发中的MCP接口,通过JSON-RPC协议允许LLM客户端以标准化方式获取上下文信息、调用工具和管理资源。
  • 会话管理与数据共享: 支持多用户同时访问同一个AtomSpace,并确保线程安全,实现数据共享。
  • 高性能数据传输: 提供高效的数据传输格式,支持网络分布式AtomSpace的构建和数据共享。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/opencog/cogserver
    cd cogserver
  2. 创建构建目录并配置:
    mkdir build
    cd build
    cmake ..
    • 注意: 确保已安装必要的依赖,特别是AtomSpace。对于MCP支持,需要安装'NLohmann JSON'开发环境,例如在Debian/Ubuntu上运行'sudo apt install nlohmann-json3-dev'。
  3. 编译:
    make -j
  4. 安装 (可选,但推荐):
    sudo make install

MCP服务器配置

MCP客户端需要以下信息连接到CogServer的MCP接口:

{
  "name": "cogserver-mcp",
  "command": "/path/to/your/cogserver/build/opencog/cogserver/server/cogserver",
  "args": ["--mcp-port", "19999", "--enable-mcp", "true"]
}
  • name: 'cogserver-mcp' (自定义的服务器名称)
  • command: CogServer可执行文件的完整路径。请将'/path/to/your/cogserver/build/opencog/cogserver/server/cogserver'替换为您实际的路径。
  • args:
    • '--mcp-port 19999': 指定MCP接口监听的端口,此处设置为19999。
    • '--enable-mcp true': 启用MCP服务器功能。
    • 注意:如果需要同时启用其他功能(如控制台、WebSocket),可以在'args'中添加相应参数,例如 '--console-port 17001 --web-port 18080'。

基本使用方法

  1. 启动CogServer (带MCP支持): 通过命令行启动:
    /path/to/your/cogserver/build/opencog/cogserver/server/cogserver --mcp-port 19999 --enable-mcp true
    或者通过Python脚本启动:
    from opencog.atomspace import AtomSpace, set_default_atomspace
    from opencog.type_constructors import ConceptNode, PredicateNode, EdgeLink, ListLink
    from opencog.cogserver import start_cogserver, stop_cogserver
    import time
    
    my_atomspace = AtomSpace()
    set_default_atomspace(my_atomspace)
    
    # 示例:在AtomSpace中添加一些数据
    ConceptNode('Apple')
    PredicateNode('is a')
    EdgeLink(PredicateNode("is a"), ListLink(ConceptNode('Apple'), ConceptNode("fruit")))
    
    print("Starting CogServer with MCP on port 19999...")
    start_cogserver(atomspace=my_atomspace, mcp_port=19999, enable_mcp=True, console_port=17300, web_port=18381)
    
    print("\nCogServer正在运行。LLM客户端可通过MCP连接到 ws://localhost:19999/mcp 或 http://localhost:19999/mcp。")
    print("您也可以通过telnet localhost 17300连接到控制台,然后输入 'py'、'scm' 或 'json'。")
    print("服务器将运行10分钟。按 Ctrl+C 可提前停止。")
    try:
        time.sleep(600) # 保持服务器运行10分钟
    except KeyboardInterrupt:
        print("Stopping server...")
    finally:
        stop_cogserver()
        print("Server stopped.")
  2. 连接MCP客户端: 使用兼容Model Context Protocol (MCP)的LLM客户端连接到上述启动的CogServer的MCP接口,通常是'ws://localhost:19999/mcp'或'http://localhost:19999/mcp'。客户端即可发送MCP请求,例如读取AtomSpace中的资源、调用注册的工具或使用Prompt模板。
  3. 使用Python或Scheme交互 (非MCP): 如果通过'console_port'参数启动了Telnet接口(例如上述示例中的17300),您可以使用'rlwrap telnet localhost 17300'连接,然后输入'py'、'scm'或'json'进入相应的命令行环境,直接操作AtomSpace。

信息

分类

AI与计算