daiwei114 commited on
Commit
2ef8f08
·
verified ·
1 Parent(s): b3fdbb5

Upload 6 files

Browse files
Files changed (6) hide show
  1. Dockerfile +33 -0
  2. README.md +9 -0
  3. entrypoint.sh +70 -0
  4. gitattributes +35 -0
  5. requirements.txt +0 -0
  6. run.sh +40 -0
Dockerfile ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM python:3.11-slim
2
+
3
+ RUN useradd -ms /bin/bash mcp
4
+
5
+ WORKDIR /app
6
+
7
+ RUN apt-get update && \
8
+ apt-get install -y curl unzip && \
9
+ curl -fsSL https://deb.nodesource.com/setup_18.x | bash - && \
10
+ apt-get install -y nodejs && \
11
+ apt-get clean && rm -rf /var/lib/apt/lists/*
12
+
13
+ COPY entrypoint.sh /app/
14
+ RUN chmod +x /app/entrypoint.sh
15
+
16
+ USER mcp
17
+ RUN curl -fsSL https://bun.sh/install | bash
18
+
19
+ ENV BUN_INSTALL="/home/mcp/.bun"
20
+ ENV PATH="${BUN_INSTALL}/bin:${PATH}"
21
+
22
+ USER root
23
+ RUN pip install --no-cache-dir mcpo uv
24
+
25
+ RUN mkdir -p /app/.cache/uv && chown -R mcp:mcp /app
26
+
27
+ ENV XDG_CACHE_HOME="/app/.cache"
28
+
29
+ USER mcp
30
+
31
+ EXPOSE 8000
32
+
33
+ ENTRYPOINT ["/app/entrypoint.sh"]
README.md ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: mcpo
3
+ emoji: 💻
4
+ colorFrom: pink
5
+ colorTo: indigo
6
+ sdk: docker
7
+ pinned: false
8
+ app_port: 8000
9
+ ---
entrypoint.sh ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+
3
+ cat <<EOF > /app/config.json
4
+ {
5
+ "mcpServers": {
6
+ "tavily-mcp": {
7
+ "command": "npx",
8
+ "args": [
9
+ "-y",
10
+ "tavily-mcp@0.1.3"
11
+ ],
12
+ "env": {
13
+ "TAVILY_API_KEY": "${TAVILY_API_KEY}"
14
+ }
15
+ },
16
+ "calculator": {
17
+ "command": "uvx",
18
+ "args": ["mcp-server-calculator"]
19
+ },
20
+ "context7": {
21
+ "command": "npx",
22
+ "args": ["-y", "@upstash/context7-mcp"]
23
+ },
24
+ "fetch": {
25
+ "command": "uvx",
26
+ "args": ["mcp-server-fetch"]
27
+ },
28
+ "jina-mcp-tools": {
29
+ "command": "npx",
30
+ "args": ["jina-mcp-tools"],
31
+ "env": {
32
+ "JINA_API_KEY": "${JINA_API_KEY}"
33
+ }
34
+ },
35
+ "perplexity-ask": {
36
+ "command": "npx",
37
+ "args": [
38
+ "-y",
39
+ "server-perplexity-ask"
40
+ ],
41
+ "env": {
42
+ "PERPLEXITY_API_KEY": "${PPLX_API_KEY}",
43
+ "SEARCH_CONTEXT_SIZE": "high",
44
+ "PERPLEXITY_MODEL": "sonar-pro"
45
+ }
46
+ },
47
+ "time-mcp": {
48
+ "command": "npx",
49
+ "args": ["-y", "time-mcp"]
50
+ },
51
+ "cloudflare-playwright-mcp": {
52
+ "command": "npx",
53
+ "args": [
54
+ "mcp-remote",
55
+ "https://playwright-mcp-example.h709606124.workers.dev/sse"
56
+ ]
57
+ },
58
+ "gemini-google-search": {
59
+ "command": "npx",
60
+ "args": ["mcp-gemini-google-search"],
61
+ "env": {
62
+ "GEMINI_API_KEY": "${GEMINI_KEY}",
63
+ "GEMINI_MODEL": "${MODEL}"
64
+ }
65
+ }
66
+ }
67
+ }
68
+ EOF
69
+
70
+ exec mcpo --config /app/config.json
gitattributes ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip filter=lfs diff=lfs merge=lfs -text
34
+ *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
requirements.txt ADDED
File without changes
run.sh ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+
3
+ # 确保 /app 目录存在 (通常 Docker WORKDIR 会处理)
4
+ mkdir -p /app/python_mcp_server
5
+
6
+ # 动态生成 config.json
7
+ # 注意:Python 脚本的路径现在是容器内的路径
8
+ cat <<EOF > /app/config.json
9
+ {
10
+ "mcpServers": {
11
+ "tavily-mcp": {
12
+ "command": "npx",
13
+ "args": [
14
+ "-y",
15
+ "tavily-mcp@0.1.2"
16
+ ],
17
+ "env": {
18
+ "TAVILY_API_KEY": "${TAVILY_API_KEY}" // 从环境变量获取
19
+ }
20
+ },
21
+ "my-python-server": {
22
+ "command": "python3", // 确保容器中有 python3
23
+ "args": [
24
+ "/app/python_mcp_server/server.py", // 容器内的绝对路径
25
+ // "--port", "8001" // 如果您的 Python server 需要指定端口
26
+ ],
27
+ "env": {
28
+ // "MY_PYTHON_API_KEY": "${MY_PYTHON_API_KEY}" // 从环境变量获取
29
+ }
30
+ }
31
+ }
32
+ }
33
+ EOF
34
+
35
+ # 检查 mcpo 是否可执行,如果不是通过全局安装的,可能需要指定路径
36
+ # 例如,如果 mcpo 在 /app/bin/mcpo
37
+ # exec /app/bin/mcpo --config /app/config.json
38
+
39
+ # 假设 mcpo 是全局安装的或在 PATH 中
40
+ exec mcpo --config /app/config.json