一个开源的MCP服务器,使AI助手能够通过Motion API进行智能任务和项目管理交互。
创建这个Motion MCP服务器的主要动机是无缝集成强大的AI助手(如Claude Desktop、Cursor等)与Motion的强大任务和项目管理能力(https://www.usemotion.com/)。通过MCP工具暴露Motion的API,用户可以使用自然语言与他们偏好的AI助手交流来管理他们的任务、项目和日程。这弥合了对话式AI与结构化个人/团队生产力之间的差距,旨在实现更直观和高效的流程。
此MCP服务器专为AI助手设计,特别关注交换的数据量和相关性。与API交互通常会导致冗长的响应,可能会用不立即有用的信息淹没AI的上下文窗口。为了解决这个问题,服务器采用了多种策略以提高令牌效率:
合理的默认值: 对于大多数用于检索数据的工具(如获取任务或项目),服务器返回一组精心挑选的默认字段。这些默认值被选中以提供最常用的信息,确保您获得关键细节而不必担心不必要的杂乱。
用户控制的特定性: 虽然默认值很有帮助,但您始终处于控制之中。如果您需要更多(或不同)的信息,您可以指示您的AI助手请求Motion API中的特定字段。这可以从请求几个额外的细节到请求某个项目的完整数据集。这种灵活性确保您在需要时得到所需的确切信息。
复杂数据的智能处理: 服务器采用智能处理复杂的数据结构,如项目列表或嵌套信息。例如:
YYYY-MM-DD格式。manager.name)或默认简化。总体目标是在尊重AI助手操作约束的同时,从您的Motion工作区传递丰富而有信息量的数据。这使得交互更加流畅、快速,并专注于真正影响您工作流程的信息。
Motion(https://www.usemotion.com/)是一个由AI驱动的平台,旨在统一和自动化任务管理、项目规划和日历安排。与本MCP服务器相关的关键方面包括:
此MCP服务器允许AI助手利用这些功能,使用户能够通过自然语言与其Motion任务和日程进行互动。
按照以下步骤设置并运行Motion MCP服务器:
克隆仓库:
git clone <your_repository_url_here> # 替换为实际的URL
cd motion_mcp_server
Node.js版本(对于better-sqlite3至关重要):
该项目使用better-sqlite3,这是一个原生的Node.js模块。原生模块针对特定的Node.js应用程序二进制接口(ABI)版本编译,标识符为NODE_MODULE_VERSION。
NODE_MODULE_VERSION 120)安装依赖项(npm install),然后尝试使用另一个与ABI不兼容的Node.js版本(例如Claude Desktop经常使用的Node.js v18.x,NODE_MODULE_VERSION 108)运行服务器,您将遇到ERR_DLOPEN_FAILED错误。错误消息通常指出模块“是针对不同的Node.js版本编译的”。nvm或nvs)在继续下一步之前安装并切换到本地终端中的相同Node.js版本。
# 示例使用nvm如果Claude Desktop使用Node v18.19.0
nvm install 18.19.0
nvm use 18.19.0
# 示例使用nvm如果Cursor是目标客户端(并且需要v21.1.0)
nvm install 21.1.0
nvm use 21.1.0
安装依赖项: 在您的终端使用正确的Node.js版本后,安装依赖项:
npm install
这一步安装并针对您的活动Node.js版本编译better-sqlite3。
重要: 如果您后来为了其他项目在本地切换Node.js版本,您可能需要重新构建better-sqlite3以便此项目再次与MCP客户端一起工作。您可以通过运行npm rebuild better-sqlite3 --update-binary或删除node_modules并再次运行npm install(同时使用正确的Node.js版本)来完成此操作。
配置API密钥:
服务器期望名为MOTION_API_KEY的环境变量中包含Motion API密钥。
export MOTION_API_KEY="your_motion_api_key_here"
将"your_motion_api_key_here"替换为您实际的Motion API密钥。启动服务器: 服务器通常会在您调用其中一个工具时由MCP客户端自动启动。
npx tsx(推荐):
如果您想直接运行服务器(例如,用于MCP Inspector),确保您位于项目根目录,并且您的活动Node.js版本与npm install使用的版本匹配。
npx tsx main.ts
tsx是一个实用程序,可直接执行TypeScript文件。如果您以前没有使用过它,您可能需要安装它或使用ts-node。npm start(如果已配置):
如果您的package.json有一个类似"start": "tsx main.ts"的启动脚本,您可以使用:
npm start
@modelcontextprotocol/inspector是一个有价值的工具,可用于本地测试和调试MCP服务器。它允许您查看客户端(如Inspector的Web UI)与您的MCP服务器之间的通信。
确保您的服务器已在MCP客户端配置文件中配置(推荐):
使用Inspector最简单的方法是将其指向现有MCP客户端配置文件,其中您的motion服务器已经定义(如“与Claude Desktop的使用”部分所述)。例如,使用您的Claude Desktop配置:
npx @modelcontextprotocol/inspector --config "/path/to/your/Claude/claude_desktop_config.json" --server motion
"/path/to/your/Claude/claude_desktop_config.json"替换为您的Claude Desktop配置文件的实际路径。--server motion标志告诉Inspector专门代理配置文件中的“motion”服务器。无需完整配置文件使用MCP Inspector(替代方案):
虽然可能,但这更复杂,因为您需要直接通过命令行参数向Inspector提供所有服务器参数(命令、参数、环境变量)。如果您已经在像Claude Desktop这样的客户端中定义了服务器,使用上述的--config和--server标志更简单。
访问Inspector:
启动后,MCP Inspector将输出一个URL(通常是http://127.0.0.1:6274),您可以在浏览器中打开。在那里,您可以选择您的“motion”服务器,查看其可用工具,并进行调用来测试其响应和行为,包括速率限制。
使用Inspector的重要注意事项:
npm install(用于better-sqlite3)时活跃的Node.js版本与MCP Inspector启动服务器时使用的版本相同。如果MCP Inspector使用不同的系统Node.js,您可能会遇到NODE_MODULE_VERSION不匹配的问题。您通常可以在启动日志中看到Inspector用于启动您的服务器的命令。MOTION_API_KEY必须正确设置在claude_desktop_config.json中服务器定义的env部分,以便Inspector将其传递给您的服务器。要将此Motion MCP服务器与Claude Desktop一起使用:
找到您的Claude Desktop配置文件。 这通常位于:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json~/.config/Claude/claude_desktop_config.json编辑claude_desktop_config.json文件。 在mcpServers部分添加或更新条目以包含“motion”服务器。
重要:
"/path/to/your/motion_mcp_server/main.ts"替换为您的克隆存储库中main.ts文件的绝对路径。"YOUR_MOTION_API_KEY_HERE"替换为您的实际Motion API密钥。{
"mcpServers": {
"motion": {
"command": "npx",
"args": [
"tsx",
"/path/to/your/motion_mcp_server/main.ts" // <-- 重要:更改此路径
],
"env": {
"MOTION_API_KEY": "YOUR_MOTION_API_KEY_HERE" // <-- 重要:更改此密钥
}
}
}
}
重启Claude Desktop。 保存配置文件后,您必须完全退出并重新启动Claude Desktop以使更改生效。
配置并重启后,Claude应该能够调用Motion工具(例如,“motion get_tasks”)。
一些AI客户端和应用程序仅支持服务器发送事件(SSE)或流式HTTP连接,而不是标准的MCP stdio协议。对于这些客户端,您可以使用mcp-proxy服务器来桥接您的HTTP/SSE客户端与此Motion MCP服务器之间的连接。
在继续之前,请确保已完成此Motion MCP服务器的基本设置步骤,包括:
MOTION_API_KEYmcp-proxy服务器充当桥梁,将HTTP/SSE请求转换为与此Motion服务器的MCP stdio通信。
使用uv安装mcp-proxy:
uv tool install git+https://github.com/sparfenyuk/mcp-proxy
验证安装并定位二进制文件: 对于不太技术的用户,可以使用以下命令查找安装路径:
which mcp-proxy
这将输出mcp-proxy二进制文件的完整路径(例如,/home/user/.local/bin/mcp-proxy)。
使用您的Motion API密钥和此服务器main.ts文件的路径启动代理服务器:
/path/to/mcp-proxy --port 8080 --env MOTION_API_KEY "your_motion_api_key_here" npx tsx /path/to/your/motion_mcp_server/main.ts
重要替换:
/path/to/mcp-proxy替换为which mcp-proxy命令的实际路径"your_motion_api_key_here"替换为您的实际Motion API密钥/path/to/your/motion_mcp_server/main.ts替换为此服务器main.ts文件的实际绝对路径示例:
/home/user/.local/bin/mcp-proxy --port 8080 --env MOTION_API_KEY "mt_abc123xyz789" npx tsx /home/user/projects/motion-mcp-server/main.ts
一旦代理服务器运行,根据您的客户端支持的连接类型进行配置:
在客户端的MCP配置文件中添加以下配置:
{
"mcpServers": {
"motion-mcp": {
"type": "mcp",
"url": "http://localhost:8080/mcp",
"note": "通过HTTP代理的Motion MCP服务器"
}
}
}
在客户端的MCP配置文件中添加以下配置:
{
"mcpServers": {
"motion-sse": {
"type": "sse",
"url": "http://localhost:8080/sse",
"note": "通过SSE代理的Motion MCP服务器"
}
}
}
您可以使用MCP Inspector工具测试您的代理设置:
创建一个测试配置文件(例如,mcp-test-config.json),其中包含上述配置之一。
运行Inspector:
npx @modelcontextprotocol/inspector --config /path/to/mcp-test-config.json --server motion-mcp
(如果测试SSE配置,则使用--server motion-sse)
访问Inspector: 打开Inspector提供的URL(通常是http://127.0.0.1:6274)在浏览器中测试通过代理的Motion工具。
保持代理运行: mcp-proxy服务器必须在您的客户端使用Motion MCP服务器期间持续运行。如果停止代理,您的客户端将失去与Motion工具的连接。
端口冲突: 如果端口8080已被占用,请选择不同的端口(例如,--port 8081)并相应地更新客户端配置URL。
速率限制: 使用代理时相同的速率限制规则适用。无论连接方法如何,Motion API的每3分钟12次调用限制都会被强制执行。
安全性: 代理服务器在本地运行并公开HTTP端点。确保您的防火墙设置符合您的安全需求。
值得注意的是,Zapier也提供了Motion的MCP集成,可以在https://zapier.com/mcp/motion找到。这允许用户通过Zapier平台将AI助手连接到Motion,利用其广泛的现有应用程序连接。
关键差异和考虑因素:
据我们所知,除了Zapier提供的服务之外,此仓库提供了一个独特的、开源的MCP服务器,专门针对与Motion API的直接集成。
此服务器实现了自动速率限制,以防止超过Motion API的限制,即每3分钟滚动窗口内12次调用。速率限制器:
.data/motion_api_ratelimit.sqlite)跨服务器重启持久保存速率限制状态。当您使用此MCP服务器与AI助手(如Claude Desktop或Cursor