简单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.txt2.测试服务器
您可以直接运行服务器以确保其正常工作:
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服务器)
- 打开您的Claude Desktop配置文件:
- MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json - 视窗: %APPDATA%\Claude\claude_desktop_config.json
- 添加
simple-character-counter进入您现有的mcpServers章节:
{
"mcpServers": {
"simple-character-counter": {
"command": "python",
"args": ["/Users/electron/workspace/Nanocentury AI/NIO-MCPs/supersimpleMCP/server.py"]
}
}
}备注:更新中的路径 args 如果将此文件夹移动到其他位置。
- 重新启动克劳德桌面
- 该工具现在将可用!你可以要求克劳德:
- “统计‘hello’中的字符数” - “《MCP太棒了》中有多少个角色?” - “在此文本上使用字符计数器:…”
运作原理
服务器结构
服务器有三个主要部分:
- 服务器实例 (
app = Server(...)):创建MCP服务器 - 工具定义 (
@app.list_tools()):描述可用的工具 - 工具处理程序 (
@app.call_tool()):调用时执行工具
字符计数器工具
当你让克劳德数字符时:
- 克劳德看到了
count_characters工具可用 - Claude用你的文本调用该工具
- 服务器使用以下方式对字符进行计数
len(text) - 服务器返回格式化的响应
- 克劳德与您分享结果
代码走读
关键组件
# 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, ...)学习要点
这个例子教我们:
- MCP服务器基础知识:如何创建和运行MCP服务器
- 工具定义:如何定义具有名称、描述和输入模式的工具
- 工具执行:如何处理工具调用并返回结果
- JSON 模式:如何指定工具的输入参数
- 异步Python:MCP中使用的基本异步/等待模式
扩展此示例
尝试修改此服务器以练习:
- 添加新工具(例如。,
count_words,reverse_text) - 向现有工具添加更多参数
- 返回不同格式的输出
- 为边缘情况添加错误处理
故障排除
服务器无法在Claude Desktop中启动:
- 检查到的完整路径
server.py是正确的 - 确保您已安装了要求
- 配置更改后重新启动Claude Desktop
工具未出现:
- 验证JSON配置是否有效(无语法错误)
- 检查Claude的开发人员日志中的错误消息
资源
许可证
这是一个教学示例,您可以根据需要自由使用和修改!
