A Node.js project demonstrating MCP client and server interactions for tool poisoning attacks, requiring an Anthropic API key.
MCP Client and MCP Server
claude-3-5-haiku-20241022
[!NOTE] ./servers/ipinfo/は現在
npx
を使ってMCP Clientから使用する形を取っている。 npxを使ってGitHubのリポジトリからinstallするにはpackage.json
をリポジトリトップに配置する必要があるため,npx使用のための./package.jsonをリポジトリトップに配置している。
Ctrl shift p
and run Dev Containers: Rebuild Containers
.env
and add ANTHROPIC_API_KEY
cat << EOF > mcp_client/.env
ANTHROPIC_API_KEY=your_anthropic_api_key
EOF
mcp_client/mcpservers.json
.env
and add ANTHROPIC_API_KEY
cat << EOF > mcp_client/.env
ANTHROPIC_API_KEY=your_anthropic_api_key
EOF
mcp_client/mcpservers.json
docker compose build
cd mcp_client
yarn run bundle
node dist/index.js
docker compose run -it mcp_client
example of mcp_client/mcpservers.json
{
"mcpServers": {
"ipinfo": {
"command": "/usr/local/bin/npx",
"args": [
"-y",
"github:RyosukeDTomita/mcp_tool_poisoning_attacks#main",
"ipinfo"
],
"env": {
"PATH": "/usr/local/bin:/usr/bin:/bin"
}
},
"burp": {
"url": "http://localhost:9876/sse"
}
}
}
[!NOTE] 現状は
mcpservers.json
の中にある一番上のサーバを使用するようになっている。
docker compose run -it mcp_client
Tools:
[
{
name: 'ipinfo',
description: 'Get My IP information',
input_schema: {
type: 'object',
properties: {},
additionalProperties: false,
'$schema': 'http://json-schema.org/draft-07/schema#'
}
},
{
name: 'ipinfo_target_ipjson',
description: 'Get Target IP information from user request parameter',
input_schema: {
type: 'object',
properties: [Object],
additionalProperties: false,
'$schema': 'http://json-schema.org/draft-07/schema#'
}
}
]
Enter your message: 8.8.8.8の情報を教えて
=====Request to Anthoropic API=====
[ { role: 'user', content: '8.8.8.8の情報を教えて' } ]
=====Response from Anthropic API=====:
{
id: 'msg_012ZGLAfhWKmgDroHELiq6F6',
type: 'message',
role: 'assistant',
model: 'claude-3-5-haiku-20241022',
content: [
{
type: 'text',
text: '8.8.8.8の情報を調べるために、ipinfo_target_ipjsonツールを使用します。'
},
{
type: 'tool_use',
id: 'toolu_01EecHroNi48aFhzTaW5V5NW',
name: 'ipinfo_target_ipjson',
input: [Object]
}
],
stop_reason: 'tool_use',
stop_sequence: null,
usage: {
input_tokens: 432,
cache_creation_input_tokens: 0,
cache_read_input_tokens: 0,
output_tokens: 97
}
}
8.8.8.8の情報を調べるために、ipinfo_target_ipjsonツールを使用します。
=====MCP Server Tool result=====
: {
content: [
{
type: 'text',
text: '{"ip":"8.8.8.8","hostname":"dns.google","city":"Mountain View","region":"California","country":"US","loc":"38.0088,-122.1175","org":"AS15169 Google LLC","postal":"94043","timezone":"America/Los_Angeles","readme":"https://ipinfo.io/missingauth","anycast":true}'
}
]
}
=====Response from Anthropic API after tool use=====
この情報は、IPアドレス8.8.8.8の詳細を示しています。主な特徴は以下の通りです:
1. IP: 8.8.8.8
2. ホスト名: dns.google
3. 所在地:
- 都市: Mountain View
- 地域: カリフォルニア
- 国: アメリカ合衆国(US)
4. 地理的座標: 北緯38.0088、西経-122.1175
5. 組織: AS15169 Google LLC
6. 郵便番号: 94043
7. タイムゾーン: アメリカ/ロサンゼルス
8. エニーキャスト: はい(true)
この8.8.8.8は、Googleが提供する公開DNSサーバーの1つで、一般的に多くのユーザーが利用している信頼性の高いDNSサービスです。
An MCP server with integrations for GitLab, Jira, Confluence, and YouTube, providing AI-powered search and development utility tools.
Provides seamless integration with SonarQube Server or Cloud, and enables analysis of code snippets directly within the agent context
Generate and render Mermaid diagrams as images using LLMs.
MCP server for Autodesk Maya
Interact with the Futarchy protocol on the Solana blockchain.
Analyzes your codebase identifying important files based on dependency relationships. Generates diagrams and importance scores per file, helping AI assistants understand the codebase. Automatically parses popular programming languages, Python, Lua, C, C++, Rust, Zig.
Retrieve on-chain information for EVM contracts locally using an Ethereum RPC node and Etherscan API.
Provides developers with continuous, project-centric context awareness. Requires a TursoDB database.
An MCP server for managing the software development lifecycle, with support for an optional external SQLite database.
Create secure tunnels to expose local servers to the internet using untun.