任何API调用MCP服务器
通用自然语言API代理账本平台MCP服务器
通过AI友好型工具进行任何HTTP API调用。开箱即支持6+个核心API,并且可以轻松扩展到任何REST API。
   
______________________________________________________________________
📋 目录
______________________________________________________________________
概述
AnyAPICall是一个通用的MCP(模型上下文协议)服务器,它使AI代理能够通过自然语言与任何HTTP REST API进行交互。无需为每个API单独构建MCP服务器,该服务器提供了一种灵活的、基于配置的方法,可与任何REST API配合使用。
这与以往有何不同?
🔧(扳手或修理工具的象征) 配置驱动 - 仅需添加配置即可新增API,无需修改代码
🌐 表示“互联网”或“全球网络”。 通用的 支持任何REST API(GET、POST、PUT、PATCH、DELETE等)
🔐(锁形符号,常用于表示密码、保密或锁定等含义) 灵活认证 支持Bearer令牌、API密钥、自定义头部和基本身份验证
📖 书籍 自文档化 - AI代理可以实时发现和学习API
🚀 表示火箭或快速上升、前进的意象,常用于表达对未来的憧憬、对进步的追求或对某事物的强烈兴趣。在没有具体上下文时,可简单译为“🚀(火箭/快速上升/前进的象征)”。 准备就绪,可投入生产 - 实际API调用的100%测试覆盖率
______________________________________________________________________
特点/特性
核心能力
- ✅ 调用任意API - 对HTTP方法、头部、主体和参数的完全控制
- ✅(对号,表示正确、同意或确认) 列出可用的API - 发现所有已注册的API,并应用过滤条件
- ✅ 获取API文档 每个API的详细文档,包括端点和示例
- ✅ 路径参数替换 - 动态URL构建
{param}占位符 - ✅ 查询参数处理 - 构建干净的查询字符串
- ✅ 翻译成中文是:对/正确。 请求体支持 - 使用JSON正文的POST/PUT/PATCH方法
- ✅(勾选标记,表示正确、确认或完成) 自定义头部 - 对特殊需求提供完整的头部控制
- ✅ 翻译成中文是:✓(对号/正确) 多种认证模式 根据上述信息,以下是原文内容的翻译:
- ✅ 错误处理 - 清晰、可操作的错误信息
- ✅ 性能监控 - 所有回复中均包含响应时间
包含的API(无需配置)
- CoinGecko(可译为“币格科”或直接保留原名,根据语境选择) 🪙 - 加密货币价格和市场数据(公开)
- OpenWeatherMap(开放天气图) ☁️ - 当前天气和预报(API密钥)
- JSONPlaceholder(注:此名称在中文中通常保持原样,不直接翻译,但为解释其含义,可理解为“JSON占位符服务”或“JSON虚拟数据占位符”,不过具体翻译可能根据上下文和使用场景有所调整) 🧪 - 测试与原型制作(公开)
- 非系约国(或“其余国家”,具体翻译取决于上下文,这里“REST”通常指“其余”或“剩余”的意思,而“Countries”即“国家”) 🌍 - 地理和国家数据(公开)
- GitHub 🐙 - 仓库、用户和问题(公开 + 令牌)
- NewsAPI(新闻应用编程接口) 新闻和文章搜索(API密钥)
______________________________________________________________________
快速入门
安装
# Clone the repository
git clone https://github.com/oregpt/Agenticledger_MCP_AnyApIService.git
cd Agenticledger_MCP_AnyApIService
# Install dependencies
npm install
# Build TypeScript
npm run build
# Run tests
npm test基本用法
import { server } from './dist/index.js';
// Initialize server
await server.initialize();
// Make an API call
const result = await server.executeTool('make_api_call', {
apiId: 'coingecko',
endpoint: '/coins/markets',
method: 'GET',
queryParams: {
vs_currency: 'usd',
per_page: 10
}
});
console.log(result.data);
// Shutdown
await server.shutdown();______________________________________________________________________
认证
认证模式
模式: 模式3(API密钥)- AgenticLedger平台MCP服务器构建模式
令牌格式:
{
accessToken: "your_api_key_here" // Optional for public APIs
}公开API与认证API
公开API(无需令牌):
- CoinGecko(可译为“币志”或保持原名,根据语境选择)
- JSONPlaceholder(可译为“JSON占位符”或保持原名以体现其作为示例服务的特性)
- REST国家(注:REST在此处可能是一个特定上下文中的缩写或专有名词,直接翻译为“REST国家”可能不够准确,但根据提供的信息,这是最直接的翻译。如果REST有特定含义,应根据具体语境进行调整。)
- GitHub(公共端点)
需要身份验证的API(需令牌):
- OpenWeatherMap - 在 https://openweathermap.org/api 获取免费密钥
- NewsAPI - 在 https://newsapi.org/ 获取免费密钥
- GitHub(私有端点)- 在 https://github.com/settings/tokens 生成令牌
设置测试API密钥
# For authenticated API tests
export OPENWEATHER_API_KEY="your_openweather_key"
export NEWSAPI_KEY="your_newsapi_key"
export GITHUB_TOKEN="your_github_token"
# Run tests
npm test______________________________________________________________________
可用工具
1. 发起API调用
对任何已注册的API执行HTTP API调用。
参数:
accessToken(字符串,可选):用于认证API的API密钥/令牌apiId(字符串,必填):API标识符(例如,“coingecko”)endpoint(字符串,必填):端点路径(例如,“/coins/markets”)method(字符串,可选):HTTP 方法(默认:“GET”)pathParams(对象,可选):路径参数替换queryParams(对象,可选):查询字符串参数body(任意,可选):POST/PUT/PATCH 请求的请求体headers(对象,可选):自定义头部
示例:
{
apiId: 'github',
endpoint: '/users/{username}',
method: 'GET',
pathParams: {
username: 'octocat'
}
}______________________________________________________________________
2. 列出可用的API
列出所有已注册的API,并可选择性地进行过滤。
参数:
category(字符串,可选):按类别过滤requiresAuth(布尔值,可选):按认证要求过滤
示例:
{
requiresAuth: false // Get only public APIs
}回答:
{
"success": true,
"data": {
"total": 4,
"public": 4,
"authenticated": 0,
"apis": [...]
}
}______________________________________________________________________
3. 获取API文档
获取特定API的详细文档。
参数:
apiIdAPI标识符
示例:
{
apiId: 'coingecko'
}回复内容包括:
- API描述和基本URL
- 认证要求
- 所有带参数的终端点
- 示例请求和响应
- 使用说明
______________________________________________________________________
支持的API
CoinGecko(可译为“币种地质”或直接保留原名,根据语境选择是否意译)
ID: coingecko 认证: 不需要 速率限制: 每分钟10个请求,每天10,000个请求
终点(或:结局指标):
list_coins- 获取加密货币市场数据get_coin_data- 获取详细的硬币信息
示例:
{
apiId: 'coingecko',
endpoint: '/coins/markets',
queryParams: {
vs_currency: 'usd',
per_page: 10
}
}______________________________________________________________________
OpenWeatherMap(开放天气图)
ID: openweather 认证: API密钥已要求 速率限制: 每分钟60个请求,每天1,000个请求
终点(或:结果指标):
current_weather- 某地的当前天气forecast- 5天预报,每3小时更新一次
示例:
{
accessToken: "your_openweather_key",
apiId: 'openweather',
endpoint: '/weather',
queryParams: {
q: 'London',
units: 'metric'
}
}______________________________________________________________________
JSONPlaceholder(可译为“JSON占位符”或“JSON模拟数据网站”)
ID: jsonplaceholder 认证: 不需要 速率限制: 无限制
终点:
list_posts- 获取所有帖子get_post- 获取特定帖子create_post- 创建新帖子list_users- 获取所有用户list_comments- 获取所有评论
示例:
{
apiId: 'jsonplaceholder',
endpoint: '/posts',
method: 'POST',
body: {
title: 'My Post',
body: 'Content here',
userId: 1
}
}______________________________________________________________________
非系约国(或“非英联邦国家”,具体翻译取决于上下文,这里“REST”可能指“Rest of the world”或类似含义,即“其余国家”)
ID: restcountries 认证: 无需(此步骤/此要求) 速率限制: 无限制
终点(或结局指标):
all_countries- 获取所有国家search_by_name- 按名称搜索国家get_by_code- 通过ISO代码获取国家by_region- 按地区获取国家
示例:
{
apiId: 'restcountries',
endpoint: '/name/{name}',
pathParams: {
name: 'united'
}
}______________________________________________________________________
GitHub
ID: github 认证: 可选(使用令牌可提高速率限制) 速率限制: 60次请求/分钟(公开访问),5,000次请求/天(经认证用户)
终点(或:研究终点):
get_user- 获取用户信息get_repo- 获取仓库信息search_repositories- 搜索存储库list_repo_issues- 列出仓库问题
示例:
{
accessToken: "github_token", // Optional
apiId: 'github',
endpoint: '/search/repositories',
queryParams: {
q: 'machine learning',
sort: 'stars',
per_page: 10
}
}______________________________________________________________________
NewsAPI(新闻应用程序编程接口)
ID:(译文保持不变,因为“ID”在中文中通常直接使用,无需翻译) newsapi 认证: API密钥已要求 速率限制: 5次请求/分钟,100次请求/天(免费层级)
终点(或:终点指标):
top_headlines- 突发新闻头条search_articles- 浏览文章
示例:
{
accessToken: "your_newsapi_key",
apiId: 'newsapi',
endpoint: '/top-headlines',
queryParams: {
country: 'us',
category: 'technology',
pageSize: 10
}
}______________________________________________________________________
使用示例
示例1:获取加密货币价格
const crypto = await server.executeTool('make_api_call', {
apiId: 'coingecko',
endpoint: '/coins/markets',
method: 'GET',
queryParams: {
vs_currency: 'usd',
ids: 'bitcoin,ethereum',
per_page: 2
}
});
console.log(crypto.data.data);
// [
// { id: 'bitcoin', symbol: 'btc', current_price: 114729, ... },
// { id: 'ethereum', symbol: 'eth', current_price: 4113.86, ... }
// ]______________________________________________________________________
示例2:获取多个城市的天气信息
const cities = ['London', 'Paris', 'Tokyo'];
for (const city of cities) {
const weather = await server.executeTool('make_api_call', {
accessToken: process.env.OPENWEATHER_API_KEY,
apiId: 'openweather',
endpoint: '/weather',
queryParams: {
q: city,
units: 'metric'
}
});
const data = weather.data.data;
console.log(`${data.name}: ${data.main.temp}°C - ${data.weather[0].description}`);
}______________________________________________________________________
示例3:搜索GitHub仓库
const repos = await server.executeTool('make_api_call', {
apiId: 'github',
endpoint: '/search/repositories',
queryParams: {
q: 'mcp server',
sort: 'stars',
order: 'desc',
per_page: 5
}
});
repos.data.data.items.forEach(repo => {
console.log(`⭐ ${repo.stargazers_count} - ${repo.full_name}`);
});______________________________________________________________________
示例4:获取国家信息
const country = await server.executeTool('make_api_call', {
apiId: 'restcountries',
endpoint: '/alpha/{code}',
pathParams: {
code: 'US'
}
});
const data = country.data.data[0];
console.log(`${data.name.common}`);
console.log(`Capital: ${data.capital[0]}`);
console.log(`Population: ${data.population.toLocaleString()}`);
console.log(`Region: ${data.region}`);______________________________________________________________________
预构建的API配置
新 我们现已提供热门API的即用型API配置!
📦 可用的预配置选项
检查 api-configs/ 存放完整、可直接投入生产的配置文件的文件夹:
- “Canton Network (NodeFortress)”可以翻译为“广州网络(节点堡垒)”。不过,这里的“Canton”通常指的是中国广东省的广州市,但在某些语境下也可能指代更广泛的地区或历史上的广州地区。而“NodeFortress”则可能是一个特定项目、组织或技术的名称,具体含义需根据上下文来确定。如果“NodeFortress”是某个特定项目或组织的名称,且没有官方中文译名,那么可以保留原英文名称或根据其功能、特性进行意译。但在此处,为了简洁明了,直接采用了音译加意译的方式,将其翻译为“广州网络(节点堡垒)” 区块链浏览器API(
api-configs/nodefortress_canton.md) - Bitwave地址服务 - 加密货币地址验证(
api-configs/bitwave.md) - 更多内容即将呈现!
🚀 快速集成
每个预构建的配置包括:
- ✅ 完整的JSON配置
- 完整的API文档
- ✅ 集成指南
- ✅ 使用示例
- ✅ 测试用例
对于平台团队:
- 打开
.md文件存入api-configs/ - 复制JSON配置部分
- 添加到您的平台API注册表
- 完成!无需更改代码
对于MCP服务器用户:
- 从(某处)复制JSON
api-configs/.md - 添加到
config/apis.json - 重启服务器(无需重建!)
见 api-configs/README.md 以获取完整详情。
______________________________________________________________________
添加新API
选项1:使用JSON配置(推荐)
只需编辑 config/apis.json 并添加您的API。 无需重建!
见 HOW_TO_ADD_NEW_APIS.md 以获取完整指南。
选项2:使用TypeScript配置(旧版)
通过TypeScript添加新的API - 只需添加配置到 src/apis/definitions.ts:
export const YOUR_API: APIDefinition = {
id: 'your-api',
name: 'Your API Name',
description: 'What this API does',
baseUrl: 'https://api.example.com/v1',
requiresAuth: true,
authType: 'bearer', // or 'apikey', 'basic', 'custom'
rateLimit: {
requestsPerMinute: 60,
requestsPerDay: 1000
},
endpoints: [
{
name: 'endpoint_name',
path: '/endpoint/{id}',
method: 'GET',
description: 'What this endpoint does',
parameters: [
{ name: 'id', type: 'string', required: true, description: 'Resource ID' }
],
queryParams: [
{ name: 'limit', type: 'number', required: false, description: 'Results limit' }
]
}
]
};
// Add to CORE_APIS array
export const CORE_APIS: APIDefinition[] = [
// ... existing APIs
YOUR_API
];就这样! 无需更改代码。服务器会自动:
- 注册API
- 验证请求
- 处理身份验证
- 构建带有路径/查询参数的URL
- 返回标准化的响应
______________________________________________________________________
测试
运行所有测试
npm test使用API密钥运行
export OPENWEATHER_API_KEY="your_key"
export NEWSAPI_KEY="your_key"
export GITHUB_TOKEN="your_token"
npm test测试覆盖率
- ✅ 测试了所有3种工具
- ✅ 所有6个API均通过真实调用进行了测试
- ✅ 错误场景已验证
- ✅ 参数验证已测试
- ✅ 认证测试通过
- ✅ 100%成功率
测试结果
✅ PASSED: 6/6 tests
❌ FAILED: 0/6 tests
📈 SUCCESS RATE: 100.0%
⚡ AVERAGE RESPONSE TIME: 95ms______________________________________________________________________
平台集成
对于AgenticLedger平台
这个MCP服务器遵循 AgenticLedger平台MCP服务器构建模式v1.0.0。
认证模式: 模式3(API密钥)
令牌映射:
{
token1: "api_key" // Direct API key for authenticated APIs
}平台处理程序/平台控制:
- 用户凭证收集
- 令牌存储与安全
- API密钥配置的用户界面
- AI代理编排
MCP 服务器处理程序:
- 工具定义
- API调用执行
- 响应格式化
- 错误处理
集成报告
看 PLATFORM_INTEGRATION_REPORT.md 用于全面测试的文档,包括:
- 真实API测试结果
- 性能指标
- 错误处理验证
- 平台合规检查清单
______________________________________________________________________
项目结构
AnyAPICall/
├── src/
│ ├── index.ts # Main MCP server
│ ├── types.ts # TypeScript type definitions
│ ├── schemas.ts # Zod validation schemas
│ ├── apis/
│ │ ├── registry.ts # API registry manager
│ │ └── definitions.ts # API configurations (fallback)
│ └── utils/
│ └── apiClient.ts # HTTP client wrapper
├── config/
│ └── apis.json # JSON API configurations ⭐ NEW
├── api-configs/ # Pre-built API configs ⭐ NEW
│ ├── README.md # Integration guide
│ ├── nodefortress_canton.md # Canton Network API
│ └── bitwave.md # Bitwave Address Service
├── tests/
│ └── integration-test.js # Integration tests
├── dist/ # Compiled JavaScript
├── package.json
├── tsconfig.json
├── README.md # This file
├── HOW_TO_ADD_NEW_APIS.md # Complete API addition guide
└── PLATFORM_INTEGRATION_REPORT.md # Platform integration docs______________________________________________________________________
演出
平均响应时间(真实API):
- CoinGecko:241毫秒
- GitHub:116毫秒
- REST 国家/地区:119毫秒
- JSONPlaceholder: 91毫秒
工具执行:
- 列出可用API:1毫秒
- 获取API文档:1毫秒
成功率: 100%
______________________________________________________________________
做出贡献
贡献一个新的API:
- 请将API定义添加到
src/apis/definitions.ts - 添加到
CORE_APIS数组 - 运行测试:
npm test - 提交包含测试结果的拉取请求(Pull Request)
无需对新API进行代码更改!
______________________________________________________________________
许可证
麻省理工学院(MIT)
______________________________________________________________________
链接
- GitHub 仓库: https://github.com/oregpt/Agenticledger_MCP_AnyApIService 的中文翻译可以是:“https://github.com/oregpt/Agenticledger_MCP_任意API服务(或:任意应用程序接口服务)”。不过,为了更流畅地表达,我们通常会说“GitHub上的oregpt项目Agenticledger_MCP_任意API服务”或者根据具体语境稍作调整。在这里,“AnyApIService”被翻译为“任意API服务”,以保持原意,同时“Agenticledger_MCP”可能是一个特定项目或模块的名称,根据上下文可能需要具体解释或保持原样
- AgenticLedger平台: https://agenticledger.com(可翻译为:“https://agenticledger.com(网站地址)”或保持原样,因为网址通常不翻译)
- MCP服务器构建模式: 参见仓库文档
______________________________________________________________________
支持
问题: https://github.com/oregpt/Agenticledger_MCP_AnyApIService/issues 的中文翻译为:“GitHub 上 oregpt 用户的 Agenticledger_MCP_AnyApIService 项目的问题页面”
______________________________________________________________________
用心打造,献给AgenticLedger AI Agent平台
*AI代理的通用API访问* 🚀 表情符号“🚀”在中文中通常被翻译为“火箭”或直接用该表情符号表示,因为它形象地代表了火箭发射或快速前进的概念。在没有具体上下文的情况下,可以简单地将其描述为“火箭”表情。
