Skip to main content
Glama
slider79

Vellum

by slider79

? X12` variable? placeholder. Good.

Need maybe "Notes on writing tools" section "for a model" maybe "モデルが使うツールの作り方" . Good.

Let's write final now. Ensure no code fences around GXP. No extra commentary.

Need output only text translation. Use newlines.

Let's produce:

Vellum

テキストについて正確な答えを返す MCP サーバー · By Shuja Jamal

言語モデル...

... table ...


... etc.

Need decide "MCP" vs "MCP サーバー" use with a space? In Japanese maybe "MCPサーバー" no space. Fine.

Need make sure "About text" "について" and dot.

Need maybe "An MCP server ..." line - The whole bold line includes "MCP" and name. We keep as bold line. Use exactly.

Need "テキストについて正確な答えを返すMCPサーバー · By Shuja Jamal"

Need "By Shuja Jamal" remains in English, because person/label? "By" can be "By" maybe. But "By Shuja Jamal" is prose but original uses English. In Japanese translation would be "作成者 Shuja Jamal" perhaps. But instruction says translate prose. "By" is prose. We can translate to "著者". But the footer also "By". Maybe "著者: Shuja Jamal". Let's use "作成者: Shuja Jamal" in bold text: "テキストについて正確な回答を得るためのMCPサーバー · 作成者: Shuja Jamal". That's natural. The "By" translated. Should we preserve "By" verbatim? It is a common English preposition, not a name. Translate.

Need in final translate footer "By Shuja Jamal, August 2026." -> "Shuja Jamal著、2026年8月。" This is fine.

Need maybe mention "Vellum" top name remains. Good.

Now final content.

But let's still think about "first half" "第二 half" in testing. "The first half calls the analysis functions directly." "前半はanalysis関数を直接呼び出します。"

"First half is direct testing" no issue.

Need "whole shape" "The first half calls the analysis functions directly." Good.

Need "Check the deployments shape": maybe "デプロイの形" ambiguity. "テスト" section says "Check it after deploying before you deploy." Wait title "Testing" and paragraph "Checks the deployed shape before deploying it" (the latest phrase "before deploying it" actually "before deploy."? Original says "Checks the deployed shape before deploying it:" Hmm original "Checks the deployed shape before deploying it: that a rewritten request reaches the MCP app..." Actually "Checks the deployed shape before deploying it" could mean a tool that checks the shape, before deploying. We need translate "デプロイする前に、デプロイした状態のカタチを確認します". That is okay. Maybe "deployment shape" refers the production state. Good.

Need maybe "rewritten request" -> "書き換えられたリクエスト". Good.

Need "when a scan cannot complete" -> "スキャンが完了できない場合". Good.

Need "a static card .well-known/mcp/server-card.json" keep.

Need "In practice the fallback was the primary path." The original "In practice the fallback was the primary path." Good.

Need "publish log" -> "公開ログ". Good.

Need "Note that it does not drive a build" -> "これでビルドが駆動されるわけではない点に注意してください". Good.

Now final with no code fences. Let's start# Vellum

テキストについて正確な答えを与えるMCPサーバー · 作成者: Shuja Jamal

言語モデルはトークンを読み、文字は読みません。段落に何文字あるかを尋ねると、モデルは推測で答え、しかも精度が悪いことがよくあります。2つのファイルを目視で差分したり、正規表現を実行せずに何にマッチするかを予測したりするのも同じです。

これらは難しい問題ではありません。単に、モデルが解くために作られた種類の問題ではないだけです。だからこそ、モデルは問い合わせるべきなのです。

稼働中

vellum-mcp.vercel.app

Smithery

sjshujam/vellum

解説記事

EXPERIENCE.md、このMCPを作る前に既存のMCPを活用した話


Related MCP server: text-stats-ai-mcp

5つのツール

ツール

答えられること

代わりに

count_text

文字数、単語数、行数、文数、バイト数

トークン数からの推測

score_readability

Flesch読解容易度、学年レベル、最長文

印象

diff_texts

united diff、追加・削除された行、類似度

両方を読んで説明すること

test_regex

それぞれの一致、その位置、キャプチャグループ

パターンについて推論すること

hash_text

md5、sha1、sha256、sha512

なし、モデルにはできない

count_text可視文字をコードポイントとは別に報告します。café は人には4文字、len() には5文字、バイトでは6バイトです。どれが欲しいかを知るには理由のあり方次第なので、3つとも返します。


使い方

Claude Code

claude mcp add --transport http vellum https://vellum-mcp.vercel.app/mcp

または、ローカルでstdioで:

claude mcp add vellum -- python -m vellum.server

他人のサーバーをインストールするときに時間を失った話です: セッション中に追加したサーバーは「接続済み」として表示されるが、サーバーを再起動するまでツールは呼び出せません。インストールが成功したことと、実際に使えることは、まったく別の状態です。

Claude Desktop

claude_desktop_config.json に:

{
  "mcpServers": {
    "vellum": {
      "command": "python",
      "args": ["-m", "vellum.server"],
      "cwd": "/path/to/vellum-mcp"
    }
  }
}

実行

pip install -r requirements.txt
python -m vellum.server

これが stdio です。これはローカルのクライアントが話す物です。HTTPトランスポートとランディングページに合わせて:

python -m vellum.server --http --port 8000

次に、ページは http://localhost:8000、エンドポイントは http://localhost:8000/mcp です。


テスト

python tests/test_vellum.py

46件のチェックがあります。前半で分析関数を直接呼び出します。後半が料になる部分です。サーバーをサブプロセスとして起動して、MCPで通信し、実際のハンドシェイクを行い、ツールを一覧し、を呼び出し、結果を読み戻します。関数が正しくても、プロトコルに соответしないサーバーはあり得ます。後半だけがその問題を検出できます。

python tests/test_deploy.py

デプロイ前に、デプロイされた形がデプロイ用に構築したものかを確認しています。書き換えられたリクエストが期待するパスでMCPアプリに届くこと、?action=demo は代わりにデモに届くこと、静的サーバーカードが実際に存在するツールを説明していること、関数が正確に1つであることをランタイムがの構築だけを実行しているかどうかを確認します。


デプロイ

Vercel(ホスティング)

vercel

環境変数や秘密情報はありません。すべてのツールは引数の純粋関数です。

方針は意図的で、また説明する価値があります。というのも、単純な方法は動かないからです。

Vercelのrewriteが、ブラウザが求めたパスをそのまま関数に渡すことはありません。 /(.*) 単一の関数に書き換えるとは、すべてのリクエストが /api/index として届く、つまりパスで振り分けているアプリは自前の404をすべてのURLに対して返すことになります。外部からは、まったく死に見えます。以前のプロジェクトでまさにこの問題が原因で午後を無駄にしました。

それに、Pythonのランタイムはファイルごとではなく、プロジェクト単位で1つの関数を作るのです。 私は api/demo.pyapi/index.py の隣に置き、vercel.json に宣言してデプロイまでして、なお /api/demo で Vercel の404を返しました。vercel inspect でその理由がはっきりします: 単一の Python lambda。複数に分かれたPythonのエントリーポイントへのファイル単位ルーティングはありません。

というわけで、デプロイは次の構成です: 1つの関数と静的ファイル。

/                                  static    public/index.html
/.well-known/mcp/server-card.json  static    generated by build_card.py
/mcp             -> /api/index     function
/api/demo        -> /api/index     function, told apart by ?action=demo

api/index.pyクエリ文字列 で振り分けます。クエリ文字列とは、rewrite がパスを置き換えるさいに保持する部分であり、MCPアプリがパスでルーティングする前に入れ直します。どちらについてもテストがあります。本番 URL で床しい目覚めはするぎますから。

最初から動作運だったのはランディングページで、サーバーカードで、それらは関数に一切触れない、まったく別の2つです。

Smithery、定番の掲載

Smitheryの現在のモデルは、持ち込みホスティングです。公開された HTTPS URL からストリームHTTPサーバーに接続し、そのゲートウェイがそこへプロキシします。ビルドするコンテナはありません。

  1. 先に Vercel にデプロイし、URL を保存する

  2. smithery.ai/new に行く

  3. https://your-deployment.vercel.app/mcp を入力する

  4. 公開フローを完了する

Smitheryはサーバーのツールを読み取り、掲載ページにします。文書化された方法はライブスキャンで、ス至らない場合は /.well-known/mcp/server-card.json にある静的カードに寄ります。

実際には、フォールバックが主な経路でした。 公開ログはこうです:

Server metadata discovered (server card: 5 tools).
Using .well-known/mcp/server-card.json: (5 tools)

つまり、カードはフォールバックの保険ではなく、主要なメカニズムでした。build_card.pyサーバー自身のツール定義から カードを生成するため、存在しないツールを列挙する必要はありませんでした。

ログはまた、 config schema が提供されていなかったことに注意を促しています。それはここでは正しく意図的です。すべてのツールは引数について純粋な関数なので、ユーザーに何か促すものはありません。その警告が意味を持つのは、APIをラップしてキーを必要とするサーバーの場合です。

smithery.yaml は公開フローが求める詳細を記録しています。それがビルドを駆動しない点に気をつてください。古いコンテナベースのデプロイパイプはもう使われません。

両方のティアは無料です。Vercelの hobby プランが関数と静的ファイルをホストし、 Smithery のレジストリ掲載は無料で費用はかかりません。


どう組み立てられているか

vellum/
  analysis.py    the actual work, with no MCP anywhere in it
  server.py      the five tools, their descriptions, and the transports
api/
  index.py       the one Vercel function: MCP, and the demo behind a query flag
public/
  index.html     the landing page
  .well-known/mcp/server-card.json   generated
tests/
  test_vellum.py  analysis, then a real MCP handshake over stdio
  test_deploy.py  the routing and the card

analysis.py はMCPから何もインポートしません。これにより、テストから直接呼び出すことができます。また、ランディングページのデモもツールが呼ぶのと同じ関数を使えるため、互いの実装がズレることはありません。


モデルのためのツールを書くときの注意

説明文はインターフェースです。 開発者のためのドキュメントではありません。モデルがツールが関連するかを判断するときに読むのは、その説明文だけです。曖昧な説明ではツールが選ばれません。間違った説明では不適切な場面で選ばれます。ゆえに、count_text は「計数の辞書を返す」とは言いません。正確な数値を必要とする場合に使えばよい、という説明にしています。トークンを読むことは文字を数えることは違うからです。

失敗は読めるものにすべきです。 壊れた正規表現には例外の代わりに {"valid": false, "error": ...} を返し、未知のハッシュアルゴリズムは存在するものを列挙します。モデルはそこから行動できますが、スタックトレースからは行動できません。

モデルが本当にできないものを選ぶこと。 単にAPIをラップしてツールと呼ぶ誘惑がありますが、このテキストを要約するツールは、モデル自身が上手にできることにネットワーク往復をただ入加するだけです。数える・ハッシュする・正規表現を実際に実行するといった本当のギャップを埋めることが、実際に使用され、丁寧に無視されないためのツールの在り方です。


Shuja Jamal著、2026年8月。

A
license - permissive license
A
quality
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides basic text manipulation and analysis tools including word reversal and character counting. Designed for integration with Le Chat and other MCP-compatible clients.
    3
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides a tool to calculate basic text metrics including character count, characters without spaces, and word count.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides text statistics and readability scores (Flesch Reading Ease, Flesch-Kincaid Grade Level) via offline, keyless tools.
    10
    MIT

View all related MCP servers

Related MCP Connectors

  • Text statistics & readability MCP.

  • Count occurrences of any character in your text instantly. Specify the character and get precise c…

  • Generate IDs, QR codes, and hashes, encode values, geolocate IPs, plus gated host diagnostics.

View all MCP Connectors

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/slider79/vellum-mcp'

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