From a393404599288789ac9e041809c7629049be71e9 Mon Sep 17 00:00:00 2001 From: samanhappy Date: Tue, 1 Apr 2025 17:38:47 +0800 Subject: [PATCH] docs: update README to improve configuration and installation instructions --- README.md | 50 ++++++++++++++++++++++++++++++++----------- assets/dashboard.png | Bin 0 -> 9218 bytes 2 files changed, 38 insertions(+), 12 deletions(-) create mode 100644 assets/dashboard.png diff --git a/README.md b/README.md index 678bd45..d375d9b 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,11 @@ A hub server for MCP servers. -## Usage +## Configuration -1. Create a configuration file named `mcp_settings.json` with your MCP server settings: +MCP Hub allows you to configure multiple MCP servers. You can add as many stdio/sse MCP servers as you want. + +The configuration file should be named `mcp_settings.json` and placed in the root directory of the project. ```json { @@ -15,25 +17,49 @@ A hub server for MCP servers. }, "sequential-thinking": { "command": "npx", - "args": [ - "-y", - "@modelcontextprotocol/server-sequential-thinking" - ] + "args": ["-y", "@modelcontextprotocol/server-sequential-thinking"] } } } ``` -2. Run MCP Hub using Docker: +## Installation + +### Using Docker + +1. Add your `mcp_settings.json` file to the current directory. + +2. Run the following command to start the Docker container: ```bash docker run -p 3000:3000 -v ./mcp_settings.json:/app/mcp_settings.json samanhappy/mcphub ``` -This will: -- Map port 3000 from the container to your local machine -- Mount your local configuration file into the container -- Start the MCP Hub server +### Local Installation -3. The server will be available at `http://localhost:3000/sse` +1. Clone the repository: +```bash +git clone https://github.com/samanhappy/mcphub.git +cd mcphub +``` + +2. Install dependencies: + +```bash +pnpm install +``` + +3. Run the server: + +```bash +pnpm dev +``` + +## Usage + +1. Visit Dashboard UI at `http://localhost:3000` to see the status of your MCP servers. + // image + ![Dashboard UI](https://raw.githubusercontent.com/samanhappy/mcphub/main/assets/dashboard.png) + +2. Use sse endpoint in any application: `http://localhost:3000/sse` diff --git a/assets/dashboard.png b/assets/dashboard.png new file mode 100644 index 0000000000000000000000000000000000000000..1a1bf6f0a5b5f9a7e2a506137413473de8d76600 GIT binary patch literal 9218 zcmcI~Wmr^S+wV}40@6x210xLrN=wWDvJoT(5G94bD4=vB?a&CDk&qS`fdOd{X(YrU z1xYC-rMv44&wDskfxn#+E*t;6s|1JzAZiHLmz=XG1^va&<^ zdMB-YDVkQX=v1e3DEOc=lfGON#~I>je|mi1UpF}E&XV9!5Fgghl<`>be9UQw)Fo3Q zFQKHVo~0sXPxgAKrPJ9no~ujTHtyfFT|TdK1=bnifMr^KS|sW4?Zep z!RyV!ESv!U8tBrT4Xv%3cBm!W+ZR;V+z>9}BYAV29V2nmYoJ>j$H4L>_b}`ejDb5M zaxZ$u$v6G5juWG8vjDOzK4S}&#nxWqCdeDheoK(NJM9WYvZbi_aJGukWSnv&xFfc! z_>$;5+3+1(T^25!n->aU=x@Co7)v&4v9NgCwsyG>osTVD!nikm*_1FRD&sjDtrLzO zfc1rDq%c`i9MJ-3-Y!P-rjL3$SP&4QtG??4?T9;kDr6i**5Y5NBDis#@fMErE62dE ze`$&qS~E99%pwsXvMkVqWt-y3gAk=-K+mV%&Qreu-{Z->g0XOB4&0+iPleLJSzxzt* zGuyD6vU*q&ahl{+bUt2?(V1(iS@dX@J5|Lv*7ChdOTuSnLy$vGaF2GFli_^fAX3GS zAIMkU49KcRH}L`v`fn%Kg}95F9tv`6J1dDqi(}iJ)&$aj|DF8E|Oiy9r%VWr6+dq`I6dfAK-u zUTJ(wOO|cIPtw9Wq??(;qsZ`LG_Jtr!|&dPpz#kQH`AUz4orvAvs1SpR7$2c7?l zQ=zKuFkS|?>(i%%iDFA|^Z4GUvQ51eX05f_HoSd(Co=P0_;~dSTI?rAc&k`9?C75- zZwARNP4`#GW0;N^s-@2Gy?&`G1K-y%Q0EX$RFIy{xPN2KaF5BEB@KhPq?yA4emVHA zUl1WWw@Nq}ZZ^G1YIQWz{i$oy$%yE*z?B!yD>rO_ZgUvuHPN>8MSfVk`4wFfbT$9= z;vL_z00t7-+==PO<8wzCMRbMM=~$n7(%nrdh)46vY%nd}^_c}7Lc*;V`hY9LIYXENMZeXq zzrrWP!NYoKA&WdVyz@_NyIE=JQ7Wx1iDiu_AkB$#nhWRm&~MWWHuy$4&r{ydzJBM! z)h(C9e&>;Dwhf{+_M1&YYh-UE;`uATZAQO)W|>|3PX5$YtVZds6d?fqDN@OnutOKp zJ!67*l(Lw6023w7(@S7*cDRcM*z)*bt?X{j)?ZTzEs|;(Mc#qVL%xm=>K_2>2{2*u zAGYleQ$L?QkynCqofrM;r6wgrLk=SxN4LNAfV*ToxO0RP!yd4W-%Y2bT#+n35Di{# zetYwWysht)i%h9PJ2`D3e9DqucX&=dCgGMj<=74swe#${;nisam7cqo>V>GxOfl?5 zX@8KSK-DdQcIRF7xlhwo7>Z19PcvcD-9jZB-R=JJH1tofuhopBQOHN_6}ybGRW#!V z%eZYVuztTSPBEO95MRRXz}8fHJEP0WuO!tm zukZN*a$0%8@jSB^4)XABsi|eN!I)SsO~b$eDQMeI*O1dYVc3fa-VfTHZ@%Aq^4`XU zIN?3?dT7}o%-#B`p9YDf(#D`uD{S7Ys2aEJJ^vY6^E$YVAL#8f=0_J?V~~NHfxB#f zN#@+W)x?weq8PK*MVJYZ6s-*&KiDX{GGX!8y5mn!x7@E)wD9_Vkv!Z#E6I#{Cqps2 z(7ARUEYJApivV-+Evib(AWdtjV4Z`2u$e|{KP=(4`$=!D3Q8MiGS#JhJ;u@9Q%zvs zT@W-j%nCZ2~zo4>wb(GrGoo9Q`e%l-Cy|H9l;Y1n4hBKo$2K-&x z%z{kz%spZPlQ;*i9O!g5PNtV{7${LZ1tqH0K`9g0w^I8b_v2S+m;A>L?vB+!hxin| z$U-e2Crth(k~@I}tNyVS`VwyRIQDdrHsUL*@F?4g9Kv!mr(>&c`_C+mG$tV3lBB z;B`BU_9&RXqRx} zv>B4MwjE7c$^~cV@9jM%yHHISx$pb#SJdPYaz%AOUC6PT0Cbv?@(=a zO~I`1y*xv`Ac=b=9mywT=d~&WsfEGT&b1PK?}pxuG09dg6s(BT6qe_(B(yqAAi&4t z3(2Ikz2+NWzP~QRwKU-@E+xcBZ00D>>#EuQubDLt<>6;gW&7<*e;iVlmN_SW5(PT9 z7(385*DmXAc6Ozr8lq(_L)L4HtN=Dlh`~gJjJfQG4Mgz~He0@RHkTN|E~t?gGLKP7 z;rO9`z8lymrMa&PHXZ~jUe?^D6B$N1`1}c4+j*Ch7OyeneMYe}rXc3F&#%!z|GD2r~{ucRf9%RAf;E#j0K*o=FvB9EX%pz z9yYgx*r~XX`7TW+VEZNoTGS!7%FfU}Yn(&LVDJ4)(!D_?yNG+<_O^V9W}+hgbj;w* z!XIz_V!^CQLK@WewY112E;{?`2ET!`cK_G7;bqdc_#UiJ}w27;w7_ zy8?gox3|U4JODnd>x_sFrF1+50k3}| z=xZr1@fe5jQ3Di~+E>NXb$_=2%1qCBMh}$?>-PKXuQjFbx^>4alb2HYHYx%eH>VGm zE=n@XfwzVSEu~+fmgj#g^X--8=tYPVgs1_t8qq0(Z-_~S7PW~*4?9e;KJn$h<@E>X z>8C5LIHX5QyAeBIKWh5+M9aFHr?zb1Sk zq&atk^$GT`UZ)U|vawZMw)%KIH{?~45%%%Tc|)S7pYOXg&_ayXa-l_g-d7+xQuUM= zY7fX4o9cD)MxuMC4f)V2?+}O$571Tfrm{zfwAn+}GtMfg5>J@&CIVfQs7@hLWn(RH zCekd`h%#`0Qc@m4tPK8=Dq(=w3jvUBiUE&F1Tj6f2ucJ6f=L7aqhwQ^f&mf?2O$3! zvgG7dpH65@G*Cb_+F=2R{6{a2;`M^cc#lqobo_!A*o+&i}3i1#o@udU%^EmUbo%^n0#U_z48? zi@XRLlzO=H5d3xXb{r&f8TmMy+?=sj^GG?oU3x-67y^yte`E$jink^Va}P9-=B)NAgAizoB^aXIVoP*4t%hGSuGg?&%qottg3a zE)H3-4!wFpZQVPx;$o{*(CNp<pS?kl9wOJFi!B zli9kOt}ea_Ok~9FZ@rBtYNSBf40B-DSDEAdL}<= zeC_s-KG=EoY}C}Ry;xwp3o&*t)MLUzYRy~bTqt#{to_8B8?dK|k_BU3GsZmF#Zo8)1IXTPqF#^lZk2B9#ybPR= zH|#u~-^pCOrCw4|>HaFC?dahru$YP=_N)Z9wp2gtWh8B57b0Mmzo#Say(M1{nG7{a#J;i zn6Ps5BVRXXp=#CzcEYM#hof3K+e}zznV4@E!g+so{^2l5oGtacqq8HS;x25c;DP&; ztv&mBX+#?UA47X`T8Vx7TLI?lxR`x5nl3g_Dp$^s#V-TPEyW{`H#Qeihb== zxX3s6=kKc6hLApnot+>G8Yu_l&+-tF#oY@cy*nOppK2sx()V!Z&R~j7uP@Wf>;r^P zM)2T0v-f?Bh{!t@31tWQWyoVCk^_(w=jHnSoTTSA;W*Me*@3Wg8TDnvw$5s`%}?gb z*!y0`>R0qyO?L=kC77l^fwV_?5QLy~MtPkcn9>(K*!?Dc>ZYXYmu0R2Rzzg_pSssT z*8547V`mT&8IZw)kQ+;Pugg(fET|JRB}kmZm?f)h^-u{YH0r6l<>swg?Vg%}%WR2# zeM7z(IGLZW*ZTVU+E?^F=EHQxKAutrE@Ya2V#F?e>oY3;5;o|^f%Q@Rw9PCX7xO$* z#iu|gXFCGt_^6Txn?Vg@)ErQ!GASnT9Jct|F+|wGe0vy;w z6g;o?`lUY+P=hQG{rRqTY!S?rzBW|5P#z1()FEQp;h;o$`+>)2mGX&*$=gPNxS{(Nu{-I~>C`XLZ1?#CKh~a8#}#IyQ_jZN z#bkl!j4UBami{8p^rm?eu;8%xXSv1*sqOLotOC6KSo>C!39Q}Vq}Dd|xXN{2akZcz zrbjSf-Z@#Kne|sWo(EyK|6)D?v0Qg%n&e-Fj2s&77F7oqYB$cqj~F<&=^zxSWq(%e zLHpld(~8yy4h3dDeq%lXS@-}f;6q9=uor1TF2FkJFTvF0*Xb~5s%>boTb$pt)GrZ* zRS$%kl}x&4lHyKz0dM_u`GJIy09u@a(R0Ni-Gwgb{PS?Fy`$IU3dHAd1QngV$*Y}` z%7;%9)jBV9wG0!iGg}A0KD-kU(ax$73qjNd#h*9eT;3Of#cn@x$RMOkF|u>-eR-Z$Uj>g>=XR=a7#x+_t{Vi2^JAGzL(w2MIWr_z60_nC`C=zcJ@6p&1!VJC>o~OLDS2R& z$BO@N_U6{=FJ{bFK5n5ykhJQ-2et9QN^8$Nda zk?cjopGTfet=@5Uv?gJ94LI!Pw&@mE?;?qRy}Ct(GO&+5CcVW(E?S45bcEM$9akh~Dov$QIi( zhal`NOg2B?O#?tj7`}PJJiv7_dtO5vA(~W}2t;nnM6QVmVk7iTyzt`@0lm2S$ZmgS z!2ZZKWH7@k^|P-!kSA@fn^CB|J+(otp$S*>X8K0U#*7N{6hDBEyR=KI+?8uhK;ojl zeY>N-?9@Gxn;}NaXo7A5eb^wcmP<`vtwh5A^Rclr)qlVG>$<=urbpz znqTpJDJ{(%0v;*Y->$K&V^jxBNqknngWS5_OMEe#-id~zxG9~iT{|7(!e`G$s`i8# zJm#9mO>hMrhYITx!JRb|nQte370BCOd3{IgkX0hH_EqLzswt^wvVQ=rO%x3QTGtq^CmEI6T8l%)xuIh}XY_N10Kb z7!R5UtGS?6;tyw-#wrS6xE(S$;gaqJgCnfm5;>SL4d!yiPN8))B6o(xpC1m+@Tezo z)jnAq9ueI!ZT?-o@`}P3i}ayoVrJN!Hw~6_ zvlDqtmjP7mO++OpEWuR2No_Y7Jx6uyL0TiDjeTXe?V>rrWoj+`^o7NXVYKSrxlS4- zY-rOb)+~0b2Bp{hGGNQESm_#k zgk{;5!Dc6Hc*>>?sCq{B=6D-WoU#8ch0%!c$T2 z+L8|)Dezm}Un;rbGs)Wzm>Gs%+Xx{e^DGBu3XGw`E3>^QAEwKeIWQ$> z%#uCbs}`s$%MT9!aF=JN8$IU~i>GUN>CcSGzLyDhc2VMbTV(^R#LSLm418=*vmIbZ>)R?`Lw&k$!iwS%Ug6`@yeWca!ZsIfUWrr?g!2=R z_A@>@{)Yim_>ZuI*dDzVv$GBrR3+B$1IVP-Pldy{&|%>$auik#pWhJtPqv07-eiU` zyHMgA1+bxCUm(k=XTxuwY5_FgUOn=OkD<~?`6GyiMM9NG3qiCU1xX^ZwtG`jNkJEg z%>Ju@eZcN|OK#$$1?nZ`k5vkRlHVPE06BW@QKFvoMJ(7^01muBMxuc51c8r@<<8&YieNZ zDi)P~BZbA~6-kTUZeX@ei0b@&=Dr`dk+hc;?rX2fqpXq>WOKx8AmWyK2)fGGfWU?C zXpM@JHrkP(xM}(0q+47jLrzt+p-xt_{ofSeyY8gb-|x+a@|2n2v)r9mPQb%HU8Z(T z&ZQN;<<<8^?_4o(UTk+d_~{E(k}*P~QyeySWG7{e1K~}6bht`ysNX~2@7l`^dzjxR z;g=A9CQ7$5Ggy`*r>&9kWYD$iBsa7zl(P8yU~mib6Wi&*f9BQ=nV@T@7enx{#|y84 z*-Dpt5zIdG{`eph?JQP))&SeMRSy#dg3dW5v?1PjiY!M41KCOcX5&(Ooq zLk4GmcqWqbv^U$ zv*#gt6ZEJjLTYXPH#_U}J-GY(@>Xx;lb89y^cwr=$7ufkWk0T$HHto1EU~J8(!;Z* zm?mU%uT&Yu^pQqxK>FMELnwa4Nc)GuIsD~lIC=9`)tC0&G7C36RUM*}@K5@EXx*a5 zufnzt3E%2+SF^9Sx6;TnV}RWqDoVkS^aC`ShjQ!6;v)KjK~0a?`#Cde>v~&wQ}}}v z>q;v80vVZn8fn=pN`ayVf9_}aVo)_ZhZ*&R%2qC9K@%w$-XyW6Glo}HDgoyV{xpIzZOb_af><*iTr88C z9!#T4^>*>{2U(Gmfz_1N9dv~uP;L%{N{6)dAOX}{@l`|M!_h<7kcIs|`mQd2OvQ)S z$l$m^^~mgeFwpkCqpFD){EK+XJ)J{RH8SUiv{xDEwZ2Jfdpvm9EswN%kfW}}Jizw$ zbA8dtQ_7DG0(JMPBG6#>sQcC`Cmsft=Wu zOQX(VFoF0*)tRsl{E<`|A=vu5_lQcqN0-m)>>{4)Q6g#iMcGU8l=4wGw7*J@=X+9HP)kjk<#S(X}xg zL)pw5Gu-IdNKGaXHOL1s`8$?FgR0?P!@wc3$74B>YIgmxFN>)HbJT^#a~$Kc70yMd z1NXxnW9?XQ9YsYnf!%sNT-I?@@Q*D0!*U$7VXa&J(;U{ZR5y~bCcBFpQ&SdQ<-#u$ z62v<>nAh}Jmh1;oKc1Eeca^gkKgn6uGn@4gr3-YHk7U2Oh=H)(?8p>LywZI6f6IS( rlonmAeJ#5b(hLn)v0cso@8x+>)q)O|9}7i8FZXJwX{#0^p9cRgweKW( literal 0 HcmV?d00001