~cytrogen/evi-run

ref: 894e1b53802870053338599159dd3092f1ddd403 evi-run/bot/agents_tools/mcp_servers.py -rw-r--r-- 1.3 KiB
894e1b53 — Bendy docs: clarify Memory Management description 6 months ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import json

from collections import OrderedDict

import base58
from agents.mcp import MCPServerStdio

MAX_SERVERS = 20

servers: OrderedDict[str, MCPServerStdio] = OrderedDict()


async def get_dexpapirka_server():
    dexpaprika_server = MCPServerStdio(
        name="DexPaprika",
        params={
            "command": "dexpaprika-mcp",
            "args": [],
        }
    )
    await dexpaprika_server.connect()
    return dexpaprika_server


async def get_jupiter_server(private_key: str, user_id: int):
    srv = servers.get(user_id)
    if srv:
        servers.move_to_end(user_id)
        return srv

    secret_bytes = bytes(json.loads(private_key))
    private_key_b58 = base58.b58encode(secret_bytes).decode()

    srv = MCPServerStdio(
        name=f"jupiter-{user_id}",
        params={
            "command": "node",
            "args": ['/usr/lib/node_modules/jupiter-mcp/index.js'],
            "env": {
                "PRIVATE_KEY": private_key_b58,
                "SOLANA_RPC_URL": 'https://api.mainnet-beta.solana.com',
            },
        },
        cache_tools_list=True,
    )
    await srv.connect()
    servers[user_id] = srv

    if len(servers) > MAX_SERVERS:
        old_key, old_srv = servers.popitem(last=False)
        await old_srv.cleanup()

    return srv