mcpField
C
codemirror-mcp

codemirror-mcp

本地服务
marimo-team.github.io开发工具7913 周前更新

关于 codemirror-mcp

codemirror-mcp 是一个 CodeMirror 扩展,为编辑器实现 MCP 的资源引用与提示词命令功能。适合在 Web 编辑器中集成 MCP 能力的前端开发者使用。

主要功能

  1. 01@resource 引用的自动补全
  2. 02资源引用的可视化样式与点击处理
  3. 03/prompt 命令的自动补全
  4. 04支持自定义主题样式

适用场景

  1. 01在 Web 编辑器中通过 @ 引用 MCP 资源
  2. 02在编辑器中通过 / 调用 MCP 提示词
  3. 03在基于 CodeMirror 的应用中嵌入 MCP 交互

MCP 相关

该项目是一个 MCP 客户端侧组件,通过 MCP SDK 的传输层(如 WebSocket)连接 MCP 服务,并在编辑器中使用其资源与提示词。

配置

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

暂未收录安装方式

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

代码仓库

工具

还没有获取到工具列表

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

详细介绍

codemirror-mcp

一个 CodeMirror 扩展,实现了 Model Context Protocol(MCP),用于资源提及和提示词命令。

功能

  • 资源补全:为 @resource 提及提供自动补全
  • 资源装饰:为 @resource 提及添加视觉样式并支持点击处理
  • 提示词补全:为 /prompt 命令提供自动补全
  • 主题支持:可自定义样式

安装

npm install @marimo-team/codemirror-mcp @modelcontextprotocol/sdk
# or
pnpm add @marimo-team/codemirror-mcp @modelcontextprotocol/sdk
对等依赖

此模块需要以下对等依赖:

  • @codemirror/view
  • @codemirror/state
  • @modelcontextprotocol/sdk

用法

import { WebSocketClientTransport } from "@modelcontextprotocol/sdk/client/websocket.js";
import { mcpExtension, extractResources } from '@marimo-team/codemirror-mcp';
import { EditorView } from '@codemirror/view';

const transport = new WebSocketClientTransport(new URL('ws://localhost:8080'));

const view = new EditorView({
  extensions: [
    // ... other extensions

    mcpExtension({
      // Required options
      transport: transport,

      // Optional options
      logger: console,
      clientOptions: {
        name: 'your-client',
        version: '1.0.0'
      },
      onResourceClick: (resource) => {
        // Open resource
        // e.g. open in a tab, etc.
      },
    }),

    // Handle submit
    keymap.of([
      {
        key: 'Enter',
        run: () => {
          const resources = extractResources(view);
          const formattedResources = resources
            .map(
              ({ resource }) =>
                `${resource.uri} (${resource.type}): ${resource.description || resource.name}`
            )
            .join('\n');
          const prompt = `${view.state.doc.toString()}\n\nResources:\n${formattedResources}`;
          // ... submit prompt to AI server
          // const response = await generateText(prompt);
        },
      },
    ]),
  ],
  parent: document.querySelector('#editor'),
});

资源

  • 使用 @resource-uri 语法引用资源
  • 资源会以视觉样式装饰,并且可以点击
  • 支持处理资源交互的点击事件
  • 悬停提示会显示资源详情
  • 可自定义主题

提示词

  • 使用 /command 语法输入提示词命令
  • 自动补全可用提示词

开发

# Install dependencies
pnpm install

# Run tests
pnpm test

# Run demo
pnpm dev

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

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

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