没有合适的资源?快使用搜索试试~ 我知道了~
MCP客户端Java SDK实现
4 下载量 35 浏览量
2025-04-11
22:55:41
上传
评论 1
收藏 367KB PDF 举报
温馨提示
Java MCP客户端SDK的实现,涵盖了其核心功能和使用方式。 SDK采用面向对象设计,提供同步、异步和流式处理三种调用方式,适用于不同应用场景。主要类包括MCPClient(用于常规请求)和MCPStreamingClient(用于流式请求)。MCPClient类封装了API请求的核心逻辑,如创建请求、发送HTTP请求、处理响应等。MCPRequestOptions类允许用户自定义请求选项,如行为约束、输出格式、上下文信息等。MCPBehaviorManager类提供了不同领域的预定义行为约束集。此外,SDK还实现了会话管理和错误处理机制,确保请求的安全性和稳定性。示例代码展示了基本、异步、高级配置和流式生成四种使用场景。
资源推荐
资源详情
资源评论




























JAVAMCP
Java MCP客户端SDK实现
以下是一个完整的Java MCP客户端SDK实现:
//
MCPC
lient
.
j
a
v
a
p
ac
k
a
ge
;
import
Ob
je
c
t
Ma
pper
;
import
Ob
je
c
t
N
ode
;
import
A
rr
a
y
N
ode
;
import
J
son
N
ode
Fac
tory
;
import
*
;
import
I
nst
a
nt
;
import
C
omplet
ab
le
F
uture
;
import
S
tre
a
m
;
import
H
ttp
C
lient
;
import
H
ttp
R
equest
;
import
H
ttp
R
esponse
;
import
URI
;
pu
b
li
c c
l
a
ss
MCPC
lient
{
priv
a
te fin
a
l
S
tring
a
pi
E
ndpoint
;
priv
a
te fin
a
l
S
tring
a
pi
K
ey
;
priv
a
te fin
a
l
S
tring
proto
c
ol
V
ersion
;
priv
a
te fin
a
l
S
tring
session
I
d
;
priv
a
te fin
a
l
Ma
p
<
S
tring
,
Ob
je
c
t
>
session
S
t
a
te
;
priv
a
te fin
a
l
Ob
je
c
t
Ma
pper
o
b
je
c
t
Ma
pper
;
priv
a
te fin
a
l
H
ttp
C
lient
http
C
lient
;
pu
b
li
c
MCPC
lient
(
S
tring
a
pi
E
ndpoint
,
S
tring
a
pi
K
ey
) {
this
(
a
pi
E
ndpoint
,
a
pi
K
ey
,
"
1.0
"
);
}
pu
b
li
c
MCPC
lient
(
S
tring
a
pi
E
ndpoint
,
S
tring
a
pi
K
ey
,
S
tring
proto
c
ol
V
ersion
) {
this
.
a
pi
E
ndpoint
=
a
pi
E
ndpoint
;
this
.
a
pi
K
ey
=
a
pi
K
ey
;
this
.
proto
c
ol
V
ersion
=
proto
c
ol
V
ersion
;
this
.
session
I
d
=
UUID
.
r
a
ndom
UUID
().
to
S
tring
();
this
.
session
S
t
a
te
=
new
Ha
sh
Ma
p
<>
();
this
.
o
b
je
c
t
Ma
pper
=
new
Ob
je
c
t
Ma
pper
();
this
.
http
C
lient
=
H
ttp
C
lient
.
new
B
uilder
().
b
uild
();
}
c
om
.
m
c
p
.
c
lient
c
om
.
f
a
sterxml
.
j
ac
kson
.
d
a
t
ab
ind
.
c
om
.
f
a
sterxml
.
j
ac
kson
.
d
a
t
ab
ind
.
node
.
c
om
.
f
a
sterxml
.
j
ac
kson
.
d
a
t
ab
ind
.
node
.
c
om
.
f
a
sterxml
.
j
ac
kson
.
d
a
t
ab
ind
.
node
.
j
a
v
a
.
util
.
j
a
v
a
.
time
.
j
a
v
a
.
util
.
c
on
c
urrent
.
j
a
v
a
.
util
.
stre
a
m
.
j
a
v
a
.
net
.
http
.
j
a
v
a
.
net
.
http
.
j
a
v
a
.
net
.
http
.
j
a
v
a
.
net
.

pu
b
li
c
C
omplet
ab
le
F
uture
<
S
tring
>
gener
a
te
A
syn
c
(
S
tring
prompt
,
MCPTa
sk
T
ype
t
a
sk
T
ype
) {
return
gener
a
te
A
syn
c
(
prompt
,
t
a
sk
T
ype
,
new
MCPR
equest
O
ptions
());
}
pu
b
li
c
C
omplet
ab
le
F
uture
<
S
tring
>
gener
a
te
A
syn
c
(
S
tring
prompt
,
MCPTa
sk
T
ype
t
a
sk
T
ype
,
MCPR
equest
O
ptions
options
) {
return
C
omplet
ab
le
F
uture
.
supply
A
syn
c
(()
-
>
{
try
{
Ob
je
c
t
N
ode
request
=
c
re
a
te
MCPR
equest
(
prompt
,
t
a
sk
T
ype
,
options
);
return
send
R
equest
(
request
);
}
ca
t
c
h
(
E
x
c
eption
e
) {
throw new
R
untime
E
x
c
eption
(
"
MCP
request
f
a
iled
"
,
e
);
}
});
}
pu
b
li
c
S
tring gener
a
te
(
S
tring
prompt
,
MCPTa
sk
T
ype
t
a
sk
T
ype
) {
return
gener
a
te
(
prompt
,
t
a
sk
T
ype
,
new
MCPR
equest
O
ptions
());
}
pu
b
li
c
S
tring gener
a
te
(
S
tring
prompt
,
MCPTa
sk
T
ype
t
a
sk
T
ype
,
MCPR
equest
O
ptions
options
) {
try
{
Ob
je
c
t
N
ode
request
=
c
re
a
te
MCPR
equest
(
prompt
,
t
a
sk
T
ype
,
options
);
return
send
R
equest
(
request
);
}
ca
t
c
h
(
E
x
c
eption
e
) {
throw new
R
untime
E
x
c
eption
(
"
MCP
request
f
a
iled
"
,
e
);
}
}
priv
a
te
Ob
je
c
t
N
ode
c
re
a
te
MCPR
equest
(
S
tring
prompt
,
MCPTa
sk
T
ype
t
a
sk
T
ype
,
MCPR
equest
O
ptions
options
) {
Ob
je
c
t
N
ode
request
=
J
son
N
ode
Fac
tory
.
inst
a
n
c
e
.
o
b
je
c
t
N
ode
();
//
基本协议信息
request
.
put
(
"
proto
c
ol
_
version
"
,
proto
c
ol
V
ersion
);
request
.
put
(
"
session
_
id
"
,
session
I
d
);
request
.
put
(
"
timest
a
mp
"
,
I
nst
a
nt
.
now
().
to
S
tring
());
//
模型控制
Ob
je
c
t
N
ode
model
C
ontrol
=
request
.
put
Ob
je
c
t
(
"
model
_
c
ontrol
"
);
A
rr
a
y
N
ode
b
eh
a
vior
C
onstr
a
ints
=
model
C
ontrol
.
put
A
rr
a
y
(
"
b
eh
a
vior
_
c
onstr
a
ints
"
);
options
.
get
B
eh
a
vior
C
onstr
a
ints
().
for
Eac
h
(
b
eh
a
vior
C
onstr
a
ints
::
a
dd
);
Ob
je
c
t
N
ode
output
R
equirements
=
model
C
ontrol
.
put
Ob
je
c
t
(
"
output
_
requirements
"
);

output
R
equirements
.
put
(
"
form
a
t
"
,
options
.
get
O
utput
F
orm
a
t
().
to
S
tring
());
options
.
get
O
utput
R
equirements
().
for
Eac
h
((
k
,
v
)
-
>
output
R
equirements
.
put
(
k
,
v
.
to
S
tring
()));
//
指令
Ob
je
c
t
N
ode
instru
c
tion
=
request
.
put
Ob
je
c
t
(
"
instru
c
tion
"
);
instru
c
tion
.
put
(
"
t
a
sk
_
type
"
,
t
a
sk
T
ype
.
to
S
tring
());
Ob
je
c
t
N
ode
exe
c
ution
Pa
r
a
ms
=
instru
c
tion
.
put
Ob
je
c
t
(
"
exe
c
ution
_
p
a
r
a
meters
"
);
options
.
get
C
ustom
Pa
r
a
meters
().
for
Eac
h
((
k
,
v
)
-
>
exe
c
ution
Pa
r
a
ms
.
put
(
k
,
v
.
to
S
tring
()));
//
上下文
Ob
je
c
t
N
ode
c
ontext
=
request
.
put
Ob
je
c
t
(
"
c
ontext
"
);
Ob
je
c
t
N
ode
session
S
t
a
te
N
ode
=
c
ontext
.
put
Ob
je
c
t
(
"
session
_
st
a
te
"
);
session
S
t
a
te
.
for
Eac
h
((
k
,
v
)
-
>
session
S
t
a
te
N
ode
.
put
(
k
,
v
.
to
S
tring
()));
options
.
get
C
ontext
().
for
Eac
h
((
k
,
v
)
-
>
c
ontext
.
put
(
k
,
v
.
to
S
tring
()));
//
内容
Ob
je
c
t
N
ode
c
ontent
=
request
.
put
Ob
je
c
t
(
"
c
ontent
"
);
c
ontent
.
put
(
"
input
"
,
prompt
);
return
request
;
}
priv
a
te
S
tring send
R
equest
(
Ob
je
c
t
N
ode
request
)
throws
E
x
c
eption
{
H
ttp
R
equest
http
R
equest
=
H
ttp
R
equest
.
new
B
uilder
()
.
uri
(
URI
.
c
re
a
te
(
a
pi
E
ndpoint
))
.
he
a
der
(
"
C
ontent
-
T
ype
"
,
"
a
ppli
ca
tion
/
json
"
)
.
he
a
der
(
"
A
uthoriz
a
tion
"
,
"
B
e
a
rer
"
+
a
pi
K
ey
)
.
POST
(
H
ttp
R
equest
.
B
ody
P
u
b
lishers
.
of
S
tring
(
o
b
je
c
t
Ma
pper
.
write
Va
lue
A
s
S
tring
(
re
quest
)))
.
b
uild
();
H
ttp
R
esponse
<
S
tring
>
response
=
http
C
lient
.
send
(
http
R
equest
,
H
ttp
R
esponse
.
B
ody
Ha
ndlers
.
of
S
tring
());
if
(
response
.
st
a
tus
C
ode
()
!
=
200
) {
throw new
R
untime
E
x
c
eption
(
"
API
request
f
a
iled
with
st
a
tus
:
"
+
response
.
st
a
tus
C
ode
());
}
return
pro
c
ess
R
esponse
(
response
.
b
ody
());
}
priv
a
te
S
tring pro
c
ess
R
esponse
(
S
tring
response
B
ody
)
throws
E
x
c
eption
{
剩余10页未读,继续阅读
资源评论


weixin_47233946
- 粉丝: 596
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 大数据时代基于财务共享模式的电子会计档案管理思考.docx
- 公司项目管理办公室PMO建设规划.doc
- 大数据时代下城建档案管理信息化面临的挑战和途径.docx
- 电子科技16春《计算机编译原理》在线作业1.doc
- 3.2煤矿综合自动化概念.ppt
- 《算法设计与分析》实验教学大纲.doc
- 青海省血站业务档案信息化建设初探.docx
- 大学学生选课系统软件需求规格说明书.doc
- 三年级计算机上册优秀教案.doc
- 开票软件安装操作流程.doc
- 计算机软件的应用前景和系统安全分析.docx
- ERP企业信息化调查表范文.doc
- XX集团综合计划处科研计划与项目管理绩效指标.doc
- 智慧城市方案架构IBM.doc
- 基于采集大数据的智能应用研究.docx
- 通信工程施工中的安全管理研究.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
