Skip to main content
Glama
ycagraoglu

Medium MCP

by ycagraoglu

Medium MCP

Kişisel Medium oturumunuz üzerinden Medium makalelerini okumak için hazırlanmış, yerel ve salt-okunur bir MCP sunucusudur.

Bu proje:

  • MCP istemcileriyle stdio üzerinden çalışır.

  • Ayrı bir React uygulaması veya tarayıcı eklentisi kullanmaz.

  • Playwright ile projeye özel kalıcı bir Microsoft Edge profili açar.

  • Medium hesabına Google ile manuel giriş yapılmasını destekler.

  • Google kullanıcı adı, parola veya doğrulama kodlarını okumaz ve saklamaz.

  • Oturumu .data/medium-profile klasöründe yerel olarak saklar.

  • Makale içeriğini Markdown olarak MCP istemcisine döndürür.

Gereksinimler

  • Node.js 20 veya üzeri

  • Microsoft Edge

  • Medium hesabı

Related MCP server: scout

Kurulum

git clone https://github.com/ycagraoglu/medium-mcp.git
cd medium-mcp
npm install
npm run build

Playwright, varsayılan olarak bilgisayarınızda kurulu Microsoft Edge'i msedge kanalıyla kullanır. Ayrı Chromium indirmek gerekmez.

İlk Medium girişi

npm run login

Açılan gerçek Edge penceresinde:

  1. Continue with Google seçeneğine basın.

  2. Google hesabınızla giriş işlemini kendiniz tamamlayın.

  3. İki aşamalı doğrulama çıkarsa normal şekilde tamamlayın.

  4. Medium ana sayfasında hesabınızın açıldığını gördükten sonra terminale dönün.

  5. ENTER tuşuna basın.

Sistem Google girişini otomatikleştirmez. Yalnızca sizin manuel giriş yaptığınız Edge profilini kalıcı olarak tekrar kullanır.

Oturum şu klasörde saklanır:

.data/medium-profile

Bu klasör Git'e gönderilmez. İçinde tarayıcı çerezleri ve yerel oturum bilgileri bulunduğu için paylaşılmamalıdır. Hesap oturumunu sıfırlamak için Edge ve MCP süreçlerini kapattıktan sonra klasörü silebilirsiniz.

MCP istemcisi yapılandırması

Windows yollarında / kullanmak JSON kaçış sorunlarını önler:

{
  "mcpServers": {
    "medium-mcp": {
      "command": "node",
      "args": [
        "C:/Users/ycagr/Music/repos/medium-mcp/dist/index.js"
      ],
      "cwd": "C:/Users/ycagr/Music/repos/medium-mcp"
    }
  }
}

Önce npm run build çalıştırılmış olmalıdır.

MCP araçları

login_to_medium

Medium giriş sayfasını kalıcı Edge profilinde açar. Google ile giriş görünür tarayıcı penceresinde kullanıcı tarafından tamamlanır. İlk kurulum için terminaldeki npm run login komutu daha uygundur.

check_medium_session

Yerel tarayıcı profilindeki Medium oturumunun açık görünüp görünmediğini kontrol eder.

get_medium_article

Bir Medium URL'sini açar, makaleyi mevcut oturumla okur ve Markdown döndürür.

Örnek istek:

Bu Medium makalesini oku ve Türkçe özetle:
https://medium.com/...

search_medium

Medium üzerinde metin araması yapar ve sonuçların başlık, URL, yazar ve kısa açıklamalarını döndürür.

Ortam değişkenleri

Varsayılan Edge yerine Playwright Chromium kullanmak için:

$env:MEDIUM_BROWSER_CHANNEL="chromium"

Arka planda çalıştırmayı denemek için:

$env:MEDIUM_HEADLESS="true"

İlk Google girişi sırasında MEDIUM_HEADLESS kullanılmamalıdır. İlk oturum açıldıktan sonra headless çalışma denenebilir; Medium veya Google davranışı değişirse görünür Edge kullanmak daha güvenilirdir.

Güvenlik ve sınırlar

  • Proje şifre toplamaz veya dış sunucuya göndermez.

  • Google giriş formu doğrudan Google ve Edge arasında çalışır.

  • Medium oturumu yalnızca yerel tarayıcı profilinde tutulur.

  • .data/medium-profile klasörü kişisel ve hassas kabul edilmelidir.

  • Yalnızca https://medium.com ve Medium alt alan adları kabul edilir.

  • Medium arayüzü değişirse DOM seçicilerinin güncellenmesi gerekebilir.

  • Erişim yetkisi olmayan üye içeriklerinin kilidini açmaz; yalnızca hesabınızın görüntüleyebildiği içeriği okur.

Available Tools

4 tools
check_medium_sessionA

Check whether the dedicated Medium browser profile appears to be signed in.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. The term 'check' implies a read-only operation, and 'appears to be signed in' hints at heuristic behavior, but it does not specify return type, side effects (e.g., whether a browser is opened), or what happens if not signed in. The description gives basic transparency but leaves significant behavioral details unstated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that front-loads the main action and resource. It contains no filler or redundant information, making it highly efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple no-parameter tool with no output schema, the description adequately communicates the core function. However, it falls short of specifying the exact return value (e.g., boolean or status string) or any potential side effects, which would enhance completeness. Given the tool's simplicity, the description is nearly sufficient but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the input schema is an empty object. The baseline for 0 parameters is 4, and the description correctly focuses solely on the tool's purpose without needing to document parameter semantics. No additional parameter explanation is required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the verb 'Check' and the target resource 'dedicated Medium browser profile' for session status. It distinguishes itself from sibling tools like login_to_medium (which performs login) and get_medium_article (which fetches content), making its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied: this is a status check to determine if the Medium session is active, likely before login or to verify authentication. However, it does not explicitly state when to use it versus alternatives or provide any preconditions, so guidance is only implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_medium_articleA

Read a Medium article using the locally persisted Medium browser session and return Markdown.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesHTTPS Medium article URL

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden of behavioral disclosure. It correctly identifies the operation as read-only and mentions the output format, but it does not disclose behavior on invalid URLs, paywalled content, or session expiry. The mention of the persisted session adds useful context but not full transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that conveys the action, resource, session dependency, and output format without any wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, no output schema) and the lack of annotations, the description covers the core purpose and output format. It does not mention error cases or interactions with sibling tools, but for a straightforward read operation, this level of completeness is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already has 100% coverage with a clear description of the 'url' parameter. The tool description adds the context of reading and returning Markdown, but does not add significant new meaning to the parameter itself. Baseline of 3 is appropriate given the schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Read' with a clear resource ('a Medium article') and states the output format ('return Markdown'). It clearly distinguishes from sibling tools like search_medium (finding articles) and check_medium_session (session status).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context by specifying it uses the 'locally persisted Medium browser session', implying a prerequisite for the tool to work. However, it stops short of explicitly stating when to use this tool versus alternatives or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

login_to_mediumA

Open Medium's sign-in page in a dedicated persistent Microsoft Edge profile. The user can complete Google sign-in manually in the visible browser window.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It clearly explains that the tool opens a dedicated persistent Microsoft Edge profile, requires manual user action for Google sign-in, and occurs in a visible browser window. This gives the agent a good picture of the interactive, persistent nature of the login. It could add what happens after sign-in (e.g., whether the tool waits or returns success), but this is a minor omission.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no redundant phrasing. The description is front-loaded with the core action and immediately provides key behavioral context (dedicated profile, manual sign-in, visible window). Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple no-parameter tool, the description covers the essential behavior and context well. It lacks information about return values or whether the tool blocks until sign-in is complete, but given the absence of an output schema and the tool's simplicity, it is reasonably complete. An explicit note about not being headless would add completeness, but the visible-browser detail already implies this.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline for this dimension is 4. The description appropriately does not need to add parameter-level detail because there are none.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb (Open) and resource (Medium's sign-in page in a dedicated persistent Microsoft Edge profile), making it clear this is the login/authentication tool. It clearly differentiates from sibling tools (check_medium_session, get_medium_article, search_medium) by focusing on sign-in setup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this is the initial manual login step but does not explicitly state when to use it versus alternatives. It would benefit from saying 'Use this before check_medium_session if the session is not already active' or 'Use this once to establish a persistent login.' No exclusions or alternative tool mentions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_mediumA

Search Medium and return article titles, URLs, authors and excerpts.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYesSearch text

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavior. It mentions the return fields, which is useful, but it does not disclose whether authentication is required, any rate limits, or side effects. The presence of sibling login_to_medium suggests authentication might be relevant, but this is not addressed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that front-loads the action and output, with no redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is adequate for a simple search tool, covering the action and output fields, but it lacks information about authentication requirements and parameter semantics (especially limit), making it incomplete for a tool with no output schema and no annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%—the 'query' parameter has a description, but 'limit' does not. The tool description does not explain the limit parameter's meaning or any parameter-specific behavior, so it does not compensate for the missing schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action ('Search Medium') and the expected output fields (titles, URLs, authors, excerpts). This distinguishes it from the sibling tools like get_medium_article, which fetches a specific article.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool over alternatives, nor does it mention exclusions or prerequisites. It implies a search use-case but lacks explicit guidance referencing sibling tools such as get_medium_article or login_to_medium.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: checking session auth, logging in, fetching an article, and searching. No overlap or ambiguity between them.

Naming Consistency4/5

All names use snake_case and start with a verb (check, login, get, search). 'login_to_medium' is a slight deviation in structure but still follows a clear pattern.

Tool Count5/5

Four tools is well-scoped for a Medium integration focused on authentication, reading, and searching. Each tool serves a necessary function without redundancy.

Completeness4/5

The set covers the core read-only workflow: session management, login, search, and fetching articles. Minor gaps like logout or bookmark listing exist but are not essential for the apparent purpose.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables Google search queries and webpage content extraction through an MCP server deployed on Cloudflare Workers. Supports single and batch webpage content extraction with integrated OAuth authentication.
    1
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server that fetches web pages, extracts clean markdown (reducing token count), caches results, and provides searchable reading history.
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables reading, listing, creating, and editing Microsoft Loop pages as Markdown through browser automation.
    4
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ycagraoglu/medium-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server