# mcp_client_api **Repository Path**: konger520/mcp_client_api ## Basic Information - **Project Name**: mcp_client_api - **Description**: 这是一个mcp中转服务,用于将mcp提供的工具封装成api,适用于一些没有自带mcp连接的场景,比如coze工作流或者n8n工作流中 - **Primary Language**: TypeScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-22 - **Last Updated**: 2025-12-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MCP 中转服务 (MCP Middleware Service) 本项目实现了一个基于 Node.js 的 Model Context Protocol (MCP) 中转服务。这是一个 MCP 中转服务,用于将 MCP 提供的工具封装成 API,适用于一些没有自带 MCP 连接的场景(比如 Coze 工作流或者 n8n 工作流中)。它允许你通过统一的 HTTP API 连接并与各种 MCP 服务器(如 Obsidian、Filesystem 等)进行交互。 ## 功能特性 - **列出工具 (List Tools)**: 连接到配置的 MCP 服务器并列出所有可用工具。 - **执行工具 (Execute Tool)**: 在已连接的 MCP 服务器上执行指定的工具。 - **自动服务器管理**: 使用 `npx` 或标准命令按需启动 MCP 服务器。 - **环境变量支持**: 支持在请求配置中传递必要的环境变量(如 API 密钥等)。 - **多协议支持**: 支持 `stdio`(标准输入/输出)和 `sse`(服务器发送事件)传输协议。 ## 前置要求 - Node.js (推荐 v18 或更高版本) - `npm` ## 安装说明 1. 安装依赖: ```bash npm install ``` 2. 编译项目: ```bash npm run build # 或者 npx tsc ``` ## 运行服务 启动服务器: ```bash npm start ``` 服务器默认将在 `3030` 端口启动。 ## API 使用指南 ### 1. 列出工具 (`POST /list_tools`) 获取指定 MCP 服务器上可用的所有工具列表。 **接口地址:** `http://localhost:3030/list_tools` **请求方法:** `POST` **Content-Type:** `application/json` **请求体示例:** ```json { "mcp-config": { "mcpServers": { "obsidian-mcp-server": { "command": "npx", "args": ["obsidian-mcp-server"], "env": { "OBSIDIAN_API_KEY": "your-api-key", "OBSIDIAN_BASE_URL": "http://localhost:37123", "OBSIDIAN_VERIFY_SSL": "false" } }, "filesystem": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "."], "env": {} } } } } ``` ### 2. 执行工具 (`POST /execute_tool`) 在配置的服务器之一上执行特定工具。 **接口地址:** `http://localhost:3030/execute_tool` **请求方法:** `POST` **Content-Type:** `application/json` **请求体示例:** ```json { "mcp-config": { "mcpServers": { "obsidian-mcp-server": { "command": "npx", "args": ["obsidian-mcp-server"], "env": { "OBSIDIAN_API_KEY": "your-api-key", "OBSIDIAN_BASE_URL": "http://localhost:37123" } } } }, "tool_name": "append_content", "tool_params": { "filepath": "Daily/Note.md", "content": "Hello via MCP!" } } ``` ### 3. SSE 连接配置 (SSE Connection) 连接到远程 SSE 服务器时,可以使用 `url` 字段。如果需要身份验证,可以使用 `headers` 字段。 **示例:** ```json { "mcp-config": { "mcpServers": { "remote-server": { "url": "http://remote-server.com/sse", "headers": { "Authorization": "Bearer your-token" } } } } } ``` ## 技术实现 本项目使用 **Node.js** 和 **TypeScript** 构建,并采用了官方的 `@modelcontextprotocol/sdk`。 **为什么选择 Node.js?** - Node.js 的官方 MCP SDK 成熟且支持完善。 - Node.js 在处理 I/O 和进程管理(stdio)方面非常高效,这对与本地 MCP 服务器通信至关重要。 - `eventsource` 库提供了强大的 SSE (Server-Sent Events) 支持。 ## 项目结构 - `src/index.ts`: 主要应用程序逻辑。 - `dist/`: 编译后的 JavaScript 文件。 - `examples/`: 示例测试脚本。 ## 注意事项 - 如果使用 `npx` 命令,请确保 `npx` 已在您的系统 PATH 环境变量中。 - 该服务充当 MCP 服务器的客户端,以子进程的形式启动它们。