136 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# あなたの最初のMCP
MCPを実装するプログラミング言語は多く、一般的なほぼすべてのプログラミング言語に公式・非公式のサポートがあります。「プログラミング言語 + MCP」で検索すれば対応するライブラリが見つかります。[[mcp-examples|MCPサーバー開発事例]]では、さまざまなプログラミング言語の異なる例も提供しています。
すべてのプログラミング言語の中で、PythonでのMCP開発は間違いなく最も簡単で、初心者にも取り組みやすいものです。そのため、最初のMCPはPythonで実装します。他のプログラミング言語での実装も大同小異です。
## uvのインストール
Pythonでmcpサーバーを書く際には、パッケージマネージャーとしてuvを使用することを強く推奨します。uvについて知っておくべきことは、高性能なパッケージマネージャーであり、pipとcondaのすべての利点を備えていることです。uvがインストールされていない場合は、まずpipでuvをインストールしてください
```bash
pip install uv
```
:::warning anacondaまたはminicondaを使用している方へ
非base環境にuvをインストールしないでください。base環境でuvをインストールしてください。uv自体が環境の分離を適切に行いますので、uvがbase環境を汚染する心配はありません。base環境以外にインストールしたり、グローバルなpipでインストールしたりすると、uvがどこにインストールされたのかわからなくなりますbase環境でpipを使用してインストールしたスクリプトは`~/anaconda/bin/uv`にインストールされますので、`~/anaconda/bin/``$PATH`に含まれていることも確認してください。
:::
uvのバージョンを確認します
```bash
uv version
```
私の出力は次の通りです:
```
uv 0.6.9 (3d9460278 2025-03-20)
```
実際に操作する際には、このバージョンよりも低くならないようにしてください。
## 最もシンプルなmcpサーバーの作成
プロジェクトディレクトリに移動し、最もシンプルなmcpサーバーを作成する準備をします。
```bash
mkdir -p ~/codes/my-first-mcp
cd ~/codes/my-first-mcp
uv init --no-workspace
```
この時点で、プロジェクト内には以下の3つのファイルがあるはずです
```
README.md main.py pyproject.toml
```
次に、現在のフォルダでvscodeまたはtraeを開き、最もシンプルなmcpサーバーを作成します。その機能は次の通りです
- 2つの数字を加算するための「add」というツールを提供
- 挨拶メッセージを返す「greeting」というリソースを提供
まず、mcp関連のライブラリをインストールします
```bash
uv add mcp "mcp[cli]"
```
`main.py`の内容を以下のように変更します:
```python
from mcp.server.fastmcp import FastMCP
mcp = FastMCP('錦恢の MCP Server', version="11.45.14")
@mcp.tool(
name='add',
description='2つの数字を実数領域で加算する'
)
def add(a: int, b: int) -> int:
return a + b
@mcp.resource(
uri="greeting://{name}",
name='greeting',
description='デモンストレーション用のリソースプロトコル'
)
def get_greeting(name: str) -> str:
return f"Hello, {name}!"
@mcp.prompt(
name='translate',
description='翻訳を行うプロンプト'
)
def translate(message: str) -> str:
return f'以下の文章を中国語に翻訳してください:\n\n{message}'
```
## OpenMCPでワンクリック接続
上記のように、mcpのtool、resource、promptとして使用する3つの関数を宣言しました。OpenMCPでこれらを起動するのは非常に簡単で、右上のOpenMCPアイコンをクリックするだけで接続できます
![](./images/connect-simple.png)
OpenMCPを初めて使用する場合、ガイド画面が表示されますので、ぜひ最後までご覧ください。
![](./images/guide.png)
ログインが完了し、以下のように接続成功と表示されれば、mcpサーバーの起動と接続が成功したことを意味します。
![](./images/connect-success.png)
おめでとうございます。最初の一歩が最も難しいですが、あなたはすでに最も難しいmcp接続を完了しました
OpenMCPを使用したmcpサーバー接続に関する詳細情報は、マニュアルのこの章[[connect-mcp|MCPサーバーへの接続]]を参照してください。
## 付録uvでmcpを起動する際に知っておくべきこと
OpenMCPはすでに多くのことを行ってくれていますが、uvでmcpサーバーを起動する方法は1つだけではありません。より基本的な原理を理解することで、あらゆる状況に対応できるようになります。OpenMCPはPythonプロジェクトに対してデフォルトで`uv run mcp run main.py`を実行してmcpサーバーを起動しますが、GitHub上の一部のプロジェクトはこの方法では起動できません。
まず、上記の例のPythonコードをコマンドラインからどのように起動するかを理解しましょう
### 方法1mcp-cliを使用する
mcp自体がスキャフォールディングを提供しており、宣言されたPythonコードを直接起動してmcpサーバーとして実行できます。以下のコードで実行します
```bash
uv run mcp run main.py
```
### 方法2コード内で明示的に起動する
コード内で明示的にmcpサーバーを起動することもできます。`main.py`の末尾に以下を追加します:
```python
if __name__ == '__main__':
mcp.run()
```
その後、以下のコードを実行すればmcpサーバーが起動します
```bash
uv run main.py
```
:::warning
`python main.py`を実行しないでください。`uv run`は現在の仮想環境のライブラリを使用しますが、これらのライブラリは外部のPythonからは見えません。また、`mcp.run()`で起動コードを使用せずに`uv run main.py`を直接使用することも避けてください。私たちがこれまでに書いたコードは関数を宣言しただけで、実際には何の機能も実行していません。
:::