中型MCP服务器
版本2.0.0 -用于Medium API集成的可生产MCP服务器
概述
Medium MCP(模型上下文协议)服务器使AI助手能够以编程方式与Medium的内容平台进行交互。发布、更新、删除文章、管理草稿等,所有这些都可以通过一个统一的MCP接口实现,该接口具有强大的错误处理和自动重试功能。
🎯 主要特点
- ✅ 完成CRUD操作 -发布、更新、删除和检索文章
- ✅ OAuth 2.0身份验证 -具有自动刷新功能的安全令牌管理
- ✅ 智能重试逻辑 -失败请求的指数回退
- ✅ 费率限制处理 -自动检测和等待
- ✅ 草案管理 -创建、检索和管理草稿
- ✅ 用户配置文件访问 -获取用户信息和出版物
- ✅ 搜索功能 -按关键字和标签查找文章
- ✅ 类型安全 -完全支持TypeScript并进行验证
- ✅ 综合测试 -Jest测试套件,覆盖率92%
🛠️ 技术栈
- TypeScript -类型安全开发
- 模型上下文协议(MCP) -AI助手集成
- 阿西奥斯 -带有拦截器的HTTP客户端
- 黄道 -架构验证
- 开玩笑 -测试框架
🚀 快速开始
先决条件
- Node.js v16或更高版本
- npm或纱线
- 中型账户
安装
# 1. Clone the repository
git clone https://github.com/aliiqbal208/medium-mcp.git
cd medium-mcp-server
# 2. Install dependencies
npm install
# 3. Configure environment
cp .env.example .env
# 4. Get your Medium integration token
# Visit: https://medium.com/me/settings/security
# Scroll to "Integration tokens" → Enter description → Click "Get integration token"
# Add to .env as: MEDIUM_ACCESS_TOKEN=your_token_here
# 5. Build the project
npm run build
# 6. Run the server
npm start发展模式
npm run dev # Hot reload enabled运行测试
npm test # Run all tests
npm run test:watch # Watch mode
npm run test:coverage # With coverage report📚 可用工具
物品管理
publish-article
在Medium上发布一篇新文章。
参数:
title(字符串,必填):文章标题content(字符串,必填):Markdown格式的文章内容tags(string\[\],可选):最多5个标签publishStatus(“公开”|“草稿”|“未列出”,可选):发布状态(默认值:“草稿”)publicationId(字符串,可选):发布到特定出版物notifyFollowers(布尔值,可选):发布时通知关注者
例子:
{
"title": "Getting Started with AI",
"content": "# Introduction\n\nThis is my article about AI...",
"tags": ["ai", "machine-learning", "tech"],
"publishStatus": "public"
}update-article
更新现有文章。
参数:
articleId(string,必填):要更新的文章的IDtitle(字符串,可选):新标题content(字符串,可选):新内容tags(string\[\],可选):新标签publishStatus(“公开”|“草稿”|“未列出”,可选):新状态
delete-article
删除文章或草稿。
参数:
articleId(string,必填):要删除的文章的ID
get-article
获取特定文章的详细信息。
参数:
articleId(string,必填):文章的ID
用户和个人资料
get-user-profile
检索经过身份验证的用户的个人资料信息。
退货: 用户ID、用户名、名称、URL和图像URL。
get-drafts
检索经过身份验证的用户的所有文章草稿。
get-publications
检索用户贡献的所有出版物。
搜索
search-articles
搜索和筛选中等文章。
参数:
keywords(string\[\],可选):搜索关键字publicationId(字符串,可选):按发布筛选tags(string\[\],可选):按标签筛选
🔧 发展
以开发模式运行
npm run dev运行测试
npm test构建项目
npm run build🏗️ 建筑
medium-mcp-server/
├── src/
│ ├── index.ts # MCP server and tool registration (8 tools)
│ ├── auth.ts # OAuth 2.0 & token management with refresh
│ └── client.ts # API client with retry logic & rate limiting
├── tests/
│ ├── auth.test.ts # Authentication tests
│ └── client.test.ts # API client tests
├── .env.example # Environment configuration template
├── .gitignore # Git ignore rules
├── tsconfig.json # TypeScript configuration
├── jest.config.js # Test configuration
└── package.json # Dependencies and scripts🔒 认证
选项1:集成令牌(推荐)
- 访问 中等设置-安全
- 滚动到“集成令牌”
- 输入描述:“MCP服务器”
- 点击“获取集成令牌”
- 增添
.env:MEDIUM_ACCESS_TOKEN=your_token_here
选项2:OAuth(适用于应用程序)
- 注册地址: 中型开发人员
- 获取客户端ID和客户端密码
- 增添
.env:
MEDIUM_CLIENT_ID=your_client_id
MEDIUM_CLIENT_SECRET=your_client_secret
MEDIUM_AUTH_CODE=authorization_code⚡ 详细功能
错误处理
- 指数退避:1秒后自动重试→ 2s → 4s延误
- 速率限制检测:监视API限制并自动等待
- 详细错误消息:清除带有状态代码的错误信息
许可证管理
- 永久存储:令牌保存在
.medium-tokens.json - 自动刷新:自动刷新过期令牌
- 安全:从git中排除的令牌文件
类型安全
- 完整的TypeScript实现
- Zod模式验证
- 全面的接口
🐛 故障排除
身份验证错误
# Verify token is set
cat .env | grep MEDIUM_ACCESS_TOKEN
# Clear stored tokens
rm -f .medium-tokens.json
# Restart server
npm start构建错误
# Clean and rebuild
rm -rf dist node_modules
npm install
npm run build速率限制
客户端自动处理速率限制。检查速率限制状态:
const rateLimitInfo = client.getRateLimitInfo();
console.log(`Remaining: ${rateLimitInfo.remaining}`);📊 v2.0.0的新增功能
添加
- ✅ 带有令牌刷新的真正OAuth 2.0身份验证
- ✅ 更新文章工具
- ✅ 删除文章工具
- ✅ 获取文章详细信息工具
- ✅ 获取用户配置文件工具
- ✅ 获取草稿工具
- ✅ 指数退避重试逻辑
- ✅ 速率限制检测和处理
- ✅ 综合测试套件(Jest)
- ✅ 令牌持久性
增强
- ✅ 发布文章工具(添加状态和通知选项)
- ✅ 更好的错误消息
- ✅ 提高型号安全性
- ✅ 增强文档
🚀 路线图
第二阶段(即将推出)
- 📊 分析和文章统计
- 🖼️ 图像上传支持
- 🔍 高级搜索过滤器
- 🎯 SEO优化工具
- 📝 日程安排草案
第三阶段(未来)
- 🤖 基于人工智能的内容建议
- 📦 批量操作
- 🔄 导入/导出功能
- 👥 协作功能
- 🔔 Webhook支持
🤝 贡献
欢迎投稿!请随时提交拉取请求。
📞 支持
- API中文档: https://github.com/Medium/medium-api-docs
- MCP协议: https://github.com/modelcontextprotocol/sdk
- 问题:为bug或功能请求创建GitHub问题
