💆♂️
作ったMCPサーバをGitHubからインストール可能にする(stdio)
結論
uv init --packegeでmcpサーバを作って、uv tool install git+するだけ。
サンプルリポジトリ
手順
1.プロジェクトを初期化
uv init --package プロジェクトの名前で、プロジェクトをパッケージとして初期化する。
ここでは具体的に、uv init --package greet_mcpとする。
uv公式ドキュメント
あとmcpをインストールするuv add mcp[cli]
2.pyproject.tomlを見る
[project.scripts]内に、コマンドの情報が書かれている。
pyproject.toml
[project]
name = "greet-mcp"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
authors = [
{ name = "your name", email = "sample@example.com" }
]
requires-python = ">=3.13"
dependencies = []
[project.scripts]
greet-mcp = "greet_mcp:main" #greet-mcpというコマンドを追加する。src\greet_mcp\__init__.pyのdef main()がエントリポイントとなる。
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
3.サーバを作る
src\greet_mcp\__init__.pyのmain()を実行すると巡り巡ってmcp.run()が呼ばれるようになっていれば良い。
最小構成として__init__.pyに全部書く。
src\greet_mcp\__init__.py
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("greet")
@mcp.tool()
def greet(name: str) -> str:
"""MCPサーバから挨拶します。
Args:
name (str): 名前
Returns:
str: 挨拶メッセージ
"""
return f"MCPサーバから挨拶します。こんにちは、 {name}さん!"
def main() -> None:
mcp.run() #デフォルトでtransport="stdio"
4.ローカルでインストールしてみる
プロジェクトディレクトリ配下でuv tool install .とすればローカルでグローバルにコマンドが使用可能になる。
uv tool install . -eとすると変更が即反映されるので便利。
uv tool uninstallでアンインストールできるが、その際ClaudeDesktopなどを終了させておかないと失敗する。
5.使ってみる
試しにcursorで使ってみる。
mcp.json
{
"mcpServers": {
"greet-mcp": {
"command": "greet-mcp"
}
}
}
ちゃんと認識するとこうなる。

動いた!

6.GitHubにアップロード
してリモートリポジトリを作成したら、
uv tool install git+https://github.com/<ユーザ名>/<リポジトリ名>
でインストールできる。
おわり。
Discussion