121 lines
3.7 KiB
Markdown
121 lines
3.7 KiB
Markdown
# Model Context Protocol (MCP) Python -toteutus
|
||
|
||
Tämä repositorio sisältää Python-toteutuksen Model Context Protocolille (MCP), joka näyttää, miten luodaan sekä palvelin- että asiakasohjelma, jotka kommunikoivat MCP-standardin mukaisesti.
|
||
|
||
## Yleiskatsaus
|
||
|
||
MCP-toteutus koostuu kahdesta pääosasta:
|
||
|
||
1. **MCP Server (`server.py`)** – Palvelin, joka tarjoaa:
|
||
- **Tools**: Etäkäytettävät funktiot
|
||
- **Resources**: Haettavat tiedot
|
||
- **Prompts**: Mallipohjat kielimallien kehotteiden luomiseen
|
||
|
||
2. **MCP Client (`client.py`)** – Asiakasohjelma, joka yhdistyy palvelimeen ja käyttää sen ominaisuuksia
|
||
|
||
## Ominaisuudet
|
||
|
||
Tämä toteutus esittelee useita keskeisiä MCP-ominaisuuksia:
|
||
|
||
### Tools
|
||
- `completion` – Tekstinkorjausten generointi tekoälymalleilta (simuloitu)
|
||
- `add` – Yksinkertainen laskin, joka laskee kahden luvun summan
|
||
|
||
### Resources
|
||
- `models://` – Palauttaa tietoa saatavilla olevista tekoälymalleista
|
||
- `greeting://{name}` – Palauttaa henkilökohtaisen tervehdyksen annetulle nimelle
|
||
|
||
### Prompts
|
||
- `review_code` – Luo kehotteen koodin tarkistukseen
|
||
|
||
## Asennus
|
||
|
||
Käyttääksesi tätä MCP-toteutusta, asenna tarvittavat paketit:
|
||
|
||
```powershell
|
||
pip install mcp-server mcp-client
|
||
```
|
||
|
||
## Palvelimen ja asiakkaan käynnistäminen
|
||
|
||
### Palvelimen käynnistäminen
|
||
|
||
Aja palvelin yhdessä terminaali-ikkunassa:
|
||
|
||
```powershell
|
||
python server.py
|
||
```
|
||
|
||
Palvelin voidaan myös käynnistää kehitystilassa MCP CLI:n avulla:
|
||
|
||
```powershell
|
||
mcp dev server.py
|
||
```
|
||
|
||
Tai asentaa Claude Desktopiin (jos saatavilla):
|
||
|
||
```powershell
|
||
mcp install server.py
|
||
```
|
||
|
||
### Asiakkaan käynnistäminen
|
||
|
||
Aja asiakas toisessa terminaali-ikkunassa:
|
||
|
||
```powershell
|
||
python client.py
|
||
```
|
||
|
||
Tämä yhdistää palvelimeen ja esittelee kaikki käytettävissä olevat ominaisuudet.
|
||
|
||
### Asiakkaan käyttö
|
||
|
||
Asiakas (`client.py`) näyttää kaikki MCP:n toiminnot:
|
||
|
||
```powershell
|
||
python client.py
|
||
```
|
||
|
||
Tämä yhdistää palvelimeen ja käyttää kaikkia ominaisuuksia, mukaan lukien työkalut, resurssit ja kehotteet. Tuloste näyttää:
|
||
|
||
1. Laskintyökalun tuloksen (5 + 7 = 12)
|
||
2. Completion-työkalun vastauksen kysymykseen "What is the meaning of life?"
|
||
3. Luettelon saatavilla olevista tekoälymalleista
|
||
4. Henkilökohtaisen tervehdyksen "MCP Explorer" -nimelle
|
||
5. Koodin tarkistuksen kehotemallin
|
||
|
||
## Toteutuksen yksityiskohdat
|
||
|
||
Palvelin on toteutettu `FastMCP`-API:n avulla, joka tarjoaa korkean tason abstraktioita MCP-palveluiden määrittelyyn. Tässä yksinkertaistettu esimerkki työkalujen määrittelystä:
|
||
|
||
```python
|
||
@mcp.tool()
|
||
def add(a: int, b: int) -> int:
|
||
"""Add two numbers together
|
||
|
||
Args:
|
||
a: First number
|
||
b: Second number
|
||
|
||
Returns:
|
||
The sum of the two numbers
|
||
"""
|
||
logger.info(f"Adding {a} and {b}")
|
||
return a + b
|
||
```
|
||
|
||
Asiakas käyttää MCP-asiakas kirjastoa yhdistääkseen palvelimeen ja kutsuakseen sitä:
|
||
|
||
```python
|
||
async with stdio_client(server_params) as (reader, writer):
|
||
async with ClientSession(reader, writer) as session:
|
||
await session.initialize()
|
||
result = await session.call_tool("add", arguments={"a": 5, "b": 7})
|
||
```
|
||
|
||
## Lisätietoja
|
||
|
||
Lisätietoja MCP:stä löytyy osoitteesta: https://modelcontextprotocol.io/
|
||
|
||
**Vastuuvapauslauseke**:
|
||
Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua [Co-op Translator](https://github.com/Azure/co-op-translator). Vaikka pyrimme tarkkuuteen, huomioithan, että automaattikäännöksissä saattaa esiintyä virheitä tai epätarkkuuksia. Alkuperäistä asiakirjaa sen alkuperäiskielellä tulee pitää virallisena lähteenä. Tärkeissä tiedoissa suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa tämän käännöksen käytöstä aiheutuvista väärinymmärryksistä tai tulkinnoista. |