mcpField
M
Medium MCP API Server

Medium MCP API Server

ローカル
github.com/jignesh88開発ツール684 週間前に更新

Medium MCP API Server について

Medium MCP API Serverは、外部アプリからMediumの投稿やアカウントを管理するサービスです。下書き、予約公開、画像アップロードに対応します。

主な機能

  1. 01Medium OAuthとプロフィール管理
  2. 02Markdown・HTMLでの投稿
  3. 03下書き管理と予約公開
  4. 04タグとpublicationへの対応
  5. 05画像アップロードと書式処理

活用シーン

  1. 01アプリからMediumの記事を投稿
  2. 02下書きを保存して公開予約
  3. 03記事用の画像をアップロード
  4. 04Mediumアカウントの管理

MCP 対応

MCPクライアントとMedium APIをつなぎ、AIアシスタントに投稿やアカウント管理機能を提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Medium MCP API サーバー

Medium の API と統合し、外部アプリケーションからシームレスにコンテンツを公開したり、ユーザーアカウントを管理したりできる Model Context Protocol(MCP)サーバーです。Model Context Protocol は、AI モデルが外部サービスや API と連携するための標準化された方法を提供します。このサーバーは、AI アシスタントと Medium の公開プラットフォームをつなぐ橋渡し役として機能します。

🚀 機能

  • 認証とユーザー管理

    • 安全な Medium OAuth 統合
    • JWT ベースの認証
    • ユーザープロフィール管理
  • コンテンツの公開

    • Markdown および HTML 形式のコンテンツに対応
    • 下書きの作成と管理
    • 投稿のスケジュール設定
    • 公開機能との統合
    • タグとカテゴリーに対応
  • メディア管理

    • 画像のアップロードと保存
    • コンテンツの書式設定ユーティリティ
  • 信頼性とパフォーマンス

    • Redis ベースのキャッシュ
    • 投稿公開のジョブスケジューリング
    • 包括的なエラー処理
    • レート制限

📋 要件

  • Node.js 16+
  • MongoDB
  • Redis(任意ですが、スケジュール設定には推奨)
  • Medium API の認証情報

🛠️ インストール

Docker を使用する(推奨)
  1. リポジトリをクローンします:

    git clone https://github.com/jignesh88/medium-mcp-api.git
    cd medium-mcp-api
    
  2. サンプルを基に .env ファイルを作成します:

    cp .env.example .env
    
  3. .env ファイルに認証情報を設定します:

    MEDIUM_CLIENT_ID=your_medium_client_id
    MEDIUM_CLIENT_SECRET=your_medium_client_secret
    MEDIUM_REDIRECT_URI=http://your-domain.com/api/auth/medium/callback
    JWT_SECRET=your_strong_secret_key
    
  4. Docker Compose を使用してサービスを起動します:

    docker-compose up -d
    
手動インストール
  1. リポジトリをクローンします:

    git clone https://github.com/jignesh88/medium-mcp-api.git
    cd medium-mcp-api
    
  2. 依存関係をインストールします:

    npm install
    
  3. .env ファイルを作成して設定します

  4. MongoDB サーバーと Redis サーバーを起動します

  5. アプリケーションを起動します:

    npm start
    

🔐 Medium API の設定

  1. https://medium.com/me/applications で Medium の開発者向けアプリケーションを作成します
  2. コールバック URL を http://your-domain.com/api/auth/medium/callback に設定します
  3. Client ID と Client Secret を .env ファイルにコピーします

📚 API ドキュメント

認証エンドポイント
新しいユーザーを登録する
POST /api/auth/register

リクエストボディ:

{
  "email": "[email protected]",
  "name": "John Doe"
}

レスポンス:

{
  "message": "User registered successfully",
  "token": "jwt_token_here",
  "user": {
    "userId": "user_id",
    "email": "[email protected]",
    "name": "John Doe"
  }
}
ログイン
POST /api/auth/login

リクエストボディ:

{
  "email": "[email protected]"
}

レスポンス:

{
  "message": "Login successful",
  "token": "jwt_token_here",
  "user": {
    "userId": "user_id",
    "email": "[email protected]",
    "name": "John Doe",
    "mediumConnected": true
  }
}
Medium アカウントを接続する
GET /api/auth/medium

ヘッダー:

Authorization: Bearer jwt_token_here

レスポンス:

{
  "authUrl": "https://medium.com/m/oauth/authorize?client_id=..."
}
コンテンツ管理エンドポイント
投稿を作成する
POST /api/posts

ヘッダー:

Authorization: Bearer jwt_token_here

リクエストボディ:

{
  "title": "My New Post",
  "content": "# Markdown Content\n\nThis is my post content.",
  "contentFormat": "markdown",
  "tags": ["programming", "tutorial"],
  "publishStatus": "draft",
  "publicationId": "optional_publication_id"
}

レスポンス:

{
  "_id": "post_id",
  "userId": "user_id",
  "title": "My New Post",
  "content": "# Markdown Content\n\nThis is my post content.",
  "contentFormat": "markdown",
  "tags": ["programming", "tutorial"],
  "publishStatus": "draft",
  "createdAt": "2025-03-16T07:00:00.000Z",
  "updatedAt": "2025-03-16T07:00:00.000Z"
}
Medium に投稿を公開する
POST /api/posts/:postId/publish

ヘッダー:

Authorization: Bearer jwt_token_here

レスポンス:

{
  "message": "Post published successfully",
  "post": {
    "_id": "post_id",
    "mediumPostId": "medium_post_id",
    "title": "My New Post",
    "published": true,
    ...
  }
}
ユーザーの投稿を取得する
GET /api/posts?status=draft&page=1&limit=10

ヘッダー:

Authorization: Bearer jwt_token_here

レスポンス:

{
  "posts": [
    {
      "_id": "post_id",
      "title": "My New Post",
      ...
    }
  ],
  "total": 15,
  "page": 1,
  "pages": 2
}
メディア管理
画像をアップロードする
POST /api/media/upload

ヘッダー:

Authorization: Bearer jwt_token_here
Content-Type: multipart/form-data

フォームデータ:

image: [file]

レスポンス:

{
  "message": "File uploaded successfully",
  "filePath": "/uploads/filename.jpg",
  "fileName": "filename.jpg",
  "originalName": "my-image.jpg",
  "mimeType": "image/jpeg",
  "size": 12345
}

🔄 MCP サーバーとの統合

例:Node.js で投稿を公開する
const axios = require('axios');

const API_URL = 'http://your-domain.com';
const TOKEN = 'your_jwt_token';

async function publishPost() {
  try {
    // Create a draft post
    const post = await axios.post(`${API_URL}/api/posts`, {
      title: 'My Awesome Article',
      content: '# Hello Medium\n\nThis is my first post published via the MCP API.',
      contentFormat: 'markdown',
      tags: ['api', 'medium', 'tutorial'],
      publishStatus: 'draft'
    }, {
      headers: {
        'Authorization': `Bearer ${TOKEN}`
      }
    });
    
    // Publish the post to Medium
    const published = await axios.post(`${API_URL}/api/posts/${post.data._id}/publish`, {}, {
      headers: {
        'Authorization': `Bearer ${TOKEN}`
      }
    });
    
    console.log('Post published successfully!', published.data);
  } catch (error) {
    console.error('Error publishing post:', error.response?.data || error.message);
  }
}

publishPost();

📅 公開のスケジュール設定

このサーバーでは、将来の公開に向けて投稿をスケジュール設定できます。投稿を作成または更新する際に、ISO 形式のタイムスタンプを指定した scheduledAt フィールドを含めます。

{
  "title": "Scheduled Post",
  "content": "This will be published automatically.",
  "scheduledAt": "2025-03-20T12:00:00.000Z"
}

Redis が設定されている場合、指定した時刻にサーバーが投稿を自動的に公開します。

🛡️ セキュリティに関する考慮事項

  • 本番環境では必ず HTTPS を使用してください
  • JWT シークレットを定期的にローテーションしてください
  • 適切な監視とログ記録を設定してください
  • 機密データは環境変数または安全な保管庫に保存してください
  • 適切な CORS ポリシーを実装してください

🔧 設定

すべての設定は環境変数を通じて行います。

変数説明必須
PORTサーバーのポート(デフォルト:3000)いいえ
MONGODB_URIMongoDB 接続文字列はい
REDIS_URLRedis 接続文字列いいえ
JWT_SECRETJWT トークン用のシークレットはい
MEDIUM_CLIENT_IDMedium API のクライアント IDはい
MEDIUM_CLIENT_SECRETMedium API のクライアントシークレットはい
MEDIUM_REDIRECT_URIOAuth コールバック URLはい
FRONTEND_URLフロントエンドのリダイレクト先 URLはい

📜 ライセンス

MIT

🤝 貢献

貢献を歓迎します!お気軽にプルリクエストを送ってください。

  1. リポジトリをフォークします
  2. フィーチャーブランチを作成します(git checkout -b feature/amazing-feature)
  3. 変更をコミットします(git commit -m 'Add some amazing feature')
  4. ブランチにプッシュします(git push origin feature/amazing-feature)
  5. プルリクエストを作成します

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。