字符计数工具

一个简单的MCP服务器示例,用于计算文本中的字符数量,适用于教学和开发测试。

  • by nanocentury-ai
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 stefanjwojcik/supersimpleMCP

使用说明

简单MCP字符计数器

用于教学目的的最小模型上下文协议(MCP)服务器。此服务器提供了一个计算单词或短语中字符数的单一工具。

什么是MCP?

模型上下文协议(MCP)是人工智能助手(如克劳德)与外部工具和数据源交互的标准化方式。这个简单的例子演示了构建MCP服务器的核心概念。

特性

本教学示例包括:

  • 一个简单的工具: count_characters -统计文本中的字符数
  • 清晰的文件:每个功能和概念都得到了解释
  • 最小依赖性:只需要MCP Python SDK

设置

1.安装依赖项

python3 -m venv venv
source venv/bin/activate

或直接安装:

python -m pip install -r requirements.txt

2.测试服务器

您可以直接运行服务器以确保其正常工作:

python server.py

服务器将启动并等待通过stdin输入。你可以按 Ctrl+C 阻止它。

使用Claude Desktop

要将此MCP服务器与Claude Desktop一起使用,您需要将其添加到Claude的配置文件中。

python server.py

服务器将启动并等待通过stdin输入。你可以按 Ctrl+C 阻止它。

使用Claude Desktop

要将此MCP服务器与Claude Desktop一起使用,您需要将其添加到Claude的配置文件中。

快速配置

包含一个即用型配置文件: claude_desktop_config.json

选项1:复制整个配置(如果没有其他MCP服务器)

# MacOS
cp claude_desktop_config.json ~/Library/Application\ Support/Claude/claude_desktop_config.json

# Windows (PowerShell)
Copy-Item claude_desktop_config.json $env:APPDATA\Claude\claude_desktop_config.json

选项2:与现有配置合并(如果您有其他MCP服务器)

  1. 打开您的Claude Desktop配置文件:

    • MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • 视窗: %APPDATA%\Claude\claude_desktop_config.json
  2. 添加 simple-character-counter 进入您现有的 mcpServers 章节:

{
  "mcpServers": {
    "simple-character-counter": {
      "command": "python",
      "args": ["/Users/electron/workspace/Nanocentury AI/NIO-MCPs/supersimpleMCP/server.py"]
    }
  }
}

备注:更新中的路径 args 如果将此文件夹移动到其他位置。

  1. 重新启动克劳德桌面

  2. 该工具现在将可用!你可以要求克劳德:

    • “统计‘hello’中的字符数”
    • “《MCP太棒了》中有多少个角色?”
    • “在此文本上使用字符计数器:…”

运作原理

服务器结构

服务器有三个主要部分:

  1. 服务器实例 (app = Server(...)):创建MCP服务器
  2. 工具定义 (@app.list_tools()):描述可用的工具
  3. 工具处理程序 (@app.call_tool()):调用时执行工具

字符计数器工具

当你让克劳德数字符时:

  1. 克劳德看到了 count_characters 工具可用
  2. Claude用你的文本调用该工具
  3. 服务器使用以下方式对字符进行计数 len(text)
  4. 服务器返回格式化的响应
  5. 克劳德与您分享结果

代码走读

关键组件

# Create the server
app = Server("simple-character-counter")

# Define available tools
@app.list_tools()
async def list_tools() -> list[Tool]:
    return [Tool(...)]

# Handle tool execution
@app.call_tool()
async def call_tool(name: str, arguments: Any) -> list[TextContent]:
    # Your tool logic here
    pass

# Start the server
async def main():
    async with stdio_server() as (read_stream, write_stream):
        await app.run(read_stream, write_stream, ...)

学习要点

这个例子教我们:

  1. MCP服务器基础知识:如何创建和运行MCP服务器
  2. 工具定义:如何定义具有名称、描述和输入模式的工具
  3. 工具执行:如何处理工具调用并返回结果
  4. JSON 模式:如何指定工具的输入参数
  5. 异步Python:MCP中使用的基本异步/等待模式

扩展此示例

尝试修改此服务器以练习:

  • 添加新工具(例如。, count_words, reverse_text)
  • 向现有工具添加更多参数
  • 返回不同格式的输出
  • 为边缘情况添加错误处理

故障排除

服务器无法在Claude Desktop中启动:

  • 检查到的完整路径 server.py 是正确的
  • 确保您已安装了要求
  • 配置更改后重新启动Claude Desktop

工具未出现:

  • 验证JSON配置是否有效(无语法错误)
  • 检查Claude的开发人员日志中的错误消息

资源

许可证

这是一个教学示例,您可以根据需要自由使用和修改!